音频处理中,有时不同的编解码器支持的音频格式不一样,原始采样的音频数据可能没法直接直接为编解码器支持,如FFMPEG编码MP3格式的音频,就要求样本采用AV_SAMPLE_FMT_S16P格式保存。
这就需要对不同的音频格式转换,需要重采样。
1、如果PCM文件采用交叉存储方式,视频帧的概念可能没什么影响,因为数据都是LRLRLR...LR方式;
2、如果采用平行存储方式,L...LR...RL...LR...R,一帧必须按照指定的数据读取了,如MP3读取一帧需要读取1152*2(通道数)个样本,然后前1152为左声道,后1152为右声道。
代码实现音频重采样 把交叉存储的双声道立体声转换成平行存储的双声道立体声
/*******************************************************************************
Copyright (c) wubihe Tech. Co., Ltd. All rights reserved.
--------------------------------------------------------------------------------
Date Created: 2014-10-25
Author: wubihe QQ:1269122125 Email:1269122125@qq.com
Description: 代码实现音频重采样 把交叉存储的双声道立体声转换成平行存储的双声道
立体声
--------------------------------------------------------------------------------
Modification History
DATE AUTHOR DESCRIPTION
--------------------------------------------------------------------------------
********************************************************************************/
#include <stdio.h>
#define __STDC_CONSTANT_MACROS
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswresample/swresample.h"
int main()
{
static char*pFormatName[]=
{
"FMT_U8","FMT_S16","FMT_S32","FMT_FLT","FMT_DBL",
"FMT_U8P",