使用gstreamer在Android手机中流式传输网络内容

时间:2016-04-12 09:12:43

标签: android video-streaming gstreamer

我是Gstreamer的新手。我正在尝试使用gstreamer进行网络流媒体传输。我可以使用下面的gst命令实现这一点。它对我来说很好。

在发射器:gst-launch-1.0 -v filesrc location = / home / user / Downloads / big_buck_bunny_480p_h264.mov! decodebin! x264enc! rtph264pay! udpsink host = 127.0.0.1 port = 5000

在接收方:gst-launch-1.0 -v udpsrc port = 5000 caps =" application / x-rtp,media =(string)video,clock-rate =(int)90000,encoding-name =( string)H264,payload =(int)96" ! rtph264depay! decodebin!视频转换! autovideosink

在这里,我使用相同的Ubuntu PC来发送和接收视频。

但是现在我想在我的Android手机而不是ubuntu PC上播放收到的视频。我的意思是ubuntu PC应该充当发射器,Android手机充当接收器。有没有办法实现这个目标?

Android手机已连接到网络10.xx.yy.zz。 (Android手机和Ubuntu PC在同一个局域网中)所以我将发射器的udpsink主机更改为10.xx.yy.zz。现在我期待视频在Android设备上播放。但它没有。我收到了发送方和接收方的日志消息

在发射器: /GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0.GstPad:sink:caps = video / x-h264,codec_data =(buffer)0164001effe1001a6764001eacd940d83de6f011000003000100000300308f162d9601000568ebecb22c,stream-format =(string)avc,alignment =(string)au,level =(string)3 ,profile =(string)high,width =(int)854,height =(int)480,pixel-aspect-ratio =(fraction)1/1,framerate =(fraction)24/1 / GstPipeline:pipeline0 / GstRtpH264Pay:rtph264pay0:timestamp = 456403579 / GstPipeline:pipeline0 / GstRtpH264Pay:rtph264pay0:seqnum = 50171 管道是PREROLLED ... 将管道设置为PLAYING ... 新时钟:GstSystemClock

在Receiver处: (字符串)H264,payload =(int)96" ! rtph264depay! decodebin!视频转换! autovideosink 将管道设置为PAUSED ... /GstPipeline:pipeline0/GstUDPSrc:udpsrc0.GstPad:src:caps = application / x-rtp,media =(string)video,clock-rate =(int)90000,encoding-name =(string)H264,payload =(int )96 /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:sink:caple = application / x-rtp,media =(string)video,clock-rate =(int)90000,encoding-name =(string)H264,payload =(int )96 管道是实时的,不需要PREROLL ...... 将管道设置为PLAYING ... 新时钟:GstSystemClock

请帮忙。提前谢谢。

1 个答案:

答案 0 :(得分:0)

对于Android你可以使用vlc ...也许你需要这个流的sdp文件,就像这个问题 - check comments

或者你可以在没有sdp的情况下使用mpegtsmux,就像在this回答..在vlc上你会用“打开直播流”然后放在那里udp:// @:5000(其中5000是你在发送方管道上使用的端口)

对于IP问题 - 如果它在与Ubuntu PC相同的局域网上是的它将起作用(如果没有编辑您的问题的详细信息)。

你可以尝试使用其他PC(而不是android)和vlc - 使用mpegtsmux,如上所述。