解决方案 »
- MFC怎样实现类似VC6编辑器界面左边的列表。可以动态去掉,也可以打开。100分
- 如果想让对象传给DLL中的函数,如何实现?谢谢。
- 关于快捷键的问题
- 我如何才能得到整个主机的CPU和内存使用情况?API函数是什么?谢谢!
- #include "***.h"出现找不到文件错误时,(因为不是默认搜索路径)怎么去设置查找路径??
- 高分求助!分不够再加
- 请教图像如何转换为asc码
- 帮忙了!!我在一个对话框的picturebox中显示了一个图像文件,可是一最小化,再还原时,就没有了
- 再问gid的问题
- 怎么将一个DWORD型的变量转化为CString型的变量?
- 跪求帮助啊!!MFC 简单的界面
- enum { IDD = IDD_DIALOG1 };未声明的标示符
我遇到同样的问题,用32位打开,虽然有声音出来但夹了杂音啊,不知道有没有大神解决了呢
首先你看看原始的声音是否有杂音,其次我的是对wma格式的有用,其他的我没有一一实验,你可以通过加一些打印看看decode时候的格式。
估计你已经解决问题了,希望能帮到后来的朋友。AV_SAMPLE_FMT_S16P格式数据是每个声道分开存储的。
对应到frame->data[0] 右声道;
frame->data[1]左声道。
转换成 AV_SAMPLE_FMT_S16 格式只需要复制左右声道数据就可以了。
下面修改了一下你的代码,应该没问题了。 short *data = (char *)malloc(frame->nb_samples);
short *sample_buffer = (short *)frame->data[0];
short *sample_buffer1=(short*)frame->data[1];
for (int i = 0; i < frame->nb_samples; i++)
{
data[i*2] = sample_buffer[i];
data[i*2+1] = sample_buffer1[i];
}