基于FFmpeg的视频播放器之七:音频解码
一.流程
音频解码的流程和视频解码几乎一样,最大的区别是解码后需要进行重采样。因为解码出的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的视频播放器之七:音频解码相关推荐
- QT软件开发-基于FFMPEG设计视频播放器-解码音频(三)
QT软件开发-基于FFMPEG设计视频播放器-CPU软解视频(一) https://xiaolong.blog.csdn.net/article/details/126832537 QT软件开发-基于 ...
- QT软件开发-基于FFMPEG设计视频播放器-GPU硬解、OpenGL渲染、解码音频完整例子(六)
QT软件开发-基于FFMPEG设计视频播放器-CPU软解视频(一) https://xiaolong.blog.csdn.net/article/details/126832537 QT软件开发-基于 ...
- QT软件开发-基于FFMPEG设计视频播放器-软解图像(一)
QT软件开发-基于FFMPEG设计视频播放器-CPU软解视频(一) https://xiaolong.blog.csdn.net/article/details/126832537 QT软件开发-基于 ...
- QT软件开发-基于FFMPEG设计视频播放器-GPU硬解、OpenGL渲染(四)
QT软件开发-基于FFMPEG设计视频播放器-CPU软解视频(一) https://xiaolong.blog.csdn.net/article/details/126832537 QT软件开发-基于 ...
- 基于FFmpeg开发视频播放器, 基本流程(一)
刚开始学习FFmpeg,用几篇文章记录下,使用ffmpeg开发一个简单的视频播放器,大概的过程.这里只讨论核心代码,如解封装,音频的解码播放,视频的解码播放,音视频同步,不涉及UI布局. 基于FFmp ...
- 基于FFmpeg的视频播放器之一:开篇
FFmpeg的研究几乎都是从ffplay开始的,ffplay是FFmpeg自带播放器,它的源码虽然只有一个文件,但是麻雀虽小五脏俱全,播放器的基本功能都有了.初看ffplay的源码,会感觉特别绕,跳转 ...
- C++---基于ffmpeg实现视频播放器(一)
ffmpeg.exe 功能: ffmpeg.exe实现视频的转码. 命令格式 ffmpeg -i [输入文件的路径] -b:v [输出文件的码率] [输入文件的路径] 简单命令 ffmpeg -i i ...
- 基于FFmpeg的视频播放器之四:视频解码
一.流程 1.avcodec_find_decoder 提供两种方式查找解码器,通过codecId查找avcodec_find_decoder与通过名字查找avcodec_find_decoder_b ...
- 基于FFmpeg的视频播放器之十一:倍速播放
倍速播放通常有两种方式:一种是变速变调,另一种是变速不变调 一.变速变调 这种方法的原理就是音频重采样.比如说44100Hz采样率的音频,每秒钟有44100个采样点,如果我们要加速为200%播放,最简 ...
最新文章
- 两家外企的长三角仓库,活儿竟全被中国机器人承包了
- Win8Beta即将发布,业内普遍看好微软Windows 8
- 开发日记-20190905 关键词 Linux (Ubuntu) 下的Android模拟器:Genymotion
- 美团高德并不是解决快车问题的灵药,烧完钱之后只会产生新的滴滴
- 中间代码生成器-5-编译原理
- 移动开发平台性能比较
- 被忽视的fuzzywuzzy库
- Java入门:冒泡排序
- HTML--HTML对象的关于位置和大小的属性的图解
- Dubbo-Admin 2.7 本地安装和部署
- 不容错过的 15 个 Linux 实用技巧
- PATB 1019. 数字黑洞 (20)
- MATLAB_R2018b安装教程
- mac office中字体
- IAR8.3 STM8安装过程
- C语言题库 part.1
- 抖音壁纸小程序怎么做?手把手教你0元拥有自己的壁纸小程序
- OA“失身”缘于难挡ERP的色诱?
- LGP993使用心得和Android手机使用建议
- 公众号淘客怎么运营推广,找到适合自己的的推广方法才有效
热门文章
- mahout 详解
- cscope精准查看linux函数调用,linux下使用 vim + cscope 查看代码
- MySQL安装时报错找不到MSVCR120.dll
- SRT协议的校园局域网电视直播应用(校园电视台)
- 2021-07-11谓词执行
- 运行winform程序提示:You must install .NET Desktop Runtime 6.0.1(x64)
- mac版mysql初始密码忘记,重置密码
- 阿里开源工具——故障在线诊断Arthas
- 死锁、活锁、饿死和阻塞的个人理解
- oracle 设置序列的值