iOS利用FFmpeg解码音频数据并播放
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS利用FFmpeg解码音频数据并播放相关的知识,希望对你有一定的参考价值。
参考技术A 利用FFmepg解析并解码音频流数据,然后将解码后的音频数据送给Audio Queue以实现播放.利用FFmpeg解析音频数据流, 利用FFmpeg解码音频数据为PCM格式. 利用Audio Queue Player实现音频数据播放.
本例以一个苹果原生相机录制的.MOV文件为例, 将该文件使用FFmpeg解析并解码,将解码后的数据放入传输队列中,然后开启audio queue player, 播放器在回调函数中轮循取出队列中的数据实现播放.
FFmpeg parse流程
FFmpeg解码流程
为了每次能够重新播放,这里需要标记当前是否为解码的第一帧数据,以重新启动播放器. 另一点是使用NSTimer等待音频数据放入队列再开始播放,因为audio queue是驱动播放模式,所以必须等音频数据放入传输队列再开始播放.
从Parse模块中可以获取当前文件对应FFmepg的上下文对象 AVFormatContext .因此音频流解码器信息可以直接获取.
AVFrame 作为解码后原始的音视频数据的容器.AVFrame通常被分配一次然后多次重复(例如,单个AVFrame以保持从解码器接收的帧)。在这种情况下,av_frame_unref()将释放框架所持有的任何引用,并在再次重用之前将其重置为其原始的清理状态。
调用avcodec_send_packet将压缩数据发送给解码器.最后利用循环接收avcodec_receive_frame解码后的音视频数据.
FFmpeg进行音频的解码和播放
参考技术A FFmpeg4.0.2编译32位和64位动态库FFmpeg 内容介绍 音视频解码和播放
音频数字化主要有压缩与非压缩(pcm)两种方式。
上一篇 FFmpeg 内容介绍 音视频解码和播放 介绍了FFmpeg进行解码的常见函数和,解码的过程。相关的函数介绍忘记了,可以参考上一篇。
思路:由FFmpeg进行解码,将解码后的数据再通过jni传到Java中的audioTrack对象进行播放
以上就是利用FFmpeg对音频文件进行解码以及播放的内容,如果有错误,欢迎大家指正出来
以上是关于iOS利用FFmpeg解码音频数据并播放的主要内容,如果未能解决你的问题,请参考以下文章