解码RTSP流或者MP4 - housekeeper-software/tech GitHub Wiki
注意事项
解码 mp4文件可能需要解封装,
std::string bsf_name;
if (stream->codecpar->codec_id == AV_CODEC_ID_H264) {
bsf_name = "h264_mp4toannexb";
} else if (stream->codecpar->codec_id == AV_CODEC_ID_HEVC) {
bsf_name = "hevc_mp4toannexb";
}
但是注意,如果我们使用 ffmpeg解码,则不需要解封装,否则解码器报错。其实是内部已经做了,重复做一次就错了。
如果我们使用外部解码器,则一般需要做上述的步骤。
RTSP流,一般不需要
其他
如果是 mp4封装 h264,使用h264_mp4toannexb之后,ffmpeg也能正确解码,但hevc调用hevc_mp4toannexb则解码失败
结论是,如果是ffmpeg软解,则都不要调用。均可正常解码