使用gstreamer接收和解释视频流

时间:2011-12-02 08:02:06

标签: android gstreamer

我为安道尔手机写了一个小程序,通过tcp将相机流传输到我的电脑。手机充当客户端,而在pc上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设备上的文件中记录流,我会得到一个有效的视频文件,运行没有任何问题!

安卓摄像头的配置由

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

如何参数化gstreamer以观看流?

德国的祝福 享受周末

波希多尼

2 个答案:

答案 0 :(得分:1)

嗯,实际上你并没有写一个有效的文件。您只是将原始流转储到文件中。 尝试在接收器上使用这些新增功能:

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

答案 1 :(得分:0)

你如何终止录音? mp4容器不适合流式传输。