托马斯的冰淇淋 2023-08-12 12:07 采纳率: 50%
浏览 86
已结题

ffmpeg实现长图向上滚动

怎么实现长图向上滚动,ffmpeg命令就可以,向上滚动的然后要贴两张小图在指定位置,这个图不会跟随滚动
下面是我的代码:输出报错视频不可播放

package main

import (
    "fmt"
    "os"
    "os/exec"
)

func main() {
    inputImage := "1.png"       // 输入的长图文件名
    outputVideo := "output.mp4" // 输出的视频文件名
    scrollSpeed := 50           // 滚动速度(像素/秒)
    pauseDuration := 2          // 停顿时长(秒)
    videoWidth := 1920          // 视频宽度
    videoHeight := 1080         // 视频高度
    frameRate := 30             // 帧率

    // 使用FFmpeg生成视频
    cmd := exec.Command("ffmpeg",
        "-loop", "1",
        "-i", inputImage,
        "-vf", fmt.Sprintf("crop=iw:ih-((t-%d)*%d):0:((t-%d)*%d),setpts=PTS+2/TB", pauseDuration, scrollSpeed, pauseDuration, scrollSpeed),
        "-t", fmt.Sprintf("%d", pauseDuration+int(videoHeight/scrollSpeed)),
        "-r", fmt.Sprintf("%d", frameRate),
        "-s", fmt.Sprintf("%dx%d", videoWidth, videoHeight),
        "-c:v", "libx264",
        "-preset", "medium",
        "-crf", "23",
        outputVideo,
    )

    // 执行FFmpeg命令
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr
    if err := cmd.Run(); err != nil {
        fmt.Println("Error:", err)
        return
    }

    fmt.Println("Video generated successfully:", outputVideo)
}
  • 写回答

5条回答 默认 最新

  • threenewbee 2023-08-12 12:12
    关注

    你可以不断滚动+截图,得到一系列关键帧
    然后用ffmpeg连起来得到视频,或者是直接录屏

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月13日
  • 赞助了问题酬金15元 8月13日
  • 修改了问题 8月13日
  • 修改了问题 8月13日
  • 展开全部