【问题标题】:Python: Rare problem generating .gif with ffmpegPython:使用 ffmpeg 生成 .gif 的罕见问题
【发布时间】:2011-04-20 14:23:54
【问题描述】:

当我在 Win7 中使用来自 python 的 ffmpeg 从 movie.avi 生成动画 gif 时遇到问题。 如果我打开一个 cmd 窗口并执行这一行:

"C:\ffmpeg\ffmpeg.exe" -i "C:\ffmpeg\video.avi" -pix_fmt rgb24 -r 10.0 -loop_output 0 -ss 5 -t 10 -s 352x288 -f gif "C:\ffmpeg\video.gif"

ffmpeg.exe 完美地从视频中生成 gif。我想在 python 中使用我的代码中的 ffmpeg.exe 来做同样的事情,但是,当我从我的 python 程序中执行这段代码时:

argList = ["-i", "C:\\ffmpeg\\video.avi", "-pix_fmt", "rgb24", "-r", "10.0", "-loop_output", "0", "-ss", "5", "-t", "10", "-s", "352x288", "-f", "gif", "C:\\ffmpeg\\video.gif"]  
os.spawnv(os.P_DETACH, "C:\\ffmpeg\\ffmpeg.exe", argList)

发生了一些非常罕见的事情:我的 video.avi 丢失了所有大小,现在是一个 0 字节的空白文件,而 movie.gif 也是一个 0 字节的空白文件,因此,cmd windows 中的相同代码可以正常工作并进入我的python程序修改了我的movie.avi文件并删除了它的所有内容(但文件movie.avi没有dessapear,该文件仍然存在但现在是一个空白文件)并生成一个空白movie.gif文件。有人知道为什么会这样吗?提前致谢。

【问题讨论】:

    标签: python cmd thumbnails gif


    【解决方案1】:

    您的 spawnv 参数列表需要以 "C:\\ffmpeg\\ffmpeg.exe" 开头。试试看,看看效果如何。

    argList = ["C:\\ffmpeg\\ffmpeg.exe", "-i", "C:\\ffmpeg\\video.avi", "-pix_fmt", "rgb24", "-r", "10.0", "-loop_output", "0", "-ss", "5", "-t", "10", "-s", "352x288", "-f", "gif", "C:\\ffmpeg\\video.gif"]  
    os.spawnv(os.P_DETACH, "C:\\ffmpeg\\ffmpeg.exe", argList)
    

    【讨论】:

    • 非常感谢!问题在那里,现在工作正常。但我尝试了没有“C:\\ffmpeg\\ffmpeg.exe”的 argList,因为它可以很好地生成一个简单的缩略图。
    • +1。也可以考虑改用subprocess,这不需要这种重复。
    • 使用子进程的正确语法是什么?我尝试使用子进程,但对我来说这是不可能的!
    【解决方案2】:

    @JoshD

    argList = ["-y", "-ss", "750", "-i", "C:\\ffmpeg\\video.avi", "-f", "mjpeg", "-vframes", "1", "-s", "1280x720", "-an", "C:\\ffmpeg\\thumbnail.jpg"]
    os.spawnv(os.P_DETACH, "C:\\ffmpeg\\ffmpeg.exe", argList)
    

    在 spawnv 的开头没有"C:\\ffmpeg\\ffmpeg.exe",这工作正常,我的困惑来自于此。非常感谢。

    【讨论】:

    • 是的,有时它会起作用,但这比证明有效行为更幸运。 :)
    猜你喜欢
    • 2011-08-30
    • 2014-11-17
    • 2017-09-12
    • 2023-04-10
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    相关资源
    最近更新 更多