Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从立体声切换到单声道_Ios_Audio_Ffmpeg_Sdl_Decode - Fatal编程技术网

Ios 如何从立体声切换到单声道

Ios 如何从立体声切换到单声道,ios,audio,ffmpeg,sdl,decode,Ios,Audio,Ffmpeg,Sdl,Decode,我用SDL和FFMPEG解码音频。我的测试文件包含立体声和单声道的组合。当我尝试播放音频文件时,立体声部分将播放,但当频道将立体声更改为单声道时,我的应用程序无法播放 我的FFMPEG提供了从立体声到单声道的频道转换。但是我如何让SDL扮演单声道角色呢 我正在我的应用程序中执行此操作 aCodecCtx=pFormatCtx->streams[audioStream]->codec; wanted_spec.freq

我用SDL和FFMPEG解码音频。我的测试文件包含立体声和单声道的组合。当我尝试播放音频文件时,立体声部分将播放,但当频道将立体声更改为单声道时,我的应用程序无法播放

我的FFMPEG提供了从立体声到单声道的频道转换。但是我如何让SDL扮演单声道角色呢

我正在我的应用程序中执行此操作

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;}