2011-12-02 101 views
2

我爲我的Andorid手機編寫了一個小程序,它通過tcp將其相機流發送到我的電腦。手機充當客戶端,而pc gstreamer應該接收流。因此,我使用以下命令:用gstreamer接收並解釋視頻流

>>gst-launch -v tcpserversrc port=8888 host=XXX.XX.XX.XXX ! \ 
filesink location=test.mpg 

此方法產生一個不包含有效標頭的損壞的媒體文件。的

>>file test.mpg 
test.mpg: ISO Media, MPEG v4 system, 3GPP 

輸出但是當我使用MPlayer的,我得到如下:

>>mplayer test.mpg 
... 
Playing test.mpg. 
libavformat file format detected. 
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x9b22850]moov atom not found 
LAVF_header: av_open_input_stream() 
failed                
Seek failed 
libavformat file format detected. 
LAVF_header: av_open_input_stream() failed 

Exiting... (End of file) 

您可以在https://docs.google.com/open?id=0Bwg55BOeLkowNjk1NTM0MjctMTZjYS00NDNmLTlkM2QtNmJlZTg5ZTExZDRm下載文件(如上所述它不出場,由於格式錯誤,但你可以點擊在左邊下載)

它非常瘋狂,如果我在Android設備上的文件中記錄流,我會得到一個有效的視頻文件,運行沒有任何問題!

Android相機的配置由

recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); 
recorder.setVideoSize(320,240); 
recorder.setVideoFrameRate(15); 

我怎麼有參數的GStreamer觀看流定義?來自德國

祝 享受週末

波希多尼

回答

0

你怎麼了終止記錄? mp4容器不適合流式傳輸。

1

那麼,實際上你並沒有寫出一個有效的文件。您只是將原始流轉儲到文件中。 嘗試在接收器上使用這個新增功能:

...! h264parse split-packetized = true config-interval = 1! mp4mux name = \「muxorig \」! \ filesink location = myfile.mp4