たくさんのオーディオファイル(mp3、aacなど)があり、それらを1つのオーディオファイルに連結したいと思います。誰かがこれを以前にやったことがありますか?
2 に答える
私はこれをしました。連結を行うには、最初にオーディオファイルをAVAssetsにロードする必要があります。具体的には、AVURLAssetsと呼ばれるAVAssetのサブクラスを使用する必要があります。これにより、URLをロードできます:LoadingAVAsset。AVAsset
次に、それぞれをAVMutableCompositionに追加できます。これは、複数を含むように設計されていますAVAssets
。にロードしたら、 AVAssetExportSessionAVMutableComposition
を使用してコンポジションをファイルに書き込むことができます。
AVAssetExportSession
ファイル出力をあまり制御できないことに注意してください(オーディオをm4aファイルにエクスポートします)。出力の種類をさらに制御する必要がある場合は、ではなくAVAssetReaderクラスとAVAssetWriterクラスを使用してエクスポートを実行する必要があります。これらのクラスは、使用するのがはるかに複雑であり、ストレートCを理解するためにここでお金を払っています。AVAssetExportSession
AVAssetExportSession
また、MP3ファイルを書き出すためのApple提供のオプションがないことも指摘しておきます。読むことはできますが、書くことはできません。一般的には、m4a/aac形式を使用するのが最適です。
これは、ExtAudioFileを使用するとかなり簡単です。擬似コードで実行したいことは次のとおりです。
1. Open the file you'll be using for output (ExtAudioFileOpen)
2. Set the client data format you'll use for ExtAudioFileWrite
3. For each input file you want to process:
a. Open the file using ExtAudioFile
b. Set the client data format used for reading to the same client format used in the output file for writing
c. Loop through the input file using ExtAudioFileRead and save the data to the output file using ExtAudioFileWrite
d. Close the input file
4. Close the output file