2011-08-10 14 views
1

私はmmsストリームオーディオアプリケーションを作成しようとしている学生です。
libmmsを使用してmmsストリームを取得し、ffmpegを使用してwmaオーディオをデコードしました。
しかし、私は次に何をすべきか分かりません。生のオーディオをiPhoneで再生するには? (ffmpegを使用して)

私は最近、stackoverflowサイトで同様のquestionを見ました。 (Writer is c4r1o5
しかし、彼はavcodec_decode_audio2の後にcfwritestreamwriteを使用しました。
そうですか?ネットワーク問題がmms_connect、ffmpegデコード後に終了したので、これは必要ではないと私は思う。

これは使用には必要ですか?
生のオーディオをオーディオバッファに入れようとしました。演奏するときは白い音だけが出ます。

私を助けてください。
ご意見やご感想はありがとうございます。
ありがとうございます。

enter image description here

+0

ffmpegを使用する必要がありますか? AVFoundationやCoreAudioを使ってこれを行う他の方法があります – nacho4d

+0

Iphoneでwmaオーディオをデコードする別の方法は?私は見ていない – KayKay

+0

あなたは正しいです、WMAは、それらのフレームワークを解読することはできません。私はその質問を誤解した。 – nacho4d

答えて

1

必要なコードを投稿してください。
そして、必ずしもCFWriteStreamWriteを使用するとは限りません。
私はCFWriteStreamWriteに関する経験はありませんが、mmsストリーミングでは必要ありません。
あなたが必要とするのは、MMSを接続し、wmaオーディオファイルをデコードし、iphoneで再生するためにキューオーディオバッファを入れることです。
あなたはiphoneについて知っておくべきだと思う。Audio Queue Service
そして、オーディオフレームを取得するときは必ずスレッドを使用してください。
基本情報はそのサイトにあります。

最後に、間違ったmAudioDataを設定したため、理由はホワイトノイズだけです。
memcpyを使用してオーディオメモリをコピーします。

0

AudioQueueOutputCallbackを実装して、デコードされたオーディオデータをAudioQueueに渡す必要があります。

- (void)handlePlayCallback:(AudioQueueRef) inAudioQueue buffer:(AudioQueueBufferRef) inBuffer { 
    // copy decoded audio data to inBuffer->mAudioData 
    // and set the size of the copied data like this 
    // inBuffer->mAudioDataByteSize = data_written 

    if(inBuffer->mAudioDataByteSize > 0) { 
     AudioQueueEnqueueBuffer(inAudioQueue, inBuffer, 0, NULL); 
    } 
} 
関連する問題