ffmpeg:仅需 1 秒即可从图像创建视频

ffmpeg:仅需 1 秒即可从图像创建视频

我正在尝试使用 ffmpeg 在 Windows 机器上用单幅图像创建一个 5 秒的短视频文件。该视频文件将用于连接用 1920x1080 60fps 相机拍摄的视频文件。以下创建 1 秒流而不是 5 秒流。有什么想法吗?提前感谢。

"c:\program files\ffmpeg\ffmpeg32" -f image2 -i "c:\program files\ffmpeg\imput1.jpg" -loop 1 -vcodec mpeg1video -b:v 104857200 -r 59.94 -s 1920x1080 -aspect 16:9 -t 5 "c:\program files\ffmpeg\banner.MPG"

以下是我的输出结果:

<pre>c:\Program Files\ffmpeg>"c:\program files\ffmpeg\ffmpeg32" -f
image2 -i "input1.jpg" -loop 1 -vcodec mpeg1video -b:v 10 4857200 -r
59.94 -s 1920x1080 -aspect 16:9 -t 5 "c:\program files\ffmpeg\banner. MPG" ffmpeg version N-52045-g694fa00 Copyright (c) 2000-2013 the
FFmpeg developers built on Apr 12 2013 16:54:51 with gcc 4.8.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads
--enable-av isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp e --enable-libgsm --enable-libilbc --enable-libmp3lame --enable-libopencore-amrn b --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libr tmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheo ra --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-li bvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --ena ble-zlib 
55. 0.100 libavfilter 3. 53.101 / 3. 53.101 libswscale 2. 2.100 / 2. 2.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 3.100 / 52. 3.100 Input #0, image2, from 'c:\program files\ffmpeg\input1.jpg': Duration: 00:00:00.04, start: 0.000000, bitrate: N/A Stream #0:0:
Video: mjpeg, yuvj420p, 722x267 [SAR 1:1 DAR 722:267], 25 tbr, 25 tbn,
25 tbc File 'c:\program files\ffmpeg\banner.MPG' already exists.
Overwrite ? [y/N] y VBV buffer size not set, muxing may fail Output
#0, mpeg, to 'c:\program files\ffmpeg\banner.MPG': Metadata: encoder : Lavf55.2.100 Stream #0:0: Video: mpeg1video, yuv420p, 1920x1080 [SAR
1:1 DAR 16:9], q=2-3 1, 104857 kb/s, 90k tbn, 59.94 tbc Stream
mapping: Stream #0:0 -> #0:0 (mjpeg -> mpeg1video) Press [q] to stop,
[?] for help frame= 1 fps=0.0 q=9.8 Lsize= 130kB time=00:00:00.01
bitrate=63812.1kbits /s video:130kB audio:0kB subtitle:0 global
headers:0kB muxing overhead 0.373990%

c:\Program Files\ffmpeg>> libavutil 52. 26.100 / 52. 26.100 libavcodec 55. 2.100 / 55. 2.100
libavformat 55. 2.100 / 55. 2.100 libavdevice 55. 0.100 /
</pre>

更新:我让 5 秒的视频与以下视频配合使用,但这些视频无法与新制作的视频连接。我想这可能需要提出一个新问题。

"c:\program files\ffmpeg\ffmpeg32" -loop 1 -i graphic.jpg -s 1920x1080 -aspect 16:9 -t 5 -c:v libx264 banner.mp4 

答案1

-loop选项适用于下一个输入文件,因此在您的情况下可能未解析该文件。试试这个——为了简洁起见,我省略了其他选项:

ffmpeg -loop 1 -i input.jpg -t 5 output.mp4

一些提示:

  • 你的 ffmpeg 版本已经有点过时了。请尽量使用最近构建如果发生故障。

  • -f image2是多余的,因为 JPG 图像会image2自动由解复用器进行解析。

  • 为了实现真正的恒定比特率,我相信您需要将-b:v-minrate和三个都设置-maxrate为相同的值。

  • 如今,您通常不想使用 MPEG-1 视频(mpeg1videoffmpeg 中的编码器),尤其是对于高清内容。您最终会得到巨大的文件,或者在受限的比特率下质量非常差。尽管您指定了一个非常大的比特率(这真的是您想要的吗?),但您至少最好使用 MPEG-2 视频,甚至 MPEG-4 Part 12(AVC,H.264)。请参阅x264 编码指南一些选项。

相关内容