Я пытаюсь создать цифровую видео обратную связь oop между двумя компьютерами.
Под этим я подразумеваю следующее:
Я попытался использовать несколько комбинаций протоколов и форматов видео и выяснил это это самое близкое, что я могу получить. Первоначальное видео было "mov", но мне пришлось преобразовать его в .ts, чтобы зайти так далеко, у меня были другие проблемы при использовании mov или mp4.
Я запускал команды в этом порядке, чтобы убедиться, что tcp прослушиватели работали до клиентов.
на локальном компьютере
# Command 1: Temporary attempt to capture output of loop
ffmpeg -i 'udp://0.0.0.0:6002?listen&overrun_nonfatal=1' -c copy out.ts
# Command 2: Receives stream from remote host and forwards back to beginning of loop
ffmpeg -i tcp://0.0.0.0:6001?listen -f mpegts udp://localhost:6002
на удаленном компьютере
# Command 3: Receives stream from local host and returns stream to another ffmpeg instance
ffmpeg -i tcp://0.0.0.0:6000?listen -f mpegts tcp://<local.ip>:6001
на локальном компьютере
# Command 4: Sends stream to remote host
ffmpeg -re -i in.ts -f mpegts tcp://<remote.ip>:6000
Приведенные выше шаги не совсем завершают обратную связь l oop, но они приводят к успешному видео out.ts
Затем я попытался изменить Команду 4, чтобы она могла объединить как файл, так и файл. поток udp, это наивная попытка, я знаю, я не очень хорошо разбираюсь в ffmpeg.
ffmpeg \
-re -i in.ts -i udp://0.0.0.0:6002 \
-filter_complex " \
[0:v]setpts=PTS-STARTPTS, scale=540x960[top]; \
[1:v]setpts=PTS-STARTPTS, scale=540x960, \
format=yuva420p,colorchannelmixer=aa=0.5[bottom]; \
[top][bottom]overlay=shortest=1" \
-f mpegts tcp://<remote.ip>:6000
В результате команда зависла в ожидании данных на порту udp, что имеет смысл задним числом .
Я хотел бы знать:
- Можно ли это вообще сделать? Если да, что мне нужно изменить?
- Нужно ли мне отказаться от ffmpeg для этой задачи и заняться чем-то другим?
Если вы спрашиваете, зачем мне это делать ответ: нет другой причины, кроме как мне любопытно узнать, возможно ли это и какие результаты это даст.