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是新创建的流,需要把编码格式告诉他,然后才行

 

posted on 2025-05-29 17:54  飘杨......  阅读(129)  评论(0)    收藏  举报