酷徒LOGO

使用ffmpeg时省略编解码器是安全的?


问题:

我今天注意到,我可以使用 ffmpeg 编码或者解码视频流,而不指定编码器。 这意味着:


ffmpeg"input.mp3" -c:a aac"output.m4a"



...可以替换为:


ffmpeg"input.mp3""output.m4a"



另外:


ffmpeg"input.dts" -c:a copy -ac 2"output.dts"



...可以替换为:


ffmpeg"input.dts" -ac 2"output.dts"



如果总是显式地包含编解码器是使用 ffmpeg 我看到的最流行的方式- - 我想知道是否有原因。

使用 ffmpeg 进行编码时,是否存在任何可能的陷阱? 有没有安全地假定它会导致显式地指定编解码器的相同转换。


回答 1:

最好是指定编码器
  • 一些默认的选择是传统的或者奇怪的。 例如:

    • 为FLV输出选择 flv1 。 大多数人期望 H.264 ( libx264 ) 。

    • flac 是为 ogg/oga输出选择的。 大多数人期望 Vorbis ( libvorbis ) 。

  • 作为输出格式默认的编码器可以依赖于用于编译 ffmpeg的配置选项。 所以如果你的ffmpeg 没有 --enable-libx264,那么对于 MP4,编码器mpeg4使用的是( h.264 视频) 。 大多数人使用 ffmpeg 构建支持包含最流行的库,但偶尔会发生这种情况。

  • 具体的工作并不多。

但有时你会懒惰

如果你知道要选择什么编码器,或者检查并验证,那么你可以在你想要的时候保存一些按键。 请参阅控制台输出中的流映射,以查看哪些编码器 ffmpeg 使用。 例如:


ffmpeg -i input.foo output.mp4


...


Stream mapping:


 Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))


 Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (native))



在这种情况下,它使用libx264为视频( -c:v libx264 ),和本地AAC编码器音频( -c:a aac ) 。

你可以查看特定muxer的详细信息,以查看默认情况下将使用哪些编解码器:


ffmpeg -h muxer=mp4


...


Muxer mp4 [MP4 (MPEG-4 Part 14)]:


 Default video codec: h264.


 Default audio codec: aac.




回答 2:

有没有安全地假定它会导致显式地指定编解码器的相同转换。

不一定是"安全"你会得到一个文件。 Ffmpeg将选择一个与该容器一起工作的首选编解码器。 但是,使用不同的文件扩展名可能会选择不同的编解码器。 另外,首选编解码器可以能会在未来发生改变,或者基于rtc的编译方式。






Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备17041772号-2  |  如果智培  |  酷兔英语  |  帮酷