美文网首页
FFmpeg4-视频编码

FFmpeg4-视频编码

作者: AlanGe | 来源:发表于2020-07-02 17:27 被阅读0次

    一、视频编码?->YUV编码为H.264

    分析视频编码原理->流程


    • 第一步:注册组件->编码器、解码器等等…
      av_register_all()
    • 第二步:初始化封装格式上下文
      avformat_alloc_context()
    • 第三步:打开输入文件
      avio_open()
    • 第四步:创建输出码流->视频流->今后设置->设置为视频流
      avformat_new_stream()
    • 第五步:查找视频编码器
      avcodec_find_encoder()
    • 第六步:打开视频编码器
      avcodec_open2
    • 第七步:写入文件头信息(有些文件头信息)->一般情况下都会有
      avformat_write_header()
    • 第八步:循环编码视频像素数据->视频压缩数据
      avcodec_receive_packet()
    • 第九步:将编码后的视频压缩数据写入文件中
      av_write_frame()
    • 第十步:输入像素数据读取完毕后回调函数
      作用:输出编码器中剩余AVPacket
      flush_encoder()
    • 第十一步:写入文件尾部信息
      av_write_trailer()
    • 第十二步:释放内存,关闭编码器等等…
      avcodec_close(avcodec_context);
      av_free(av_frame);
      av_free(out_buffer);
      av_packet_free(&av_packet);
      avio_close(avformat_context->pb);
      avformat_free_context(avformat_context);
      fclose(in_file);

    二、视频编码->实现功能->yuv编码为h264

    yuv:视频像素数据格式

    h264:视频压缩数据格式

    1、查找编码器?

    获取编码器名称

    找不到编码器->h264

    重要原因是因为:编译库没有依赖x264库(默认情况下)

    • 第一步:下载x264库
      通过git下载:git clone git://git.videolan.org/x264.git
    • 第二步:解压这个库
    • 第三步:编写脚本->编译x264的.a静态库
      指定编译平台类型:iOS平台、安卓平台、Mac平台、Windows平台等等…
      编写Android平台.a静态库->课前准备好了->研究一下
    • 第四步:编译Android动态库->编译FFmpeg>修改脚本文件?
    • 第五步:加入x264库,将其编译进去

    2、编码操作

    03-FFmpeg视频编码

    相关文章

      网友评论

          本文标题:FFmpeg4-视频编码

          本文链接:https://www.haomeiwen.com/subject/vqulqktx.html