0
。这一切工作正常,但我不知道怎么一会去混合两种AVFrame *对象一起(它们被解码后)。混合PCM数据解码目前我使用的FFmpeg的AUTOGEN项目(在C#中的课程)的帧从一个音频文件进行解码,并将它们添加到正在写入到视频的新流的FFmpeg AVFrame *对象
我以前混合PCM数据,但不知道是否有FFmpeg的一个内置的API更有效地完成工作。
这是我当前如何做:
short* baseFrameBuffer1 = (short*)baseFrame->data_0;
short* baseFrameBuffer2 = (short*)baseFrame->data_1;
short* readFrameBuffer1 = (short*)readFrame->data_0;
short* readFrameBuffer2 = (short*)readFrame->data_1;
for (int frameIndex = 0; frameIndex< 1024; frameIndex++)
{
int dataSample1 = GetInRangeSample(baseFrameBuffer1[frameIndex] + readFrameBuffer1[frameIndex]);
int dataSample2 = GetInRangeSample(baseFrameBuffer2[frameIndex] + readFrameBuffer2[frameIndex]);
baseFrame->data_0[frameIndex] = (byte)dataSample1;
baseFrame->data_1[frameIndex] = (byte)dataSample2;
}
private static int GetInRangeSample(int sample)
{
if (sample > short.MaxValue)
{
sample = short.MaxValue;
}
if (sample < short.MinValue)
{
sample = short.MinValue;
}
return sample;
}
使用我刚才的问题http://stackoverflow.com/questions/37570129/increase-decrease-audio-volume-using-ffmpeg和你的答案,我解决了这个问题。 – williamtroup