У кого-нибудь есть пример того, как писать аудио и видео одновременно, используя AVAssetWriter? - PullRequest
16 голосов
/ 22 сентября 2010

Пытался понять это с нулевым успехом.

Я могу записать видеовыход без проблем ... но как только я попытаюсь представить второй AVAssetWriterInput для включения звука, финальный фильм быстрого времени будет нервным с потерями кадров влево и вправо, а звук постоянно входит и выходит.

Спасибо - РГ

Ответы [ 4 ]

1 голос
/ 05 марта 2011

Используете ли вы requestMediaDataWhenReadyOnQueue: usingBlock: для записи данных?Если нет, то вы должны установить для expectedMediaDataInRealTime значение YES.

1 голос
/ 10 октября 2010

Если вы включите источник, мы могли бы помочь вам больше, но это метод, с помощью которого я успешно записал множество аудио и видео дорожек в быстрый фильм - я использую одну AVMutableComposition с AVMutableVideoComposition и AVAudioMix. Затем я пишу это так:

AVAssetExportSession *session = [[[AVAssetExportSession alloc] initWithAsset:[project.composition copy] presetName:presetName] retain];
    session.outputFileType = [session.supportedFileTypes objectAtIndex:0];
    session.outputURL = [NSURL fileURLWithPath:[VeporterAppDelegate createMoviePath]];
    session.videoComposition = project.videoComposition;
    session.audioMix = project.audioMix;

    session.metadata = project.metadata;

    [session exportAsynchronouslyWithCompletionHandler:^{}];
0 голосов
/ 22 февраля 2015

Для всех, кто ищет, как это сделать, этот пример разработчика Apple должен быть всем, что вам нужно. Удачи.

0 голосов
/ 06 декабря 2014

У меня такая же проблема.Мое решение:

1) Создайте два объекта AVAssetWriter для записи аудио и видео в два файла.

2) Используйте AVMutableComposition и AVAssetExportSession, чтобы объединить их в один файл, как предложено выше.

Может быть, это ужасно.Но в моем проекте мне следовало бы составить несколько видеофайлов, поэтому при создании аудио и видео накладные расходы были низкими.

...