我使用的是来自zeranoe.com的dev构建,其中包含了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的解码速度?
发布于 2017-02-14 19:02:45
FFmpeg除了使用本机FFmpeg H.264解码器(名为h264)之外,还可以使用OpenH264 (在FFmpeg中命名为libopenh264 )进行解码。还有几个受支持的硬件辅助H.264解码器,但我不打算详细介绍这些。
OpenH264与FFmpeg H.264解码器
ffmpeg CLI工具示例
您似乎正在使用FFmpeg库,但是下面是一些使用ffmpeg的示例。
要选择您想要的解码器,请使用-c:v输入选项。下面是使用零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.213slibopenh264
$ 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基准时间
注意,benchmark选项输出用户CPU时间,而不是经过的实时时间。如果您也希望实时,那么在time命令之前添加ffmpeg命令(如果您在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))https://stackoverflow.com/questions/42220081
复制相似问题