Операция Swift AVAssetExportSession остановленаIOS

Программируем под IOS
Ответить
Anonymous
 Операция Swift AVAssetExportSession остановлена

Сообщение Anonymous »


Я пытаюсь экспортировать файл .wav из видеофайла, извлеченного из UIImagePickerController

UIImagePickerController.InfoKey.mediaURL

Пример URL-адреса, переданного в функцию:

file:///private/var/mobile/Containers/Data/PluginKitPlugin/BCE1C3A1-AA62-4D89-9487-05E19DB476A7/tmp/trim.3C31A33B-A99E-45B7-9101-5C225CFCFF2B.MOV

Я могу успешно использовать эту функцию для извлечения файла m4a, но не могу заставить ее работать с файлом WAV. Ошибка, которую я получаю при запуске приведенного ниже кода: "Извлечение аудио из WAV завершилось с ошибкой: операция остановлена"


Я не знаю, почему я получаю сообщение об ошибке «Операция остановлена» в файле wav, а не в файле m4a? Альтернатива, которую я попробовал, — это преобразовать m4a в wav постфактум и получить ту же ошибку...
func ExtractAudioAsWAV(from mediaURL: URL) { пусть inputAsset = AVAsset (url: mediaURL) пусть outputFilePath = URL (fileURLWithPath: NSTemporaryDirectory() + «out.wav») пусть audioAsset = inputAsset.tracks(withMediaType: .audio).first если пусть audioAsset = audioAsset { пусть композиция = AVMutableComposition() let audioTrack = Composition.addMutableTrack(withMediaType: .audio,eferredTrackID: kCMPersistentTrackID_Invalid) делать { попробуйте audioTrack?.insertTimeRange(CMTimeRange(start: CMTime.zero, продолжительность: inputAsset.duration), of: audioAsset, at: CMTime.zero) let ExportSession = AVAssetExportSession (актив: композиция, PresetName: AVAssetExportPresetPassthrough) ExportSession?.outputFileType = AVFileType.wav ExportSession?.outputURL = URL(fileURLWithPath: outputFilePath.absoluteString) ExportSession?.exportAsynchronous(completionHandler: { если ExportSession?.status == .completed { print("Извлечение аудио в формат WAV завершено.") } else if let error = ExportSession?.error { print("Извлечение аудио в формате WAV не удалось с ошибкой: \(error.localizedDescription)") } }) } ловить { print("Ошибка: \(error.localizedDescription)") } } } func imagePickerController (_ Picker: UIImagePickerController, DidFinishPickingMediaWithInfo информация: [UIImagePickerController.InfoKey: Any]) { пусть videoURL = info[UIImagePickerController.InfoKey.mediaURL] как? НГУУРЛ self.dismiss(анимация: правда, завершение: ноль) ExtractAudioAsWAV (из: videoURL! как URL-адрес) } func PresentImagePicker() { imagePickerController.sourceType = .photoLibrary imagePickerController.delegate = сам imagePickerController.mediaTypes = ["public.movie"] присутствует (imagePickerController, анимированный: true, завершение: ноль) }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»