По сути, я хотел бы, чтобы ffmpeg непрерывно передавал поток на RTMP-сервер с использованием пустого канала, а затем, когда я хочу что-то передавать, добавляю данные в канал.

Мои причины для этого состоят в том, что я пишу видео из внешнего источника. Всякий раз, когда видео заканчивается, ffmpeg падает, потому что он не получает данных, и я должен открыть его снова.

Это возможно? Если нет, есть ли другой способ обойти это?

Моя текущая команда:

ffmpeg -i pipe:0 -re -c copy -f flv rtmp://mystream.com/key

pipe:0 является экземпляром ytdl.

1 ответ1

2

Для этого я использовал свой собственный RTMP-сервер для потоковой передачи видео на хост.

Я передаю видео на локальный RTMP-сервер, используя

mkfifo x
ytdl http://youtube.com/watch?v=12345 > x
ffmpeg -re -i x -c copy -f flv rtmp://mylocalRTMPserver/stream

Затем создайте поток от этого к хосту, используя

ffmpeg -re -i rtmp://mylocalRTMPserver/stream -c copy -f flv rtmp://mystream.com/key

Если вышеуказанный поток не получает входных данных, он остается открытым в течение 30 секунд, что позволяет мне закрыть канал YouTube и открыть его снова.

Хотя это работает, есть дополнительные издержки на запуск двух экземпляров ffmpeg.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .