Смотрите многопотоковый видеофайл во время записи ffmpeg - PullRequest
0 голосов
/ 18 января 2020

Я использую ffmpeg для одновременной записи четырех видеопотоков 1080p, и я хотел бы просматривать эти потоки в режиме реального времени, пока они записываются. В идеале я хотел бы просмотреть их с отдельного компьютера, используя какой-нибудь удобный Linux метод обмена данными, например, ssh / sshfs / ..., но это приятно иметь. Есть ли практический способ выполнить sh это?

Команда записи ffmpeg, которую я сейчас использую, выглядит следующим образом:

ffmpeg \
  -f v4l2 -i $cam0 \
  -f v4l2 -i $cam1 \
  -f v4l2 -i $cam2 \
  -f v4l2 -i $cam3 \
  -f matroska \
  -map 0 \
  -map 1 \
  -map 2 \
  -map 3 \
  -c copy \
  $output.mkv

Моя проблема была бы решена, если бы я мог использовать команду например, ffplay или vlc для воспроизведения одного или нескольких видеопотоков, всегда отслеживая ближе к концу потока, воспроизводя больше, когда данные становятся доступными. Однако я не нашел такой возможности.

Одной из альтернатив может быть то, что процесс записи ffmpeg также объединяет четыре видео 1080p в одну сетку 4K и передает их в ffplay. Тогда я мог бы по крайней мере просмотреть на той же машине, что записывает. Я не смог отработать правильную команду ffmpeg для выполнения тайлинга и был бы признателен за пример.

1 Ответ

1 голос
/ 20 января 2020

Это может быть сделано с выводом контейнера TS.

ffmpeg \
  -f v4l2 -i $cam0 \
  -f v4l2 -i $cam1 \
  -f v4l2 -i $cam2 \
  -f v4l2 -i $cam3 \
  -f mpegts \
  -map 0 \
  -map 1 \
  -map 2 \
  -map 3 \
  -c copy \
  $output.ts

и для мониторинга,

ffmpeg -sseof -3 -i $output.ts -map 0:v:0 -f sdl2 -

Это попытается выполнить поиск в 3 секундах от конца файла на основе записанная длительность в то время, когда ffmpeg анализирует файл и отображает первый поток. Ожидайте некоторую задержку перед воспроизведением, так как ffmpeg ожидает ключевой кадр.

Чтобы объединить все четыре потока, вы бы добавили фильтры стека, такие как xstack.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...