0

Я использую MPMediaPickerController, чтобы пользователь мог выбирать видео и песни из библиотеки на устройстве. Я разрешаю это с инициализацией: initWithMediaTypes:MPMediaTypeAny для сборщика. Затем пользователь может воспроизвести песню или видео в приложении после экспорта. Вот мой фильм-экспорт кода после снятия его в базовую функциональность:Экспорт видео с MPMediaPickerController - нет звука

- (void)mediaPicker:(MPMediaPickerController*)mediaPicker didPickMediaItems:(MPMediaItemCollection*)mediaItemCollection { 
    AVAssetExportSession *exportSession; 
    NSString *filePath; 
    NSURL *fileUrl; 

    for (MPMediaItem *item in mediaItemCollection.items) { 
     NSURL *assetUrl = [item valueForProperty:MPMediaItemPropertyAssetURL]; 
     AVAsset *currAsset = [AVAsset assetWithURL:assetUrl]; 
     exportSession = [[AVAssetExportSession alloc] initWithAsset:[AVAsset assetWithURL:assetUrl] presetName:AVAssetExportPresetHighestQuality]; 
     exportSession.shouldOptimizeForNetworkUse = YES; 
     exportSession.outputFileType = AVFileTypeQuickTimeMovie; 
     filePath = [title stringByAppendingString:@".mov"]; 
     fileUrl = [NSURL fileURLWithPath:[[NSFileManager documentDirectory] stringByAppendingPathComponent:filePath]]; 

     exportSession.outputURL = fileUrl; 
     dispatch_group_enter(dispatchGroup); 

     [exportSession exportAsynchronouslyWithCompletionHandler:^{ 
      // success 
     } 
     dispatch_group_leave(dispatchGroup); 
    }]; 
    } 

Это похоже код работает отлично для этого звука, но и для видео, аудио данного видео не воспроизводится. Большинство контента из iTunes защищены и неэкспортируются, поэтому я хотел протестировать с самодельным быстрым видео, которое я снял с помощью своего iPhone. Я снял видео, перетащил его в iTunes (и сделал его «музыкальным видео», чтобы он отображался правильно и может быть экспортирован в библиотеку моего телефона). Затем я синхронизировал и отправил его на свое устройство для тестирования.

В приложении видео отображается в Media Picker, и я могу экспортировать его без ошибок, которые я вижу. Однако, когда я воспроизвожу его в приложении, он воспроизводит только видео, а не аудио. Другие видео, которые я импортирую из других источников, отлично работают для воспроизведения аудиофайлов видео, поэтому я не думаю, что это сам плеер.

Есть ли что-то, что мне может не хватать здесь, почему звук не попадет на этот вид экспорта из медиа-сборщика? Заранее спасибо за любую помощь по этой проблеме!

ответ

1

Не уверен, что это идеальное решение, но единственным способом, который мы нашли в этом вопросе, было изменение его для форматирования формата m4v с помощью набора PresetPassthrough. I.e:

exportSession = [[AVAssetExportSession alloc] initWithAsset:[AVAsset assetWithURL:assetUrl] presetName:AVAssetExportPresetPassthrough]; 
exportSession.shouldOptimizeForNetworkUse = YES; 
exportSession.outputFileType = AVFileTypeAppleM4V; 
filePath = [title stringByAppendingString:@".m4v"]; 

Звук и видео, кажется, отлично работают для видео, импортированных локально таким образом, после внесения этих изменений.