FFMPEG 解码流程 硬解码

关键流程概述

  1. 初始化阶段‌
    • av_register_all():注册所有编解码器 新版本可以不调用了
    • avformat_network_init(): 网络初始化
    • avformat_alloc_context():创建封装格式上下文
    • avformat_open_input():打开媒体文件
  1. 流信息解析‌
    • avformat_find_stream_info():获取流信息
    • av_find_best_stream():查找视频和音频流索引
  1. 解码器创建‌

软解方案

    • avcodec_find_decoder():查找解码器
    • avcodec_alloc_context3():创建解码器上下文
    • avcodec_parameters_to_context()
    • avcodec_open2():打开解码器

硬解方案

    • avcodec_find_decoder_by_name 查找对应的硬解码器
    • .....
    • avcodec_open2():打开解码器
  1. 解码循环‌
    • av_read_frame():读取压缩数据包 Avpacket -> queue
    • avcodec_send_packet():发送到解码器
    • avcodec_receive_frame():接收解码帧 AvFrame yuv / pcm
  1. 视频渲染以及音频播放
    1. YUV sws_scale():统一像素格式转换(YUV420)
    2. PCM 播放  

有想学习音视频的兄弟 更多详情可以查看视频  哔哩哔哩_bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值