FFmpeg学习3:播放音频】的更多相关文章

前段时间,在学习试用FFmpeg播放音频的时候总是有杂音,网上的很多教程是基于之前版本的FFmpeg的,而新的FFmepg3中audio增加了平面(planar)格式,而SDL播放音频是不支持平面格式的,所以通过FFmpeg解码出来的数据不能直接发送到SDL进行播放,需要进行一个格式转换.通过网上一些资料,也能够正确的播放音频了,但是对具体的音频转换过程不是很了解,这里就对FFmpeg的对音频的存储格式及格式转换做个总结.本文主要有以下几个方面的内容: AVSampleFormat 音频samp…
/** * 参考于:http://blog.csdn.net/leixiaohua1020/article/details/46890259 */ #include <stdio.h> #include <string.h> extern "C" { #include "libavcodec/avcodec.h" #include "libavformat/avformat.h" #include "libswr…
在前面的学习中,视频和音频的播放是分开进行的.这主要是为了学习的方便,经过一段时间的学习,对FFmpeg的也有了一定的了解,本文就介绍了 如何使用多线程同时播放音频和视频(未实现同步),并对前面的学习的代码进行了重构,便于后面的扩展. 本文主要有以下几个方面的内容: 多线程播放视音频的整体流程 多线程队列 音频播放 视频播放 总结以及后续的计划 1. 整体流程 FFmpeg和SDL的初始化过程这里不再赘述.整个流程如下: 对于一个打开的视频文件(也就是取得其AVFormatContext),创建…
参考dranger tutorial,本文将介绍如何使用FFmpeg解码音频数据,并使用SDL将解码后的数据输出. 本文主要包含以下几方面的内容: 关于播放音频的需要的一些基础知识介绍 使用SDL2播放音频 数据队列 音频格式的转换 dranger tutorial确实入门FFmpeg比较好的教程,虽然作者在2015年的时候根据新版本的FFmpeg更新了, 但是其中还是有不少API过时了.特别是,教程中使用的是SDL1.0,和现在的SDL2的API也有很大的不同,并且不能兼容. 1. 关于音频的…
1. 前言 目前为止,学习了并记录了ffmpeg+SDL2显示视频以及事件(event)的内容. 这篇中记录ffmpeg+SDL2播放音频,没加入事件处理. 接下来加入事件处理并继续学习音视频同步,再接下来就添加暂停之类的或者添个界面. 2. 流程图 3. 示例 示例代码的主要思想是:(和音频播放器V1.0思想一样,实现不同.不同在于这个程序用一个队列存储主线程读到的AVPacket) 主线程只负责读AVPacket存到队列.->av_read_frame() 其他所有的解码,输出工作都由cal…
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android支持常用音视频格式文件的播放,本文我们来学习怎样开发Android应用程序对音视频进行操作. Android提供了MediaPlayer和SoundPool两个类能够用来播放音频,MediaPlayer类通常用来播放较大的文件,比如一首MP3歌曲,这种文件通常保存在SD卡上,而不是保存在资源文件中,当然如果有必要,也可以保存在资源文件中.SoundPool类通常用来播放体积较小的文件,比如游戏中的炸…
本文转自:FFmpeg 入门(3):播放音频 | www.samirchen.com 音频 SDL 提供了播放音频的方法.SDL_OpenAudio 函数用来让设备播放音频,它需要我们传入一个包含了所有我们输出需要的音频信息的 SDL_AudioSpec 结构体数据. 在展示接下来的代码之前,我们先说说 PC 上是如何处理音频的.数字音频包含了一长串「音频采样(sample)」,每一个采样代表着一个音频波形的值.声音是在一定的「音频采样率(sample rate)」下被录制下来的,音频采样率即每…
播放音频,设置好SDL_AudioSpec播放参数,然后由SDL回调函数进行解码和数据的拷贝,解码播放音频无需设置延迟,因为声卡播放音频是阻塞的 int audio_decode_frame(AVCodecContext *aCodecCtx, uint8_t *audio_buf, int buf_size) { static AVPacket pkt; static uint8_t *audio_pkt_data = NULL; static int audio_pkt_size = 0;…
一.基本概念 本文主要介绍的是Android中很重要也最为复杂的媒体播放器(MediaPlayer)部分的架构.Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的. MediaPlayer在底层是基于OpenCore(PacketVideo)的库实现的,为了构建一个MediaPlayer程序,上层还包含了进程间通讯等内容,这种进程间通讯的基础是Android基本库中的Bin…
参考雷神的代码: /** * 最简单的SDL2播放音频的例子(SDL2播放PCM) * Simplest Audio Play SDL2 (SDL2 play PCM) * * 本程序使用SDL2播放PCM音频采样数据.SDL实际上是对底层绘图 * API(Direct3D,OpenGL)的封装,使用起来明显简单于直接调用底层 * API. * * 函数调用步骤如下: * * [初始化] * SDL_Init(): 初始化SDL. * SDL_OpenAudio(): 根据参数(存储于SDL_A…