LINUX.ORG.RU

Синхронизировать 2 клипа в mpv

 ,


0

2

Хочу сравнить 2 видео. Для этого можно их запустить в mpv одно над другим:
mpv --lavfi-complex="[vid1][vid2]vstack[vo];[aid1][aid2]amix[ao]" klf.mp4 --external-file=klf.mpg
или
mpv --lavfi-complex="[vid1]scale=640x480[v1s];[v1s][vid2]vstack[vo];[aid1][aid2]amix[ao]" klf.mp4 --external-file=klf.mpg

Но в данном случае оказалось, что в начале klf.mp4 есть 10-секундная заставка. Как синхронизировать видео и аудио из разных файлов? В документации нашёл cue и adelay, но они не срабатывают, и готовых примеров не нашёл. Как задержать запуск 2-го файла на 10 секунд?

Ответ:

  1. Добавить пустой кусок видео можно фильтром tpad. Приостановить звук — adelay, указав паузу для каждой дорожки данного файла, либо с параметром all=1 для всех. Итоговый вариант:
    mpv --lavfi-complex="[vid2]tpad=start_duration=10:start_mode=add:color=black[v2p]; [vid1][v2p]vstack[vo];[aid2]adelay=delays=10s:all=1[a2p]; [aid1][a2p]amix[ao]" klf.mp4 --external-file=klf.mpg --keep-open=yes

  2. Но amix работает криво, и одна из дорожек запаздывает на труднопредсказуемое время. Заданные 10s не соблюдаются, и я не уверен, удастся ли подобрать длительность паузы, чтобы совпадающие были синхронными. В итоге звук пришлось сравнивать в kdenlive.

★★★★★

Последнее исправление: question4 (всего исправлений: 3)

2 видео … запустить в mpv одно над другим

«Ну, барин, ты задачи ставишь!» (c)

Как-то писал, как воспроизводить coub в mpv на лету. Т.е. в ситуации, когда в наличии короткая video и длинная audio. (Базовый коммент по теме coub.)
Но это явно не твой случай.

krasnh ★★★
()
Последнее исправление: krasnh (всего исправлений: 1)
Ответ на: комментарий от Aceler

kdenlive

Никогда не имел с ним дела. Как им пользоваться?

  1. Как сдвинуть дорожку по времени? Только выделить её Shift-click-ом и двигать мышью? Задавать цифры невозможно?

  2. Как запустить одновременное воспроизведение 2 наборов дорожек? Или только монтировать в split screen, как советуют на Реддите? — Нашёл, кнопка Hide/Show на левом конце видеодорожки добавит его в Project Monitor. Это называется «Multitrack view» в контекстном меню, можно переключать по F12.

  3. Как развернуть Project Monitor на весь монитор и свернуть обратно? Только двойным кликом на полях?

  4. Как задавать, на который монитор оно развернётся? Только на крайний левый, без вариантов?

  5. Как разместить видео одно над другим? Сейчас у меня они бок о бок.

question4 ★★★★★
() автор топика
Последнее исправление: question4 (всего исправлений: 1)
Ответ на: комментарий от nvl

sleep 10

Как с помощью sleep задавать десятые доли секунды? — Нашёл, можно задавать дробное число секунд.

Как задавать положение окон плееров при одновременном запуске их из скрипта? Как синхронизировать паузу/воспроизведение/перемотку в 2 плеерах?

question4 ★★★★★
() автор топика
Ответ на: комментарий от anonymous

отрежь ты ту заставку

Ключевые кадры не совпадают. Придётся перекодировать всё видео — долго и добавятся артефакты, для выявления которых всё и затеяно. Либо всё равно придётся подбирать сдвиг.

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

так резка в видеоредакторе тебе ничем не грозит. перекодирует оно только если рендерит в файл. ну или просто сдвинь клип на N-секунд и просматривай оба сразу. в чем проблема ?

