3 つのチャンクを持つ RIFF コンテナーであるファイルがあります。RIFF チャンクには「WAVE」識別子があります。最初のチャンクは「fmt」、2 番目は「data」、最後は「eink」(自分のチャンク) です。そのファイルは、directshow を使用する C# コードによって生成されます。オーディオは AAC でエンコードされます。そのため、iOS 5.* では、「データ」チャンクに保存されているオーディオを再生したくありません。「データ」チャンク全体を読み取って、それらのバイトを のメソッドで
使用しようとしました。しかし、それは別の方法で動作するようです。
思った以上に、そのバイトで独自のファイルを作成して再生することはできましたが、他に正しい方法はありますか? 調べる方法を教えてください。どこで読む?または他の方法。[initWithData:error:][1]
AVAudioPlayer
m4a
1 に答える
Few concepts regarding WAV, AAC and MP4
WAV
圧縮または非圧縮の両方の他のオーディオデータを保存できるコンテナ形式です。詳細については、http://www.sonicspot.com/guide/wavefiles.htmlをご覧ください。
AAC は複数の方法でカプセル化できます。最も一般的なのは ADTS と MP4 です。AAC コンテナー形式の詳細は、http://en.wikipedia.org/wiki/Advanced_Audio_Coding#Container_formatsにあります。
ADTS は比較的単純な形式で、各 AAC フレームの前にヘッダーが付きます。ADTS ヘッダーの詳細については、http: //wiki.multimedia.cx/index.php?title=ADTS を参照してください。
MP4 は比較的複雑な形式で、さまざまなオーディオ形式とビデオ形式の保存をサポートしています。MP4 の場合、ヘッダー情報はファイル内の MP4 構造に一度格納され、残りの AAC フレームにはヘッダー情報が含まれる必要はありません。
How to support playing WAV file with AAC payload in iOS?
- ADTS、MP4、ADIF のいずれであるか、ペイロードのタイプを判別する
- ファイルをオフラインで変換できる場合は、FFMPEG などのサードパーティ ライブラリを使用して、iOS でサポートされている形式の AAC 付き WAV を M4A ファイルに変換します。
- デバイスでファイルを変換する必要がある場合、ペイロードから AAC フレーム データを抽出し、iOS が期待する方法に変換してデコードするのが最善の方法です。これを判断する最善の方法は、ファイルをオフラインで M4A に変換し、データが iOS オーディオ プレーヤーにどのように供給されるかを確認することです。