2012-03-14 3 views
1

Как я пытаюсь подключить привязки Python VLC с помощью ffmpeg (см. Exchange data between ffmpeg and video player) Я думал, что создание ffmpeg для вывода потока RTSP в STDOUT и «ловить» его с помощью a Python script и отправки по HTTP будет хорошая идея. Поэтому я сделал крошечный HTTP-сервер, используя SimpleHTTPServer, из которого я получил STDIN из FFMpeg и «выводил» его в Интернет.Потоковый вывод ffmpeg по HTTP

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

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 - 

работает отлично. Поэтому проблема заключается в том, что я пишу данные из stdin на веб-сервер. Что я делаю неправильно?

+0

Я думаю, что что-то может быть неправильно с вашим скриптом stdin2http.py. –

+0

Я тоже об этом думаю - но что может быть неправильным? Вот сценарий: http://pastebin.com/NDRtFhVp – ov1d1u

+0

vlc может передавать сам по себе. Зачем вам нужен ffmpeg, python? – jfs

ответ

2

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

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

Смежные вопросы