=====================================================
最简单的基于FFmpeg的音频播放器系列文章列表:
《最简单的基于FFMPEG+SDL的音频播放器 ver2 (采用SDL2.0)》
《最简单的基于FFMPEG+SDL的音频播放器:拆分-解码器和播放器》
=====================================================
本文补充记录《最简单的基于FFMPEG+SDL的音频播放器》中的两个例子:FFmpeg音频解码器和SDL音频采样数据播放器。这两个部分是从音频播放器中拆分出来的两个例子。FFmpeg音频解码器实现了视频数据到PCM采样数据的解码,而SDL音频采样数据播放器实现了PCM数据到音频设备的播放。简而言之,原先的FFmpeg+SDL音频播放器实现了:
音频数据->PCM->音频设备
FFmpeg音频解码器实现了:
音频数据->PCM
SDL音频采样数据播放器实现了:
PCM->音频设备
FFmpeg音频解码器
源代码
/** * 最简单的基于FFmpeg的音频解码器 * Simplest FFmpeg Audio Decoder * * 雷霄骅 Lei Xiaohua * leixiaohua1020@126.com * 中国传媒大学/数字电视技术 * Communication University of China / Digital TV Technology * http://blog.csdn.net/leixiaohua1020 * * 本程序可以将音频码流(mp3,AAC等)解码为PCM采样数据。 * 是最简单的FFmpeg音频解码方面的教程。 * 通过学习本例子可以了解FFmpeg的解码流程。 * * This software decode audio streams (AAC,MP3 ...) to PCM data. * Suitable for beginner of FFmpeg. * */#include <stdio.h>#include <stdlib.h>#include <string.h>#define __STDC_CONSTANT_MACROS#ifdef _WIN32//Windowsextern "C"{
#include "libavcodec/avcodec.h"#include "libavformat/avformat.h"#include "libswresample/swresample.h"};#else//Linux...#ifdef __cplusplusextern "C"{
#endif#include <libavcodec/avcodec.h>#include <libavformat/avformat.h>#