Ios 如何从立体声切换到单声道
我用SDL和FFMPEG解码音频。我的测试文件包含立体声和单声道的组合。当我尝试播放音频文件时,立体声部分将播放,但当频道将立体声更改为单声道时,我的应用程序无法播放 我的FFMPEG提供了从立体声到单声道的频道转换。但是我如何让SDL扮演单声道角色呢 我正在我的应用程序中执行此操作Ios 如何从立体声切换到单声道,ios,audio,ffmpeg,sdl,decode,Ios,Audio,Ffmpeg,Sdl,Decode,我用SDL和FFMPEG解码音频。我的测试文件包含立体声和单声道的组合。当我尝试播放音频文件时,立体声部分将播放,但当频道将立体声更改为单声道时,我的应用程序无法播放 我的FFMPEG提供了从立体声到单声道的频道转换。但是我如何让SDL扮演单声道角色呢 我正在我的应用程序中执行此操作 aCodecCtx=pFormatCtx->streams[audioStream]->codec; wanted_spec.freq
aCodecCtx=pFormatCtx->streams[audioStream]->codec;
wanted_spec.freq = aCodecCtx->sample_rate;
wanted_spec.format = AUDIO_S16SYS;
wanted_spec.channels = aCodecCtx->channels;
wanted_spec.silence = 0;
wanted_spec.samples = SDL_AUDIO_BUFFER_SIZE;
wanted_spec.callback = audio_callback;
wanted_spec.userdata = aCodecCtx;
if(SDL_OpenAudio(&wanted_spec, &spec) < 0) {
fprintf(stderr, "SDL_OpenAudio: %s\n", SDL_GetError());
return -1;
}
您能告诉我,如何在运行时将频道从立体声更改为单声道。如何在运行时将频道从立体声更改为单声道。请发布您的音频回调。@MetaCipher,请查找Callbackstatus audio\u callbackvoid userdata,Uint8*stream,int len{AVCodecContext*aCodecCtx=AVCodecContext*userdata;int len1,audio\u size;static uint8\u audio\u buf[AVCODEC\u MAX\u audio\u FRAME\u size*3/2];static unsigned int audio\u buf\u size=0;static unsigned int audio\u buf\u index=0;whilelen>0{ifaudio\u buf\u index>=audio{/我们已经发送了所有数据;获取更多*/audio\u size=[refToSelf audio\u decode\u frame:acodectx:audio\u buf:sizeofaudio\u buf];ifaudio\u size<0{audio\u buf\u size=1024;//任意?memsetaudio\u buf,0,audio\u buf\u size;}否则{audio buf\u buf\u size=audio size;}audio buf\u index=0;}len1=音频大小-音频索引;iflen1>len1=len;memcpystream,uint8*audio\u buf+音频索引,len1;len-=len1;流+=len1;音频索引+=len1;}