关于ffmpeg硬解码

文章目录

  • 要点
    • 1.查看视频流信息
    • 2.查看ffmpeg当前版本支持的所有解码器
    • 3.查询编译好的ffmpeg版本有哪些大概支持
    • 4.查询编译好的ffmpeg更细致的支持

要点

1.查看视频流信息

ps:这点挺关键。最近在做一个rtsp流的解码时,发现以前的解码程序不能用了,最后发现流是hevc的,不是h264,那么h264相关的软解码和硬解码器肯定都是无效的。另外,推流格式flv仅支持到h264,所以hevc的视频流需要转码为h264才能使用ffmpeg推流出去。

查看流信息的最佳方式,当然是直接使用编译好的工具ffprobe

./ffprobe -show_streams xxxx

2.查看ffmpeg当前版本支持的所有解码器

比如拿到了hevc, 这时候我想知道相关的解码器有哪些,我的硬件哪些又能支持硬解码和硬编码呢?

进入ffmpeg源码根目录,运行

./configure --list-decoders

发现我用的ffmpeg4.1.0. 支持的hevc的解码器有:
hevc :这个是cpu软解无疑了
hevc_cuvid:这个明显是nvidia GPU硬解支持
hevc_mediacodec:这个应该是安卓平台的硬解支持
hevc_qsv: qsv好像是种像素格式,对qsv格式的硬解支持
hevc_rkmpp:这个好像是瑞芯微的rk系列mpp硬解支持
hevc_v4l2m2m:针对v4l2设备的

貌似树莓派上只有hevc能用啊,尴尬,不能硬解吗?又知道的告诉我下啊

3.查询编译好的ffmpeg版本有哪些大概支持

#查询支持的视频文件格式(封装器及解封装器)
./ffmpeg -formats

#查询支持的编码器
./ffmpeg -encoders

#查询支持的解码器
./ffmpeg -decoders

#查询支持的滤镜
./ffmpeg -filters

./ffmpeg -codecs
ps:这条查询很神奇,好像能查出我的平台支持的所有编码器,比如我还没编译hevc进来时,它这里显示,decoders: hevc hevc_v4l2m2m.

4.查询编译好的ffmpeg更细致的支持

#查询FLV封装器的支持
./ffmpeg -h muxer=flv

#查询H.264编码器的支持
./ffmpeg -h encoder=h264
ps:这里可以看到其支持哪些像素格式等重要信息,诸如yuv420p,nv12,nv21等

你可能感兴趣的:(ffmpeg)