Потоковый вывод ffmpeg через HTTP - PullRequest
1 голос
/ 14 марта 2012

Поскольку я пытаюсь соединить привязки VLC Python с ffmpeg (см. Обмен данными между ffmpeg и видеопроигрывателем ), я подумал, что создание ffmpeg для вывода потока RTSP в STDOUT и «перехват» с помощью сценарий Python и отправка по HTTP было бы хорошей идеей.Поэтому я создал крошечный HTTP-сервер, используя SimpleHTTPServer, с которого я получаю STDIN из FFMpeg и «выводю» его в Интернет.

Это синтаксис, который я использую:

ffmpeg.exe -y -i rtsp://fms30.mediadirect.ro/live/utv/utv?tcp -acodec copy -vcodec copy -f flv - | \Python27\python.exe -u stdin2http.py

ЭтоКажется, работает, я могу получить доступ к потоку, но ни видео, ни аудио не играет.Я пытался с VLC на Windows, VLC и MPlayer на Linux, но безуспешно.Просто запуск

ffmpeg.exe -y -i rtsp://fms30.mediadirect.ro/live/utv/utv?tcp -acodec copy -vcodec copy -f flv - | vlc.exe -

работает отлично.Таким образом, проблема, кажется, когда я записываю данные со стандартного ввода на веб-сервер.Что я делаю не так?

1 Ответ

2 голосов
/ 15 марта 2012

Я играл с вашим скриптом stdin2http.py.Во-первых, я смог передать мультимедийный файл (в моем случае файл H.264 .mp4) с простого веб-сервера (webfsd) на VLC через HTTP.Затем я попытался сделать то же самое, используя 'stdin2http.py

Я использовал утилиту 'ngrep', чтобы изучить разницу в сетевых разговорах между двумя серверами.Я думаю, что если вы хотите, чтобы этот подход работал, вам нужно сделать stdin2http.py более умным и работать с диапазонами содержимого HTTP (что может включать в себя определенное количество буферизованных данных stdin в вашем сценарии для выполнения возможных скачков в потоке)..

...