Синхронизация видео и звука

надо сделать тайм стретч (time stretch) новой аудио дороги под длительность старой

да, проще всего, но есть неиллюзорный шанс, что рассинхрон останется, если новая версия фильма не просто в «астрономических» единицах короче или длиннее, а на этапе ремастеринга что-то ещё меняли, а не только частоту кадров
 
  • Like
Реакции: dugdum®
@alexey_ko в этом случае надо сделать тайм стретч (time stretch) новой аудио дороги под длительность старой и вставить её в видео.
это в любом аудио редакторе есть или DAW.
Да, наверное. Может Вы или кто иной может подсказать наиболее просто и дружелюбный для новичка редактор (не пользуюсь ими), где можно стретчить/ растягивать/стягивать аудиодорогу, исходя из частоты кадров видео, в которое планируется эту аудиодорогу, вставлять.
 
@alexey_ko, https://mediaarea.net/en/MediaInfo

скиньте, плз, скрины каждого задействованного файла (то есть исходный файл с русской дорожкой и файл без русской дорожки, сами видео, не аудио отдельно)
Прикрепляю скрины.
Прогу REAPER (x64) скачал, если не затруднит, то что там надо настроить для корректной конвертации?
 

Вложения

@alexey_ko, кидаете на одну дорожку видео (там можно смотреть видео как в монтажке), на вторую аудио, аудио тянете с зажатой кнопкой ALT (по моему на винде так, нет под рукой сейчас) за правый край, до совпадения с первой

потом экспорт через ctrl-alr-R в формат WAV 16 бит 48000 килогерц (надо будет отключить первую дорожку, с видео, и выделить участок для экспорта)

чтобы не считать полтора часа каждый раз, потренируйтесь на коротком видосике каком-нибудь)
 
@alexey_ko, кидаете на одну дорожку видео (там можно смотреть видео как в монтажке), на вторую аудио, аудио тянете с зажатой кнопкой ALT (по моему на винде так, нет под рукой сейчас) за правый край, до совпадения с первой

потом экспорт через ctrl-alr-R в формат WAV 16 бит 48000 килогерц (надо будет отключить первую дорожку, с видео, и выделить участок для экспорта)

чтобы не считать полтора часа каждый раз, потренируйтесь на коротком видосике каком-нибудь)
Ну вот наверное я что-то делаю не так. В итоге звук исказился до невоспринимаемого. :) Он слишком замедлился что ли.
Что делал: установил прогу, закинул в нее видеофайл, закинул рядом аудиодорогу (нижняя полоска) на прикрепленном скрине. На скрине видно, что аудиодорога длиннее видео. Как гармошку, зажав Alt, сжал аудиодорогу до размера видео (верхняя полоса). Точно-точно совместить не получилось, курсор при сжатии никак не хочет становиться вровень в видеодорогой. Но, допустим огреха не велика. Далее, я удалил верхню дорожку (видео), в итоге осталась только сжатая аудиодорога, потом экспорт через ctrl-alr-R в формат WAV 16 бит 48000 килогерц. В результате получился аудиофайл формата WAV почти нужной длины, но аж более чем на 900 МБ, что конечно великовато для аудиодороги. Далее, используя MKVToolNix GUI, я прикрутил новополученную аудиодорогу к видео без русской озвучки. Результат см. выше, звук стал искаженным, невоспринимаемым.
 

Вложения

  • ужимание.jpg
    ужимание.jpg
    279,6 KB · Просмотры: 13
Ну собственно и издания чуть-чуть отличаются по времени т.к. есть небольшая, но разница в кадрах в секунду в видео.
...шла вторая страница профессионального обсуждения )
Если кадры _в секунду_ как оно может отличаться по времени? А если отличается то мож это действительно другое издание, и разбираться в причинах бесполезно, надо руками править. тайм стретч в любом случае будет давать ухудшение качества +-
 
Попробовал метод через Adobe Premiere Pro
Тоже неуспех - звук неразбираемый, всё шипит как старый радиоприемник.

Adobe Premiere Pro



  1. Импортируй оба файла.
  2. Создай новую последовательность (Sequence) с параметрами 24 fps (можно просто кинуть 24 fps видео на таймлайн).
  3. Перетащи видео с 24 fps на таймлайн.
  4. Перетащи второе видео (23.976 fps) и оставь только аудиодорожку:
    • Разъедини аудио и видео (Right Click > Unlink), удали видео-часть.
  5. Выдели аудиоклип → Right Click > Speed/Duration....
    • Введи Speed: 100.1001% — это компенсирует расхождение в fps.
  6. Убедись, что длина аудио совпадает с видео.
  7. Экспортируй как обычный файл (Ctrl+M).
 
