一.流程

音频解码的流程和视频解码几乎一样,最大的区别是解码后需要进行重采样。因为解码出的AVSampleFormat格式是AV_SAMPLE_FMT_FLTP(float, planar),该格式无法直接使用SDL进行播放,需要转换成SDL支持的AV_SAMPLE_FMT_S16(signed 16 bits)格式。关于重采样,详见下篇博客。

1.avcodec_find_decoder

提供两种方式查找解码器,通过codecId查找avcodec_find_decoder与通过名字查找avcodec_find_decoder_by_name,这里使用的是AVCodec *avcodec_find_decoder(enum AVCodecID id)
这个ID号从哪里获取呢?就像之前我们解封装之后,可以发现我们的AVStream里面其实是有一个codecID, 那个ID号就是我们要用到的解码器的ID号。当然如果本身知道格式的ID号,也可以直接传进去(一般我们用h264,那这个codecID就是27)。如果找到解码器,然后返回该解码器AVCodec,如果没找到则返回nullptr

2.avcodec_open2

int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options);
该函数用于初始化 一个音视频编解码器的AVCodecContext,所做的工作如下所示:
(1)为各种结构体分配内存(通过各种av_mal

基于FFmpeg的视频播放器之七:音频解码相关推荐

  1. QT软件开发-基于FFMPEG设计视频播放器-解码音频(三)

    QT软件开发-基于FFMPEG设计视频播放器-CPU软解视频(一) https://xiaolong.blog.csdn.net/article/details/126832537 QT软件开发-基于 ...

  2. QT软件开发-基于FFMPEG设计视频播放器-GPU硬解、OpenGL渲染、解码音频完整例子(六)

    QT软件开发-基于FFMPEG设计视频播放器-CPU软解视频(一) https://xiaolong.blog.csdn.net/article/details/126832537 QT软件开发-基于 ...

  3. QT软件开发-基于FFMPEG设计视频播放器-软解图像(一)

    QT软件开发-基于FFMPEG设计视频播放器-CPU软解视频(一) https://xiaolong.blog.csdn.net/article/details/126832537 QT软件开发-基于 ...

  4. QT软件开发-基于FFMPEG设计视频播放器-GPU硬解、OpenGL渲染(四)

    QT软件开发-基于FFMPEG设计视频播放器-CPU软解视频(一) https://xiaolong.blog.csdn.net/article/details/126832537 QT软件开发-基于 ...

  5. 基于FFmpeg开发视频播放器, 基本流程(一)

    刚开始学习FFmpeg,用几篇文章记录下,使用ffmpeg开发一个简单的视频播放器,大概的过程.这里只讨论核心代码,如解封装,音频的解码播放,视频的解码播放,音视频同步,不涉及UI布局. 基于FFmp ...

  6. 基于FFmpeg的视频播放器之一:开篇

    FFmpeg的研究几乎都是从ffplay开始的,ffplay是FFmpeg自带播放器,它的源码虽然只有一个文件,但是麻雀虽小五脏俱全,播放器的基本功能都有了.初看ffplay的源码,会感觉特别绕,跳转 ...

  7. C++---基于ffmpeg实现视频播放器(一)

    ffmpeg.exe 功能: ffmpeg.exe实现视频的转码. 命令格式 ffmpeg -i [输入文件的路径] -b:v [输出文件的码率] [输入文件的路径] 简单命令 ffmpeg -i i ...

  8. 基于FFmpeg的视频播放器之四:视频解码

    一.流程 1.avcodec_find_decoder 提供两种方式查找解码器,通过codecId查找avcodec_find_decoder与通过名字查找avcodec_find_decoder_b ...

  9. 基于FFmpeg的视频播放器之十一:倍速播放

    倍速播放通常有两种方式:一种是变速变调,另一种是变速不变调 一.变速变调 这种方法的原理就是音频重采样.比如说44100Hz采样率的音频,每秒钟有44100个采样点,如果我们要加速为200%播放,最简 ...

最新文章

  1. 两家外企的长三角仓库,活儿竟全被中国机器人承包了
  2. Win8Beta即将发布,业内普遍看好微软Windows 8
  3. 开发日记-20190905 关键词 Linux (Ubuntu) 下的Android模拟器:Genymotion
  4. 美团高德并不是解决快车问题的灵药,烧完钱之后只会产生新的滴滴
  5. 中间代码生成器-5-编译原理
  6. 移动开发平台性能比较
  7. 被忽视的fuzzywuzzy库
  8. Java入门:冒泡排序
  9. HTML--HTML对象的关于位置和大小的属性的图解
  10. Dubbo-Admin 2.7 本地安装和部署
  11. 不容错过的 15 个 Linux 实用技巧
  12. PATB 1019. 数字黑洞 (20)
  13. MATLAB_R2018b安装教程
  14. mac office中字体
  15. IAR8.3 STM8安装过程
  16. C语言题库 part.1
  17. 抖音壁纸小程序怎么做?手把手教你0元拥有自己的壁纸小程序
  18. OA“失身”缘于难挡ERP的色诱?
  19. LGP993使用心得和Android手机使用建议
  20. 公众号淘客怎么运营推广,找到适合自己的的推广方法才有效

热门文章

  1. mahout 详解
  2. cscope精准查看linux函数调用,linux下使用 vim + cscope 查看代码
  3. MySQL安装时报错找不到MSVCR120.dll
  4. SRT协议的校园局域网电视直播应用(校园电视台)
  5. 2021-07-11谓词执行
  6. 运行winform程序提示:You must install .NET Desktop Runtime 6.0.1(x64)
  7. mac版mysql初始密码忘记,重置密码
  8. 阿里开源工具——故障在线诊断Arthas
  9. 死锁、活锁、饿死和阻塞的个人理解
  10. oracle 设置序列的值