2012-03-14 2 views
1

스트리밍 ffmpeg (Exchange data between ffmpeg and video player 참조)와 VLC 파이썬 바인딩을 연결하려고 할 때 ffmpeg를 STDOUT으로 출력하고 a Python script을 "catch"하는 ffmpeg를 만들고 HTTP를 통해 보내는 것이 좋은 생각. 그래서 SimpleHTTPServer를 사용하여 작은 HTTP 서버를 만들었습니다.이 서버에서 FFMpeg의 STDIN을 가져 와서 웹에 출력합니다. HTTP를 통한 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 

, 내가 스트림하지만 나 비디오에 액세스 할 수 없으며, 오디오가 재생됩니다. 나는 Windows에서 VLC, Linux에서 VLC 및 MPlayer를 시도했지만 성공하지 못했습니다. 단순히 실행

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, 파이썬이 필요합니까? – jfs

답변

2

나는 stdin2http.py 스크립트로 놀았습니다. 첫째, 간단한 웹 서버 (webfsd)에서 HTTP를 통해 VLC로 미디어 파일 (내 경우에는 H.264 .mp4 파일)을 스트리밍 할 수있었습니다. 그런 다음 'stdin2http.py < h264-file.mp4'를 사용하여 동일한 작업을 시도했습니다. 그것은하지 않았다.

두 서버 간의 네트워크 대화의 차이를 연구하기 위해 'ngrep'유틸리티를 사용했습니다. 이 접근 방식을 만들고 싶다면 stdin2http.py를 더 똑똑하게 만들고 HTTP 내용 범위 (스트림에서 가능한 점프를 처리하기 위해 일정한 양의 버퍼링 데이터가 스크립트에 포함될 수 있음)로 작업해야합니다. .