anonymous
()
Ответ на: комментарий от dataman
`mpv --lavfi-complex="[vid1]scale=640x480[v1s];[v1s][vid2]vstack[vo];[aid1][aid2]amix[ao]" klf.mp4 --external-file=klf.mpg`

Поправил:

mpv --keep-open=yes --lavfi-complex="[vid1]scale=640x480[v1s];[vid2]scale=640x480[v2s];[v1s][v2s]vstack[vo]" "$1" --external-file="$2" "$@"

Какая разница?
Что даст --keep-open=yes? Только то, что программа не закроется после окончания большего из файлов? Перемотка в обоих случаях неправильно работает после конца меньшего.
И зачем "$@", если других файлов нет?

question4 ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

mpv --lavfi-complex="[vid1]tpad=start_duration=10:start_mode=add:color=black[vid1delayed]; [vid1delayed][vid2]vstack[vo];[aid1][aid2]amix[ao]" klf.mp4 --external-file=klf.mpg

https://ffmpeg.org/ffmpeg-filters.html#toc-tpad

Спасибо!

Я до этого места мануала ещё не дошёл, пытался что-то сделать через cue.

Только там ещё надо звук замедлить, окончательный вариант такой:

mpv --lavfi-complex="[vid1]tpad=start_duration=10:start_mode=add:color=black[vid1delayed]; [vid1delayed][vid2]vstack[vo];[aid1]adelay=delays=10s:all=1[a1delayed];[a1delayed][aid2]amix[ao]" klf.mp4 --external-file=klf.mpg

И там время, похоже, не очень хорошо соблюдается.

question4 ★★★★★
() автор топика
Ответ на: комментарий от dataman

Я правильно понимаю, что звук будет воспроизводиться только из первого файла? Меня это не устраивает :)

Можно проигрывать файлы, различающиеся длительностью/размерностью.

Пока есть оба файла, всё и без этого работает нормально. Когда кончается короткий, в обоих случаях неправильно работает перемотка.

question4 ★★★★★
() автор топика
Последнее исправление: question4 (всего исправлений: 1)
Ответ на: комментарий от question4

надо звук замедлить

А, точно. Забыл.

И там время, похоже, не очень хорошо соблюдается.

Работа со временем вообще, похоже, слабое место. У меня как-то появился файл, который начинался с -7 секунд. Так на нём скроллинг по времени вперёд на самом деле скроллит назад. То есть я давлю кнопку вправо, а метки времени уменьшаются.

i-rinat ★★★★★
()
Ответ на: комментарий от Aceler

kdenlive

В итоге единственная существенная претензия — невозможность в Project Monitor-е поставить 2 видео одно над другим. Звук обрабатывает корректнее, чем в mpv. Спасибо.

question4 ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

Работа со временем вообще, похоже, слабое место. У меня как-то появился файл, который начинался с -7 секунд. Так на нём скроллинг по времени вперёд на самом деле скроллит назад. То есть я давлю кнопку вправо, а метки времени уменьшаются.

:)

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

Меня это не устраивает

А меня устроило, потому что оба файла были без звука. :)

Пока есть оба файла, всё и без этого работает нормально.

Нет:

[ffmpeg] Parsed_vstack_1: Input 1 width 270 does not match input 0 width 640.


А вообще я мимокрокодил – увидел полезный код и взял на заметку, подшаманив. :)

dataman ★★★★
()
Ответ на: комментарий от dataman

[ffmpeg] Parsed_vstack_1: Input 1 width 270 does not match input 0 width 640.

Похоже, откуда-то добавляются новые файлы, которые не прогоняются через scale. Не "$@" ли в этом виноват?

question4 ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Ты вообще понимаешь, о чём речь? :)

https://docs.kdenlive.org/en/user_interface/monitors.html#multitrack-view

Окно заполняется слева направо, затем сверху вниз. Если видео всего 2, V1 слева, V2 справа. Мне нужно было сверху вниз, затем слева направо — V1 сверху, V2 снизу.

question4 ★★★★★
() автор топика