LINUX.ORG.RU

Плеер для одновременного просмотра двух видео в PiP-режиме с возможностью сдвига времени

 , , , обучение вождению


0

2

Привет, ЛОР!

Хочется одновременно смотреть два видеофайла в режиме «картинка в картинке» с возможностью совместной перемотки. Оба файла (а конкретно, параллельные записи с двух камер автомобильного видеорегистратора) в теории должны быть синхронизированы между собой, но на практике из-за дефектов записи между ними иногда возникают небольшие, но бесячие рассинхроны.

Раньше я с помощью ffmpeg рендерил из двух видеофайлов один командой вида

ffmpeg -i $file1 -i $file2 -preset slow -sws_flags lanczos $codec -filter_complex \
    "[0:v]scale=1280:1024[main]; [1:v]crop=x=566:y=430:w=1132:h=650[pip]; [pip]scale=w=iw/2.1:h=ih/2.1[pip]; [pip]eq=brightness=0.15[pip]; [main][pip]overlay=W-w:0" \
    $output_file

Но хочется иметь возможность на ходу подстраивать позицию в одном из файлов, если появляется рассинхрон.

Есть ли какое-то готовое решение для моей задачи? Если нет, то можно ли такую штуку реализовать с небольшими трудозатратами на внутренних скриптах какого-нибудь кросс-платформенного плеера вроде vlc или mpv, и если да, то как?

★★★★★

Если честно, я удивлён, что с этой проблемой не сталкивался никто, кроме меня. И ожидал, что сейчас набегут павер-юзеры плееров с охапками скриптов для щекотания носа в процессе перемотки)

Пока решил проблему следующим образом. Регистратор пишет видео кусочками по нескольку минут, и оба потока разбиваются в одни и те же моменты. Я запилил вызов ffmpeg для каждой пары фрагментов отдельно, а потом уже сделал объединение результирующих фрагментов, и от рассинхронов пока удалось избавиться

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

Некоторые производители региков также выпускают плееры для просмотра своих записей, где все это, по идее (у меня под Wine по-быстрому не завелось), уже есть. Парвда, они с закрытыми сырцами и под винду, как правило.

В порядке бреда, можно дописать на Rust сдвиг времени в https://gitlab.gnome.org/YaLTeR/identity – простейшая прога для визуального сравнения видео.

anonymous
()

Есть ли какое-то готовое решение для моей задачи?

То что ты хочешь называется композитинг, а для этого есть софт OBS Studio, который умеет рендерить в виртуальное устройство.

Skullnet ★★★★★
()

По моему проще это сделать на html

Кидаешь index.html в папку с видео:

<body>
  <video width="40%" controls>
    <source src="video1.mp4" type="video/mp4">
  </video>
  <video width="40%" controls>
    <source src="video2.mp4" type="video/mp4">
  </video>
</body>

С помощью какого-нибудь ChatGPT можно сделать синхронное управление. Если еще добавить сервер и логику, то можно сразу из списка файлов генерировать страницы с плеерами.

masa ★★
()