предположим, что у меня есть видео, и я использую фильтр для их обрезки, скажем, шириной 1/2 и 1/2 до 2 выходных потоков rtmp.
Теперь 2 клиента подпишутся на этот поток, скажем,
vlc1 - поток 1 | vlc2 - поток 2
как я могу синхронизировать их для одновременного воспроизведения (я всегда вижу, что 1 клиент играет быстрее или медленнее, чем другой)
Вот код
ffmpeg -re -stream_loop -1 -i sample.mp4 \
-filter:v "crop=in_w/2:in_h:0:0" -c:a copy -f flv rtmp://localhost/live/1 \
-filter:v "crop=in_w/2:in_h:in_w/2:0" -c:a copy -f flv rtmp://localhost/live/2
Попался1
Выяснилось, что проблема была в stream_l oop, и с каждой итерацией и фильтром он вызывает некоторую задержку.
С этого момента единственное решение, работающее для меня, -
- Воспроизведение исходного файла (с l oop) и вывод в поток rtmp
- Создайте 2 потока, которые читают исходный поток, выполняют обрезку и затем выводят 2 потока rtmp
ffmpeg -i rtmp://localhost/live/feed -filter:v crop=in_w/2:in_h:0:0 -c:a copy -f flv rtmp://localhost/live/1
ffmpeg -i rtmp://localhost/live/feed -filter:v crop=in_w/2:in_h:in_w/2:0 -c:a copy -f flv rtmp://localhost/live/2