我对FFMPEG非常满意。 我试图通过合并mp3和png图像来生成mp4视频文件。
当我尝试将png图像转换为mp4时,它可以正常工作
ffmpeg -r 1/5.544000 -i 1.png -qscale 2 1.mp4
但是当我添加mp3音频文件时它就失败了
ffmpeg -r 1/5.544000 -i 1.png -i 1.mp3 -qscale 2 1.mp4
以下是我得到的错误:
No pixel format specified, yuv444p for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.
[libx264 @ 0x1475be0] using SAR=1/1
[libx264 @ 0x1475be0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
`[libx264 @ 0x1475be0] profile High 4:4:4 Predictive, level 3.1, 4:4:4 8-`bit
[libx264 @ 0x1475be0] 264 - core 142 r2431 a5831aa - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=4 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
[aac @ 0x1476660] The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it.
我尝试使用-strict -2
,但仍然失败。
命令有什么问题?如何使用mp3和png创建mp4?
答案 0 :(得分:2)
您有两个主要选项来处理音频:流复制或重新编码。
你可以stream copy(重新复用)音频:
ffmpeg -loop 1 -i image.png -i audio.mp3 -c:a copy -pix_fmt yuv420p \
-movflags +faststart -shortest output.mp4
这不会重新编码,因此质量会得到保留。
有些玩家可能不喜欢MP4容器中的MP3音频。如果我没记错的话,WMP会遇到某些音频问题。
您没有从命令提供完整的控制台输出,因此无法确定可用的AAC编码器。您可以使用本机FFmpeg AAC编码器;它被认为是实验性的(目前),但是有足够的比特也不错。
ffmpeg -loop 1 -i image.png -i audio.mp3 -c:a aac -strict experimental \
-b:a 192k -pix_fmt yuv420p -movflags +faststart -shortest output.mp4
使用image file demuxer时,请使用-framerate
代替-r
。
在控制台输出建议时添加-pix_fmt yuv420p
;否则,基于非FFmpeg的播放器将解决输出问题。
libx264
忽略-qscale
,以便忽略该选项。请改用-crf
。有关详细信息,请参阅FFwiki: H.264 Video Encoding。
如果您的视频将通过渐进式下载进行查看,请添加-movflags +faststart
。它允许在文件完全下载之前开始播放。
有些玩家可能不喜欢1帧的视频,因此添加-loop 1
输入选项和-shortest
输出选项会使视频和音频的持续时间相同。
答案 1 :(得分:0)
默认情况下,FFmpeg会将您的音频重新编码为acc。但如上所述,这是实验性的,可能会或可能不会奏效。强制ffmpeg将mp3用于 -c:副本
ffmpeg -r 1/5.544000 -i 1.png -i 1.mp3 -qscale 2 -c:a copy 1.mp4