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)
}

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

ffmpeg是处理视频的吧,怎么可能让聊天记录上滚啊

不是自带了滚动特效吗

【以下回答由 GPT 生成】

我可以为你提供一个使用ffmpeg和golang的解决方案来实现聊天记录向上滚动的效果。

首先,你需要安装并配置好ffmpeg和golang的环境。

接下来,你可以使用golang的exec包来执行ffmpeg命令。下面是一个使用ffmpeg的示例代码:

package main

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

func main() {
    text := `
        1. 你在干嘛?我在吃饭。你吃饭了没?你在干嘛?我在吃饭。你吃了没?我没干嘛,我在吃饭,你在干嘛?我在吃饭,你吃了没。
    `

    cmd := exec.Command("ffmpeg",
        "-f", "lavfi",
        "-i", "color=c=black:s=640x480:r=25",
        "-vf", "drawtext=fontsize=24:fontfile=/path/to/font.ttf:textfile=/path/to/text.txt:y=h-line_h-10*mod(t\\,180)/180",
        "-t", "5",
        "output.mp4")

    // 将聊天记录文本保存到文件
    file, err := os.Create("/path/to/text.txt")
    if err != nil {
        fmt.Println("Failed to create text file:", err)
        return
    }
    defer file.Close()

    file.WriteString(text)

    // 执行ffmpeg命令
    err = cmd.Run()
    if err != nil {
        fmt.Println("Failed to run ffmpeg:", err)
    }
}

在上面的代码中,我们使用了ffmpeg的drawtext滤镜来实现文字的向上滚动效果。具体来说,我们使用了drawtext=fontsize=24:fontfile=/path/to/font.ttf:textfile=/path/to/text.txt:y=h-line_h-10*mod(t\,180)/180"来设置滚动效果。其中,fontsize表示字体大小,fontfile表示字体文件路径,textfile表示聊天记录文本文件的路径,y表示文字的纵坐标位置,通过调整y的表达式可以实现滚动效果。在上面的代码中,我们将聊天记录文本保存到了/path/to/text.txt文件中,你需要将其替换成你自己的路径。

最后,执行上面的代码即可生成一个向上滚动的视频文件output.mp4

请注意,这只是一个简单的示例,你可以根据自己的需求调整ffmpeg的参数和golang代码来适应你的实际情况。如果你需要更多的功能,可以参考ffmpeg的官方文档来获取更多的滤镜和参数的使用方法。

希望这个解决方案可以帮助到你!如果你有其他问题,请随时提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

原题,连你拿的截图都一样,里面的原理以及步骤很详细,按照做就行,文章如下:


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