...шла вторая страница профессионального обсуждения )
Если кадры _в секунду_ как оно может отличаться по времени? А если отличается то мож это действительно другое издание, и разбираться в причинах бесполезно, надо руками править. тайм стретч в любом случае будет давать ухудшение качества +-
Если один и тот же фильм с заданной продолжительностью переведен в один видео файл с одними кадрами в секунду и в другой видео файл, но уже с иными кадрами в секунду, то конечно продолжительность этих файлов будет разная. Это нормально, такая проблема сплошь и рядом. Все ёё как-то решают, посмотрите на любой трекер. Но для меня это пока что-то непреодолимое :)
 
@alexey_ko, если в вашем случае это проблемы _перевода_ то тайм стрейч должен помочь. Если не помог, то собс-но какие варианты?
 
Вижу, чтоб была яснее суть чуть поясню на конкретном жизненном примере:
- Вот у меня есть кино с русской аудиодорожкой.
- Вот выходит новое издание фильма, допустим некая реставрация картинки и т.п. уже без русской дороги.
- Беру русскую дорогу от старого издания и прикручиваю к новому. Это делаю без проблем через MKVToolNix GUI
- По факту получается набегающий рассинхрон (т.е. по началу просмотра терпимо, а к концу фильма набегает уже секунд 5 отставания или обгона). Ну собственно и издания чуть-чуть отличаются по времени т.к. есть небольшая, но разница в кадрах в секунду в видео.
Каких-то настроек в MKVToolNix GUI для устранения рассинхрона звука в MKVToolNix GUI не вижу. Перекодировать само видео точно нет желания, это как я пронимаю, вообще отдельная и страшно сложная тема, для этого на всяких форумах целые команды существуют, Мне, скорее всего, надо просто ускорить или замедлить звук с учетом кадров/сек того видео, куда я хочу его вставить. А потом уже эту поправленную аудиодорожку прикрутить к нужному файлу.

Вот, если прям в лоб, то попробовал FFmpeg, но застопорился на шаге - "просто запустить ffmpeg.exe из этой папки вручную." Просто мелькает какое-то окно и сразу закрывается. Антивирус отключен. Конечно, я явно делаю что-то не так, но вот пока не могу понять что.
Другие варианты пока не пробовал.
продолжу с джипити))

Да, теперь стало совсем понятно. Человек описывает классическую задачу синхронизации аудио с видео при замене изданий фильма, когда частота кадров отличается (например, 23.976 → 24 fps), и к концу фильма звук начинает опережать или отставать. Всё логично и типично, и решается без танцев с бубном. Давай соберём всю инфу в понятную инструкцию.




Что надо сделать:​


  1. Узнать FPS нового видео и старого видео/аудио.
  2. Ускорить или замедлить аудиодорожку, чтобы она точно совпадала по длине с видео.
  3. Собрать новое MKV, прикрутив обновлённую аудиодорожку к новому видео — через MKVToolNix (это у него уже получается).



✅ Простая и рабочая схема: «без магии, без Adobe, без кодирования видео»​




1. Положи всё в одну папку​


Пусть в ней будет:


  • ffmpeg.exe и нужные .dll (если не хочешь переменные среды)
  • old_audio.mka — старая русская дорожка (например, с 23.976 fps)
  • new_video.mkv — новое видео (например, с 24 fps)
  • audio_fixed.mka — будет выходной файл



2. Посчитай коэффициент скорости​


Если у тебя:


  • Старое видео/аудио: 23.976 fps
  • Новое видео: 24 fps

Тогда:


Код:
speed = 24 / 23.976 ≈ 1.001001


Нужно ускорить звук на 0.1%, чтобы он стал короче и совпадал по таймингу с новым видео.




⚙️ 3. Команда FFmpeg для изменения длительности аудио​


Вот простая команда:


Код:
ffmpeg -i old_audio.mka -filter:a "atempo=1.001" -c:a flac audio_fixed.mka



  • -filter:a "atempo=1.001" — ускоряем аудио на 0.1%
  • -c:a flac — кодируем в FLAC (без потерь, MKVToolNix прекрасно работает с ним)

