首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows Phone 8中的AMR-NB音频支持

Windows Phone 8中的AMR-NB音频支持
EN

Stack Overflow用户
提问于 2013-07-05 13:42:02
回答 1查看 301关注 0票数 1

windows phone 8支持amr-nb音频格式吗?我们可以在windows phone8中将amr-nb转换为pcm吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-23 11:10:00

yes...we可以做到这一点。在Windows phone8中,你现在可以使用c++代码了。

我已经做到了这一点,correctly.You可以遵循以下步骤:

  1. 创建运行时项目project
  2. intergate amr-nb代码到c++运行时项目
  3. 在您的c#项目中,调用函数来做这些事情。

和代码

代码语言:javascript
复制
int DecodeAMRFileToWAVEFile(const char* pchAMRFileName, const char* pchWAVEFilename)
{
    FILE* fpamr = NULL;
FILE* fpwave = NULL;
char magic[8];
void * destate;
int nFrameCount = 0;
int stdFrameSize;
unsigned char stdFrameHeader;

unsigned char amrFrame[MAX_AMR_FRAME_SIZE];
short pcmFrame[PCM_FRAME_SIZE];

fpamr = fopen(pchAMRFileName, "rb");
if ( fpamr==NULL ) return 0;

// 检查amr文件头
fread(magic, sizeof(char), strlen(AMR_MAGIC_NUMBER), fpamr);
if (strncmp(magic, AMR_MAGIC_NUMBER, strlen(AMR_MAGIC_NUMBER)))
{
    fclose(fpamr);
    return 0;
}

// 创建并初始化WAVE文件
fpwave = fopen(pchWAVEFilename, "wb");
WriteWAVEFileHeader(fpwave, nFrameCount);

/* init decoder */
destate = Decoder_Interface_init();

// 读第一帧 - 作为参考帧
memset(amrFrame, 0, sizeof(amrFrame));
memset(pcmFrame, 0, sizeof(pcmFrame));
ReadAMRFrameFirst(fpamr, amrFrame, &stdFrameSize, &stdFrameHeader);

// 解码一个AMR音频帧成PCM数据
Decoder_Interface_Decode(destate, amrFrame, pcmFrame, 0);
nFrameCount++;
fwrite(pcmFrame, sizeof(short), PCM_FRAME_SIZE, fpwave);

// 逐帧解码AMR并写到WAVE文件里
while(1)
{
    memset(amrFrame, 0, sizeof(amrFrame));
    memset(pcmFrame, 0, sizeof(pcmFrame));
    if (!ReadAMRFrame(fpamr, amrFrame, stdFrameSize, stdFrameHeader)) break;

    // 解码一个AMR音频帧成PCM数据 (8k-16b-单声道)
    Decoder_Interface_Decode(destate, amrFrame, pcmFrame, 0);
    nFrameCount++;
    fwrite(pcmFrame, sizeof(short), PCM_FRAME_SIZE, fpwave);
}

Decoder_Interface_exit(destate);

fclose(fpamr);
fclose(fpwave);

// 重写WAVE文件头
fpwave = fopen(pchWAVEFilename, "r+");
WriteWAVEFileHeader(fpwave, nFrameCount);
fclose(fpwave);

return nFrameCount;
}

评论是用中文写的:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17481798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档