2017-11-14 16 views
1

私は最高の最初のオーディオストリームを抽出して新しいコンテナに格納するように、オーディオとビデオを保持するいくつかのコンテナを再多重化することを検討しています。 オーディオストリームが存在します。コーデックとコンテナの組み合わせがFFmpegと互換性があるかどうかをどのように判断できますか?

のFFmpegの出力コンテクストがそうのように作成される:

AVFormatContext* output_context = NULL; 
avformat_alloc_output_context2(&output_context, NULL, "mp4", NULL); 

Iは、例えば、許容される出力のショートリストを有しますMP4、M4A、等...基本的にAppleのオーディオファイルサービスで読めるされているもの:

kAudioFileAIFFType    = 'AIFF', 
kAudioFileAIFCType    = 'AIFC', 
kAudioFileWAVEType    = 'WAVE', 
kAudioFileSoundDesigner2Type = 'Sd2f', 
kAudioFileNextType    = 'NeXT', 
kAudioFileMP3Type    = 'MPG3', // mpeg layer 3 
kAudioFileMP2Type    = 'MPG2', // mpeg layer 2 
kAudioFileMP1Type    = 'MPG1', // mpeg layer 1 
kAudioFileAC3Type    = 'ac-3', 
kAudioFileAAC_ADTSType   = 'adts', 
kAudioFileMPEG4Type    = 'mp4f', 
kAudioFileM4AType    = 'm4af', 
kAudioFileM4BType    = 'm4bf', 
kAudioFileCAFType    = 'caff', 
kAudioFile3GPType    = '3gpp', 
kAudioFile3GP2Type    = '3gp2', 
kAudioFileAMRType    = 'amrf' 

私の質問はこれです:コーデック与えられた互換性のある出力コンテナを選択するために活用することができるのFFmpegでの簡単なAPIがありますオーディオストリームは入っていますか?

+1

次のリソースは、私は、例えばに問題があった特定のオーディオコーデックはMP4コンテナに組み込み可能であることを示しているようだが、https://en.wikipedia.org/wiki/Comparison_of_video_container_formats MP3をMP4内で使用し、AppleのAPIをデコードすることを喜んでお勧めします。 – Dan

答えて

2

個々のマルチプレクサごとに、通常はコーデックタグ書き込み関数があります。この関数は、別のソースファイル内のリストに対してチェックしたり、同じファイル内のswitchステートメントを使用したりします。中央の名簿またはコンテナに一致するユーティリティ機能はありません。あなたの最善の策は、libavcodec/allcodecs.cのコーデックIDを特定し、そのIDのlibavformat/のgrep、特にencの接尾辞が付いたファイル内のgrepです。 matroskaenc.c

+0

興味深い...例えば、私は 'isom.c'で、FFmpegがMP4と関連づけていると思われるオーディオコーデックのリスト、および他の同様のリストを見つけることができました。一致するコードを自分でロールバックする必要があるか、または組み合わせが失敗した場合のフォールバック戦略のように見えます。 – Dan

関連する問題