⚠️ Если FFmpeg окно просто мелькает и закрывается — значит, ты его не запускаешь из консоли, а просто дважды кликаешь. Так не работает.




✅ Как правильно запускать FFmpeg:​


Вариант 1 — вручную:​


  1. Нажми Win + R → напиши cmd → откроется чёрное окно (Командная строка)
  2. Перейди в папку, где лежит ffmpeg.exe и файл:

    Код:
    cd C:\Users\ТВОЙ_ПУТЬ\Downloads\FFmpeg
  3. Выполни команду выше



Вариант 2 — .bat-файл​


Создай текстовый файл рядом с FFmpeg, назови его, например, fix_audio.bat, и вставь туда:


Код:
@echo off
ffmpeg.exe -i old_audio.mka -filter:a "atempo=1.001" -c:a flac audio_fixed.mka
pause



Теперь дважды кликай по fix_audio.bat — окно не закроется, и ты увидишь, что делает FFmpeg.




4. Добавление в MKV через MKVToolNix​


Когда у тебя будет audio_fixed.mka:


  1. Открой MKVToolNix GUI
  2. Перетащи туда:
    • new_video.mkv
    • audio_fixed.mka
  3. Удали ненужные дорожки, если есть
  4. Нажми "Start Multiplexing"
  5. Готово ✅



Результат​


Теперь ты получаешь:


  • Новое видео (например, 24 fps)
  • Старый, но синхронизированный русский звук
  • Без перекодирования видео
  • Без Adobe Premiere
  • Без глюков

Инструкция: как собрать папку для синхронизации аудио​


1. Создай папку, например ffmpeg_sync​


В ней будут такие файлы:


  • ffmpeg.exe
  • .dll-файлы (обычно: avcodec-*.dll, avformat-*.dll, avutil-*.dll, и т.д.)
  • fix_audio.bat — см. ниже



2. Скопируй этот код в блокнот → сохрани как fix_audio.bat:​


Код:
@echo off
echo ==== УСИЛЕНИЕ СИНХРОНИЗАЦИИ АУДИО ====
echo.
echo Вставляемая аудиодорожка должна называться: old_audio.mka
echo Результат будет: audio_fixed.mka (ускорено под 24fps)
echo.
ffmpeg.exe -i old_audio.mka -filter:a "atempo=1.001" -c:a flac audio_fixed.mka
echo.
echo Готово! Нажмите любую клавишу...
pause




3. Скачай FFmpeg отсюда:​


  1. Перейди по ссылке: https://www.gyan.dev/ffmpeg/builds/
  2. Скачай "essentials build" (.zip)
  3. Распакуй, зайди в папку bin, оттуда скопируй:
    • ffmpeg.exe
    • и все .dll файлы рядом

Положи всё это в свою папку ffmpeg_sync.




✅ 4. Как пользоваться​


  1. Положи в эту же папку файл: old_audio.mka — ту самую старую аудиодорожку
  2. Дважды щёлкни fix_audio.bat
  3. Через минуту появится audio_fixed.mka
  4. Вставляй в MKVToolNix — готово!

Отлично! У тебя есть архив ffmpeg-git-full.7z — это полная сборка FFmpeg от Gyan.dev, содержащая все необходимые компоненты для работы. Давай пошагово разберём, как её использовать для синхронизации аудио.
Если в архиве ffmpeg-git-full.7z действительно нет .dll-файлов, значит ты скачал статическую сборку, в которой FFmpeg уже скомпилирован так, что всё встроено внутрь ffmpeg.exe — и никаких дополнительных .dll не нужно. Это нормально и даже удобно.




✅ Что это значит для тебя:​


Ты можешь просто использовать один файл ffmpeg.exe — всё будет работать!


Как собрать рабочую папку (простой способ):​


  1. Распакуй ffmpeg-git-full.7z
  2. Перейди в папку bin
  3. Оттуда скопируй:
    • ffmpeg.exe
  4. Создай папку, например audio_sync
  5. Помести туда:
    • ffmpeg.exe
    • Свою аудиодорожку: old_audio.mka
    • И текстовый файл с таким содержанием:

Сохрани это как fix_audio.bat:

