2017-11-14 24 views
1

오디오 및 비디오를 보유하고있는 일부 컨테이너를 다시 다중화하여 최상의 오디오 스트림을 추출하고이를 새로운 컨테이너에 저장하는 방법을 찾고 있습니다. 오디오 스트림 만 있습니다.코덱/컨테이너 조합이 FFmpeg와 호환되는지 어떻게 알 수 있습니까?

FFmpeg에 대한 출력 문맥과 같이 생성된다 :

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

I 허용 출력 예들의 명단을 MP4, M4A, 등 ... 기본적으로 애플의 오디오 파일 서비스에서 읽을 수있는 것들 :

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

각 개별 muxer에는 일반적으로 코덱 태그 쓰기 기능이 있습니다.이 기능은 다른 소스 파일의 목록을 확인하거나 동일한 소스 코드에서 switch 문을 사용합니다. 중앙 명부 또는 용기 일치 유틸리티 기능이 없습니다. 가장 좋은 방법은 해당 ID에 대해 libavcodec/allcodecs.c의 코덱 ID를 식별 한 다음 libavformat/에 grep을 입력하는 것입니다. 특히 enc가 붙은 파일에서 사용하는 것이 가장 좋습니다. matroskaenc.c.

+0

흥미 롭습니다 ... 예를 들어 FFmpeg가 MP4 및 다른 유사한 목록과 연결되는 것으로 보이는 오디오 코덱 목록을 isom.c에서 찾을 수있었습니다. 혼자서 일치하는 코드를 굴려야하거나, 조합이 실패 할 때 대체 전략을 사용해야하는 것 같습니다. – Dan