一、简述转码
- 转码的作用:封装格式的实现。(h264—>mov、mp4、flv、avi(封装格式)等)
- 之前博客中提到如何把像素数据编码得到 H264 的压缩码流数据,但是一般的播放工具是没法直接操作h264文件,需要把这样的视频文件封装成带有封装格式的,所以就需要用到转码。
- 转码就是把解码和编码的某些操作进行整合,需要注意的就是转换规则(时间基的设置等)。
二、流程图
三、实现效果
四、代码
transH264::transH264()
{
//1、注册
av_register_all();
in_formatContext = avformat_alloc_context();
out_formatContext = avformat_alloc_context();
videoType = -1;//是否为视频流
pkt=(AVPacket *)malloc(sizeof(AVPacket));
}
void transH264::openH264(QString fileName)
{
//2、打开视频文件
int res=avformat_open_input(&in_formatContext,fileName.toStdString().c_str(),nullptr,nullptr);
if(res<0)
{
qDebug()<<"打开视频失败";