Код:
@echo off
echo ==== СИНХРОНИЗАЦИЯ АУДИО ПОД 24 FPS ====
ffmpeg.exe -i old_audio.mka -filter:a "atempo=1.001" -c:a flac audio_fixed.mka
echo Готово! Проверь файл audio_fixed.mka
pause

Как использовать:​


  1. Положи в эту папку свою old_audio.mka
  2. Дважды щёлкни fix_audio.bat
  3. Через несколько секунд появится audio_fixed.mka
  4. Закидывай его в MKVToolNix GUI — и всё готово!
 
  • Like
Реакции: alexey_ko
ёё как-то решают, посмотрите на любой трекер
Решают перетягиванием аудио дорожки (извлекая её предварительно) под фреймрейт видео, без сохранения тональности, поскольку если перетягивать с сохранением оной, появляются артефакты, а где-то и вовсе звук портится.
 
"просто запустить ffmpeg.exe из этой папки вручную." Просто мелькает какое-то окно и сразу закрывается.
не надо его запускать или устанавливать, если сделать, как я описал в посте. 16
А далее уже менять код в батнике на нужный и менять аудио в папке на нужное. Либо использовать универсальный батник

можно сделать универсальный .bat-файл, который будет лежать рядом с ffmpeg.exe и выполнять нужное ускорение/замедление аудио — достаточно ввести нужный коэффициент или выбрать один из готовых вариантов.

Вариант 1 — Универсальный батник с выбором​


Вот пример .bat-файла, в котором можно выбрать тип конвертации по числу кадров в секунду:

Код:
@echo off
echo ==== СИНХРОНИЗАЦИЯ АУДИО ====
echo.
echo Файл должен называться: old_audio.mka
echo.

echo Выберите вариант пересчёта кадров (fps):
echo 1 - 23.976 --> 24        (ускорить)
echo 2 - 24 --> 23.976        (замедлить)
echo 3 - 24 --> 25            (ускорить)
echo 4 - 25 --> 24            (замедлить)
echo 5 - Ввести свой коэффициент вручную
set /p choice=Ваш выбор:

if "%choice%"=="1" set rate=1.001
if "%choice%"=="2" set rate=0.999
if "%choice%"=="3" set rate=1.0416667
if "%choice%"=="4" set rate=0.96
if "%choice%"=="5" (
    set /p rate=Введите коэффициент вручную (например, 1.0416667):
)

echo.
echo Применяется коэффициент: %rate%
echo.

ffmpeg.exe -i old_audio.mka -filter:a "atempo=%rate%" -c:a flac audio_fixed.mka

echo.
echo === Готово! Файл: audio_fixed.mka
pause

Что делает этот скрипт:​


Откуда → КудаКоэффициентКомментарий
23.976 → 241.001слегка ускоряет
24 → 23.9760.999слегка замедляет
24 → 251.0416667заметно ускоряет
25 → 240.96замедляет
Свой вариантможно ввести любое число

Как использовать:​


  1. Положи в папку:
    • ffmpeg.exe
    • .bat-файл (например, audio_sync.bat)
    • свою дорожку: old_audio.mka
  2. Запусти .bat
  3. Выбери нужный режим
  4. Получишь audio_fixed.mka
Вот как выбрать нужный режим в универсальном .bat-файле, если ты пользуешься вот этим вариантом с меню:

Код:
echo Выберите вариант пересчёта кадров (fps):
echo 1 - 23.976 --> 24        (ускорить)
echo 2 - 24 --> 23.976        (замедлить)
echo 3 - 24 --> 25            (ускорить)
echo 4 - 25 --> 24            (замедлить)
echo 5 - Ввести свой коэффициент вручную
set /p choice=Ваш выбор:

Как выбрать:​


Когда ты запускаешь батник (просто дважды щёлкаешь .bat), появится вот такое текстовое меню в чёрном окне (командной строке):


Код:
Выберите вариант пересчёта кадров (fps):
1 - 23.976 --> 24        (ускорить)
2 - 24 --> 23.976        (замедлить)
3 - 24 --> 25            (ускорить)
4 - 25 --> 24            (замедлить)
5 - Ввести свой коэффициент вручную
Ваш выбор:

Тут ты просто вводишь нужную цифру от 1 до 5:


Например:​


  • Нажал 1 и Enter — будет применён atempo=1.001
  • Нажал 2 и Enter — будет atempo=0.999
  • Нажал 5 — сам введёшь любое значение, например 1.042

