ffmpeg视频转码遇到H264黑屏问题
一、概述
在基础音视频开发中视频的转码是一个常见的需求。以mp4文件举例:可能需要改变视频的宽高、码率、编码格式、像素格式等等中的一种和多种。那转码功能就派上用场了。
实现步骤:
1.创建解封装器,用于解封装mp4
2.创建一个封装器,用于重新封装转码后的mp4文件
3.创建一个解码器,用于解码mp4中的压缩数据
4.创建一个编码器,用于把解码后的AVFrame重新编码成AVPacket
5.复制编码器格式到封装器上下文
6.循环解封装、解码、再重新编码、写入封装器。
7.销毁此过程中生成的资源。
二、代码示例
在实际的测试中发现,H264转码H264视频能够正常播放。而H264转H265的时候发现数据都已经写进去了,但是使用VLC测试播放的时候视频是黑屏,只有声音。
最后单步调试发现:未将编码器格式复制到封装器上下文中导致的。
avcodec_parameters_from_context(o_vs->codecpar, enContext);//o_vs是新创建的流,需要把编码格式告诉他,然后才行
浙公网安备 33010602011771号