这问题折腾了我好几天了,。。。。刚才终于解决了,赶紧上来记录下。。。:-)
设计的基本思路是,通过GStreamer向远程服务器端发送H.264视频编码流,并在发送的过程中在本地进行播放。远程服务器端接受并播放。
使用的协议是rtp+udp。
gst-launch gstrtpbin name=rtpbin latency=1000 \
uridecodebin uri=file:///home/xingmin/nobody.avi name=decoder \
decoder. ! tee name=tee \
tee. ! queue2 ! ffmpegcolorspace ! videoscale ! ximagesink \
tee. ! queue2 ! ffmpegcolorspace ! x264enc ! rtph264pay pt=96 ! queue2 ! rtpbin.send_rtp_sink_0 \
rtpbin.send_rtp_src_0 ! queue2 ! udpsink host=211.64.*.* port=5000 \
rtpbin.send_rtcp_src_0 ! queue2 ! udpsink host=211.64.*.* port=5001 sync=false async=false \
udpsrc port=5005 ! queue2 ! rtpbin.recv_rtcp_sink_0 \
decoder. ! queue2 ! audioconvert ! alsasink
上面这段代码,靠,弄了我几天了,自己实在是找不出问题,急的焦头烂额。。。。。。。
Google上GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG.......................
可就是没有这问题!!!!
在GStreamer的邮件列表里面也没搜的问题,所以只好发贴求救。
还好,昨天,有一个人回了,虽然仍不管用。
又G。。。了一上午,在Maillist里面一页一页的翻,不知从哪来的灵感,突然在udpsink后面也加上了sync=false async=false,一试,能工作了!!!
^_^。。。。惊喜万分!!!
虽然,能发送到服务器端,但是本地播放视频和声音不同步,并且很卡,但是主要问题已经解决了。
下面是完整的代码:
gst-launch --gst-debug=2 gstrtpbin name=rtpbin latency=1000 \
uridecodebin uri=file:///home/xingmin/nobody.avi name=decoder \
decoder. ! tee name=tee \
tee. ! queue2 ! ffmpegcolorspace ! videoscale ! ximagesink \
tee. ! queue2 ! ffmpegcolorspace ! x264enc ! rtph264pay pt=96 ! queue2 ! rtpbin.send_rtp_sink_0 \
rtpbin.send_rtp_src_0 ! queue2 ! udpsink host=211.64.*.* port=5000 sync=false async=false \
rtpbin.send_rtcp_src_0 ! queue2 ! udpsink host=211.64.*.* port=5001 sync=false async=false \
udpsrc port=5005 ! queue2 ! rtpbin.recv_rtcp_sink_0 \
decoder. ! queue2 ! audioconvert ! alsasink
阅读(6697) | 评论(3) | 转发(2) |