Пример:​


Ты хочешь конвертировать из 23.976 fps → 24 fps, это пункт 1.


Значит ты:


  1. Дважды кликаешь по .bat-файлу.
  2. Видишь вот такое меню:
Код:
Выберите вариант пересчёта кадров (fps):
1 - 23.976 --> 24        (ускорить)
2 - 24 --> 23.976        (замедлить)
3 - 24 --> 25            (ускорить)
4 - 25 --> 24            (замедлить)
5 - Ввести свой коэффициент вручную
Ваш выбор:

  • Печатаешь 1
  • Нажимаешь Enter
  • Начинается обработка аудио
  • В папке появляется audio_fixed.mka
 
  • Like
Реакции: alexey_ko
...сталкивался и сталкиваюсь ежедневно, нет, не будет. Алгоритмы пересчёта фреймрейта давно не изменяют длительность
Камрады - а вот как так? Ну т.е. есть у нас частота кадров 23,9 например, т.е. условно 239 кадров на 10 сек.
И мы сделали 25 кадров/сек например, получится же примерно 9,*** секунд? или я что-то теоретически не понимаю? Там как-то по другому?
 
Ещё метод для ускорения аудиодорожки от видео с 23,976 к/с для видео с 24 к/с без изменения качества звучания: каждые 5-10 секунд (может и реже, зависит от требуемой степени синхронности) из исходного аудио вырезаются небольшые фрагменты (в незаметных местах - на шумах, на паузах в музыке).
 
@VR.j, может быть хоть один, хоть сто кадров в секунду, секунда всё равно останется секундой.
 
  • Like
Реакции: VR.j
Граждане!!! Родные вы мои, вы лучшие! У меня всё получилось! Громадное спасибо вам всем за помощь, отзывчивость и искреннее желание помочь!!!
Отдельное громадное спасибо глубокоуважаемому Bavar`у и его чату GPT именно его способ помог и оказался совсем несложным! Вы замечательный и просто хороший человек. Именно на таких как Вы держатся целые сообщества в этих ваших интернетах. Спасибо!

Остался один, скорее всего несложный вопрос - при использовании метода с ffmpeg.exe используется команда:
ffmpeg.exe -i old_audio.mka -filter:a "atempo=1.001" -c:a flac audio_fixed.mka<br>
в итоге конвертируемая дорожка, которая в оригинале весит 116 МБ после конвертации становится весом примерно 800 МБ (что конечно многовато). Полагаю, это из-за того, что она конвертируется во FLAC. Возможна ли такая конвертация, чтоб при этом качество звука и размер оставались примерно похожими на оригинал?
 
  • Like
Реакции: Bavar
ffmpeg.exe -i old_audio.mka -filter:a "atempo=1.001" -c:a aac -b:a 192k audio_fixed.mka
битрейт можно менять.

Код:
@echo off
title Синхронизация аудио через FFmpeg (с сжатием в AAC)
echo ==== СИНХРОНИЗАЦИЯ АУДИО ====
echo.
echo Помести файл аудио в эту папку с именем: old_audio.mka
echo Результат будет сохранён как: audio_fixed.mka
echo.

echo Выберите вариант пересчёта кадров (fps):
echo.
echo 1 - 23.976 --> 24        (ускорить)
echo 2 - 24 --> 23.976        (замедлить)
echo 3 - 24 --> 25            (ускорить)
echo 4 - 25 --> 24            (замедлить)
echo 5 - Ввести коэффициент вручную
echo.
set /p choice=Ваш выбор:

if "%choice%"=="1" set rate=1.001
if "%choice%"=="2" set rate=0.999
if "%choice%"=="3" set rate=1.0416667
if "%choice%"=="4" set rate=0.96
if "%choice%"=="5" (
    set /p rate=Введите коэффициент вручную (например, 1.0416667):
)

echo.
echo Применяется коэффициент: %rate%
echo Кодек: AAC / 128 kbps
echo.

ffmpeg.exe -i old_audio.mka -filter:a "atempo=%rate%" -c:a aac -b:a 128k audio_fixed.mka

echo.
echo === Готово! Лёгкий файл сохранён как: audio_fixed.mka
pause

Если хочешь чуть выше качество, можно поменять -b:a 128k на 192k, 256k и т.д.
 
  • Like
Реакции: alexey_ko

Сейчас просматривают