【问题标题】:convert from jpg to mp4 by ffmpeg通过 ffmpeg 将 jpg 转换为 mp4
【发布时间】:2014-05-22 20:00:10
【问题描述】:

我有 320 张 jpg(320x574) 图像,我以 2004 fps 的速度记录了它们。我想为他们制作一个 .mp4 视频。我在cmd(win7)中运行了下面的代码,它只是制作了一个jpg编号320的视频,如果我选择这个('*.jpg')320它不起作用。非常感谢任何帮助。

ffmpeg -r 1/5 -i C:\data-Sam\320.jpg -c:v libx264 -r 30 -pix_fmt yuv420p C:\data-Sam\out.mp4

【问题讨论】:

  • 2004 fps 使您的视频长度为 80/501 秒(小于 0.2 秒)!

标签: ffmpeg jpeg mp4


【解决方案1】:

取决于你想要的文件名:

ffmpeg -f image2 -i /path/to/file/image%3d.jpg test.avi

image%3d 将用于名为:image000.jpgimage001.jpgimage002.jpg 等的文件。

如果您的文件名为image0.jpgimage1.jpgimage2.jpg 等,那么您将使用/path/to/file/image%d.jpg

FFmpeg image2 demuxer examples

【讨论】:

  • 我的文件名从 1.jpg 到 320.jpg 排序。我必须更改它们,否则我仍然可以按原样使用它们。
  • 当我运行你留下的代码时,在 cmd 中会弹出一条注意提示,即 Frame rate very high for a muxer not effective support it。
  • 当我运行你留下的代码时,这个注意提示会在 cmd 中弹出,即帧速率非常高,对于不能有效支持它的多路复用器。并要求我使用其他 muxer 或 -vsync 2。事实上,我已经录制了 320 jpg 和 2000 fps 的图像。我用这个代码:ffmpeg -f image2 -i Path/To/File/filename%d.jpg -r 2000 -pix_fmt yuv420p path\to\result\test.mp4 你怎么看?
  • 我在 Windows 上使用 ffmpeg 二进制文件,它不需要 %d 选项。
  • 尝试在 Windows 上执行此操作,据我所知,它不起作用。我只得到第一帧。
【解决方案2】:

其中的主文件夹是ffmpeg.exe、Your_files文件夹和Result文件夹。
在 Your_files 文件夹中,上传一系列图片。
Bat 文件将按名称按队列顺序对它们进行排序。
完成的视频将在 Result 文件夹中。

echo off
color a
set a="Your_files\*.jpg"
set b="Result\video.mp4"
set c=ffmpeg
set f=-c:v libx264 -pix_fmt yuv420p -r 30 -crf 20
set tmp="Result\list.tmp"
for %%f in (%a%) do (@echo file 'file:%cd%\%%f' >> %tmp%)
%c% -y -f concat -safe 0 -i %tmp% %f% %b%
cd /d Result
del /f /q list.tmp
exit

-c:v libx264 - 我们将使用 x264 编解码器以 MP4 格式进行编码。
-loglevel 16 - 显示所有错误,包括那些可以
-r 30 – FPS 帧速率。它在所有过滤后,但在编码视频流之前生效。
-crf 20 – 恒定速率因子 (CRF) 是一种质量设置(和速率控制)。值从 0 到 51,其中较低的值会以较高的文件大小为代价获得更好的质量。较高的值意味着更多的压缩,但在某些时候您会注意到质量下降。默认值为 23。

【讨论】:

  • 很好的答案和解释!
【解决方案3】:

我可以在这里给你举个例子,

ffmpeg -f image2 -r 60 -i path/filename%03d.jpg -vcodec libx264 -crf 18  -pix_fmt yuv420p test.mp4
  • f:强制格式
  • r:帧速率
  • i:假设您的文件是filename001.jpg, filename002.jpg, ...
  • vcodec:视频编解码器
  • crf:恒定速率因子(0-51)。 17-18(几乎)在视觉上是无损的。见Encode/H.264
  • pix_fmt:像素格式

【讨论】:

    【解决方案4】:

    您还有其他选择,例如:

    • 帧率 = 设置视频流的帧率。默认为 25
    • -r = 设置帧率

      ffmpeg -framerate 10 -i Path/To/File/filename%3d.jpg -r 5 -y Path/To/File/test.mp4
      

    【讨论】:

      【解决方案5】:

      我在 Windows 上使用 ffmpeg 二进制文件,它不需要 %d 选项。

      您使用的是cmd.exe,对吗?然后这样做:

      "file%d.jpg"
      

      cmd.exe 使用%PATH% 来模仿$PATH 在真实的shell 中使用,所以会与file%d.jpg 混淆。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多