Moviepy представляет странные звуковые артефакты в конце аудиофайлов при создании видео с помощью Python. Почему?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Moviepy представляет странные звуковые артефакты в конце аудиофайлов при создании видео с помощью Python. Почему?

Сообщение Anonymous »

Их нет в исходных аудиофайлах. Они каким-то образом добавляются в конец в процессе создания видео. На этом снимке экрана показано сравнение сигналов до и после:
Изображение

Что еще более странно, артефакты ЗВУЧАТ как рассказчик. Как будто начинается следующее предложение, и он только начинает произносить первые 0,1 секунды первого слова, которое затем резко обрывается. Однако это не имеет особого смысла в качестве объяснения, поскольку весь этот код — это берет один аудиофайл и накладывает на него видеоэлементы.
Хотя есть еще кое-что к моему коду, вот соответствующие разделы:

Код: Выделить всё

    current_audio_file = os.path.join(current_video_folder_path, f'{current_video_title_template}-part-{current_video_section}.mp3')
audio_clip = AudioFileClip(current_audio_file)
final_clip = concatenate_videoclips(clips).subclip(0, audio_clip.duration)
final_clip = final_clip.set_audio(audio_clip)
final_clip_path = os.path.join(current_video_folder_path, f"video-part-{current_video_section}.mp4")

final_clip.write_videofile(final_clip_path, codec="libx264", audio_codec="aac")
Я попробовал переключить аудиокодек на другой. Никакой разницы. На самом деле он представил буквально идентичный звуковой артефакт — не уникальный в том же месте, это был буквально идентичный звук.
Моя нынешняя лучшая идея — это плохое, но функциональное обходное решение. : Просто вырежьте последние 0,2 секунды с конца каждого аудиофайла. Я сделал это здесь, как показано ниже, и это помогло устранить артефакт. Судя по всему, это указывает на то, что он может быть сгенерирован в процессе преобразования в элемент AudioFileClip()?

Код: Выделить всё

    current_audio_file = os.path.join(current_video_folder_path, f'{current_video_title_template}-part-{current_video_section}.mp3')
audio_clip = AudioFileClip(current_audio_file)

# Trim the last 0.X seconds from the audio
# this is a poor, but functional, workaround to remove those weird artifacts at end of certain audio clips.
audio_duration = audio_clip.duration
audio_clip = audio_clip.subclip(0, max(0, audio_duration - 0.2))
Я запустил это для отладки, и это само по себе привело к возникновению звукового артефакта:

Код: Выделить всё

current_audio_file = os.path.join(current_video_folder_path, f'{current_video_title_template}-part-{current_video_section}.mp3')
audio_clip = AudioFileClip(current_audio_file)

# Export the trimmed audio for inspection
debug_audio_path = os.path.join(current_video_folder_path, f'debug_{current_video_section}.mp3')
audio_clip.write_audiofile(debug_audio_path)

exit()
Также попробовал преобразовать его в аудиофайл WAV и использовать его в качестве входных данных, а затем экспортировать как аудиофайл WAV — та же проблема с артефактом в конце.
p>
В любом случае, если кто-нибудь сталкивался с этим раньше или у него есть идеи, мне было бы любопытно.

Подробнее здесь: https://stackoverflow.com/questions/778 ... creating-v
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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