【问题标题】:How to choose between openH264 and x264 decoder如何在 openH264 和 x264 解码器之间进行选择
【发布时间】:2017-07-02 09:13:41
【问题描述】:

我正在使用来自 zeranoe.com 的开发版本,其中包含 OpenH264 和 libx264。 如何在这两个解码器之间进行选择以比较解码速度?

avcodec_find_decoder(AVCodecID.AV_CODEC_ID_H264); 

只给了我“h264”这个名字 但它是哪个解码器?

并尝试强制特定解码器失败,例如:

codec = avcodec_find_decoder _by_name("x264");
codec = avcodec_find_decoder _by_name("libx264");

对于高分辨率(4k 及更高)RTSP 视频流,我还需要哪些其他选项来提高 avcodec_decode_video2 的解码速度?

【问题讨论】:

  • x264 和 openH264 是编码器。 AFAIK,ffmpeg 仅使用其原生的h264 解码器进行解码。

标签: ffmpeg libavcodec


【解决方案1】:

除了原生 FFmpeg H.264 解码器(命名为 h264)之外,FFmpeg 还可以使用 OpenH264(在 FFmpeg 中命名为 libopenh264)进行解码。还有几个受支持的hardware assisted H.264 decoders,但我不打算详细介绍这些。

OpenH264 与 FFmpeg H.264 解码器

  • 文档指出OpenH264 supports decoding of Constrained Baseline profile,因此它的用处可能会受到限制。然而,它能够解码我测试的主要视频和高配置视频。实际功能似乎没有记录,因此不清楚它是否部分或完全支持 Main 和 High Profile。

  • 本机 FFmpeg H.264 解码器具有线程功能(帧和切片),但 OpenH264 没有。所以FFmpeg H.264解码器比OpenH264快很多。

  • OpenH264 已获得 BSD 2-Clause “Simplified”许可证。 FFmpeg H.264 解码器是 LGPL 2.1 或更高版本。

ffmpegCLI工具示例

您似乎正在使用 FFmpeg 库,但这里有一些使用 ffmpeg 的示例。

要选择您想要的解码器,请使用-c:v 输入选项。下面是使用null muxer 的两个解码基准示例。还使用了-map 选项,因此只有(第一个)视频流被解码,而忽略其他非视频流,例如音频。

原生 FFmpeg H.264 解码器

$ ffmpeg -benchmark -i input.mp4 -map 0:v:0 -f null -
bench: utime=23.557s
bench: maxrss=57752kB
real    0m3.834s
user    0m23.573s
sys     0m0.213s

libopenh264

$ ffmpeg -benchmark -c:v libopenh264 -i input.mp4 -map 0:v:0 -f null -
bench: utime=20.927s
bench: maxrss=37404kB
real    0m21.002s
user    0m20.940s
sys     0m0.060s

基准时间

请注意,基准选项输出的是用户 CPU 时间,而不是经过的实时时间。如果您还想要实时,请在ffmpeg 命令之前添加time 命令(如果您在Linux 上)。我在示例(最后三行)中添加了来自 time 的输出以进行比较。

验证所需的解码器是否正在使用

查看控制台输出。例如使用原生 H.264 解码器:

Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> wrapped_avframe (native))

使用 libopenh264:

Stream mapping:
  Stream #0:0 -> #0:0 (h264 (libopenh264) -> wrapped_avframe (native))

【讨论】:

  • 很奇怪。 ffmpeg -h decoder=h264 不显示 openh264 作为解码器。
猜你喜欢
  • 2017-01-11
  • 2023-03-25
  • 2012-11-27
  • 2011-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多