Не удалось экспортировать аудио, возможно, из-за того, что вы указали битрейт> два выше или ниже для видеокодека

Иногда я получаю следующую ошибку при попытке записи аудиофайла m4a (aac) в видео с помощью write_videofile с библиотекой кино. Я не могу выделить, что именно вызывает эту ошибку, потому что это происходит редко. Я попытался указать разные битрейты аудио, но это все еще вызывает исключение.

video = video.set_audio(AudioFileClip("asdf.m4a"))
video.write_videofile("video.mp4", fps=FPS, codec='libx264', audio_codec="aac", temp_audiofile='temp-audio.m4a', remove_temp=True, audio_bitrate="256k")

[Errno 32] Ошибка MoviePy сломанной трубы: FFMPEG обнаружил следующую ошибку при записи файла temp-audio.m4a:

temp-audio.m4a: в доступе отказано

Не удалось экспортировать аудио, возможно, потому что битрейт, который вы указали, был два высоких или слишком низких для видеокодека: IOError Traceback (последний вызов был последним):

video.write_videofile ("video.mp4", fps = FPS, codec = 'libx264', audio_codec = "aac", temp_audiofile = 'temp-audio.m4a', remove_temp = True, audio_bitrate = "256k")

Файл "", строка 2, в файле write_videofile "/var/task/moviepy/decorators.py", строка 54, в require_duration, возвращает f(clip, *a, **k)

Файл "", строка 2, в файле write_videofile "/var/task/moviepy/decorators.py", строка 137, в файле use_clip_fps_by_default возвращает файл f(clip, *new_a, **new_kw) "", строка 2, в файле write_videofile "/var/task/moviepy/decorators.py", строка 22, в convert_masks_to_RGB возвращает f(clip, *a, **k)

Файл "/var/task/moviepy/video/VideoClip.py", строка 331, в файле write_videofile verbose=verbose) Файл "", строка 2, в файле write_audiofile "/var/task/moviepy/decorators.py", строка 54, в require_duration вернуть f(clip, *a, **k) файл "/var/task/moviepy/audio/AudioClip.py", строка 204, в файле write_audiofile verbose=verbose, ffmpeg_params=ffmpeg_params), файл "", строка 2, в файле ffmpeg_audiowrite "/var/task/moviepy/decorators.py", строка 54, в файле require_duration возвращаем файл f(clip, *a, **k) "/var/task/moviepy/audio/io/ffmpeg_audiowriter.py", строка 162, в файле ffmpeg_audiowrite writer.write_frames(chunk)" /var/task/moviepy/audio/io/ffmpeg_audiowriter.py ", строка 122, в write_frames вызывает ошибку IOError(ошибка)

IOError: [Errno 32] Ошибка MoviePy разбитого канала: FFMPEG обнаружил следующую ошибку при записи файла temp-audio.m4a: temp-audio.m4a: Разрешение отклонено Не удалось выполнить экспорт звука, возможно, из-за того, что заданная вами скорость передачи данных была высокой или слишком низкой для видеокодека.

2 ответа

Решение

Проблема заключалась в том, что я запускал этот скрипт на экземпляре AWS Lambda. Все мои файлы должны были быть написаны /tmp как указано в документации AWS Lambda. Однажды все мои временные файлы были записаны в указанный каталог; FFMpeg больше не вызывает исключение.

Чтобы привести пример, это выглядело так:

vid_path = "/tmp/outputvideofile.mp4"
audio_path = "/tmp/myaudiofile.mp3"
finalclip.write_videofile(vid_path,fps=15, temp_audiofile=audio_path, remove_temp=True)
Другие вопросы по тегам