无法使用png和mp3音频生成mp4

时间:2015-10-24 19:23:54

标签: audio video ffmpeg mp4

我对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?

2 个答案:

答案 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