Синхронизация видео и звука (1 онлайн

надо сделать тайм стретч (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 · Просмотры: 14
Ну собственно и издания чуть-чуть отличаются по времени т.к. есть небольшая, но разница в кадрах в секунду в видео.
...шла вторая страница профессионального обсуждения )
Если кадры _в секунду_ как оно может отличаться по времени? А если отличается то мож это действительно другое издание, и разбираться в причинах бесполезно, надо руками править. тайм стретч в любом случае будет давать ухудшение качества +-
 
Попробовал метод через 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

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

  • VR.j