audio相关

分类: C/C++ 发布时间: 2018-09-02 15:13

最近一直在弄音频,已经被程序弄得焦头烂额了。

1.: 使用ffmpeg解析海思的音频流,参数设置弄了很久.
AVCodecID avCid = AV_CODEC_ID_ADPCM_G726;
AVSampleFormat avFormat = AV_SAMPLE_FMT_S16;

m_audioCodec = avcodec_find_decoder(avCid);
if (!m_audioCodec)
{
RELEASEA(“avcodec_find_decoder fail\n”);
return TLPLAY_FAIL;
}
m_audioContext = avcodec_alloc_context3(m_audioCodec);
m_audioContext->bits_per_coded_sample = 4;
m_audioContext->channels = 1;
m_audioContext->sample_fmt = avFormat;
m_audioContext->sample_rate = audioParam.samplerate;
m_audioContext->codec_type = AVMEDIA_TYPE_AUDIO;

最新ffmpeg4.0.1 windows库:

SDL库:

 

2.使用libEasyAACEncoder将G726格式的数据的音频转化为AAC,最后和H264视频保存为mp4文件

参考的代码:百度网盘:https://pan.baidu.com/s/1TbfzT1UG2kPAvMIRSP8Cyg  密码:liu4

附上faac的源代码:百度网盘:https://pan.baidu.com/s/11UT5-9t-404UedkFFieILw 密码:sa5i

mp4v2源代码:百度网盘:https://pan.baidu.com/s/1Ay0SFRMGlZ12GYkZYP-hmw  密码:qk4h

实例代码中的mediaplay播放有音频,我转化的只能播放视频,音频无法播放,有经验的人可以交流一下

据说是添加以下代码,已添加仍然无法播放,

bitset<16> config(0);
config[3] = 1; ////0-4位表示AAC类型
config[5] = 1;
config[7] = 1;
config[8] = 1;//5-8表示sample
config[12] = 1;//9-12表示通道
int result = config.to_ulong();
unsigned char data[2] = { '0x15', '0x88' };

MP4SetTrackESConfiguration( pMP4Handle, audio, buf3, 2);

 


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!