извлечь каждый аудио-канал в файл QuickTime - PullRequest
3 голосов
/ 06 июля 2010

Я хочу извлечь каждый аудиоканал в быстрый фильм с помощью QuickTime-API.Это означает, что если файл имеет объемное звучание 5.1, я хочу 6 аудио файлов в конце.Но сейчас я не знаю, как с этим справиться.До сих пор у меня есть:

OSStatus err = noErr;
MovieAudioExtractionRef extractionSessionRef = nil;
Boolean allChannelsDiscrete = true;
int flags;
int numFrames;
AudioBufferList *mBufferList;
err = MovieAudioExtractionBegin(movie, 0, &extractionSessionRef); 


// disable mixing of audio channels
err = MovieAudioExtractionSetProperty(extractionSessionRef,
  kQTPropertyClass_MovieAudioExtraction_Movie,
  kQTMovieAudioExtractionMoviePropertyID_AllChannelsDiscrete,
  sizeof (Boolean), &allChannelsDiscrete);

err = MovieAudioExtractionFillBuffer(extractionSessionRef, &numFrames, 
  mBufferList, &flags);
if (flags & kQTMovieAudioExtractionComplete)
{
    // extraction complete!
}
err = MovieAudioExtractionEnd(extractionSessionRef);

Проблема в том, что я не знаю, как получить mBufferList и как экспортировать каждый канал как WAV 48 кГц.Вы можете мне помочь?Пример из этой страницы .

Ответы [ 2 ]

2 голосов
/ 27 июля 2010

Вы проверили с этим ?

0 голосов
/ 13 июля 2010

Не уверен, поможет ли это - есть способ сделать это без использования Quicktime-SDK:

Вам нужно проанализировать атом QuickTime "moov", чтобы получить типы звуковых дорожек / bps / частота дискретизации / endian и т.д.. Затем найдите атомы "stsc" и "stco" для samples_per_chunk и каждого смещения фрагмента.Затем вы просто читаете исходные данные атома "mdat", используя эти смещения, и записываете образцы в файлы назначения.

Это не простой способ, но он работает для меня.

...