LinkLib例子之十七:FileTranscode 对文件进行H265转码再封装成MP4文件

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_45326556/article/details/100112184

对文件进行转码并另存成文件

背景

    通常我们见到的转码主要是视频转码(Video Transcoding)和音频转码(Audio Transcoding),尤其视频转码是最重要的。视频转码是指将已经压缩编码的视频码流转换成另一个视频码流,以适应不同的网络带宽、不同的终端处理能力和不同的用户需求。转码本质上是一个先解码,再编码的过程,因此转换前后的码流可能遵循相同的视频编码标准,也可能不遵循相同的视频编码标准。海思3531D,3559A都是同编同解能力的芯片,即Hi3531D具有12路同时编码和同时解码的能力,Hi3559A具有16路同时编码和同时解码能力,所以做转码应用最适合不过了。
    不同的时代有不同的转码需求,当前最流行的是H264转成H265,这是因为同等编码质量条件下,H265编码所占的带宽可以节省25%,这对于带宽昂贵的兔子国来说尤为重要。

简介

该示例程序演示了如何将一个文件进行转码并重新封装的过程

建议先运行Record程序录制一段视频,确保生成test.mp4文件可用

准备工作


  • 参照用户手册搭建开发环境、编译3531D工程、配置网络启动参数。
  • 准备一个可播放的文件命名为test.mp4
  • 上电,进入/root/demo目录
  • 运行FileTranscode程序
  • 等待程序自动退出
  • 将test2.mp4拷贝到主机中进行播放,确认转码有效

运行结果


在这里插入图片描述

源代码

完整的工程参见:https://gitee.com/LinkPi/3531D/tree/master/FileTranscode

//main.cpp
#include <QCoreApplication>
#include "Link.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    Link::init();

    LinkObject *file=Link::create("InputFile");
    LinkObject *dec=Link::create("DecodeV");
    QVariantMap dataDec;
    dataDec["block"]=true;
    dec->start(dataDec);

    LinkObject *encV=Link::create("EncodeV");
    QVariantMap dataEncV;
    dataEncV["codec"]="h265";
    dataEncV["width"]=-1;
    dataEncV["height"]=-1;
    dataEncV["rcmode"]="vbr";
    dataEncV["bitrate"]=1000;
    encV->start(dataEncV);

    LinkObject *mp4=Link::create("Mux");
    QVariantMap dataMP4;
    dataMP4["path"]="test2.mp4";
    mp4->start(dataMP4);
    file->linkV(dec)->linkV(encV)->linkV(mp4);
    file->linkA(mp4);

    QObject::connect(file,&LinkObject::newEvent,[=](QString type,QVariant){
        if(type=="EOF")
        {
            mp4->stop(true);
            exit(0);
        }
    });

    QVariantMap dataFile;
    dataFile["path"]="test.mp4";
    dataFile["sync"]=false;
    file->start(dataFile);

    return a.exec();
}

参考模块


InputFile
DecodeV
EncodeV
Mux

猜你喜欢

转载自blog.csdn.net/weixin_45326556/article/details/100112184