2017-07-26 159 views
0

我有一个Android应用程序能够打开UDP套接字,连接到服务器,接收数据(h264流),解码收到的数据并将其显示在智能手机屏幕上。Gstreamer RTSP服务器与Android的使用

什么我想现在要做的就是用下面的管道,以取代我的服务器:

gst-launch-1.0 filesrc location=toystory.h264 ! h264parse ! video/x-h264,stream-format=byte-stream,alignment=nal ! rtph264pay ! udpsink host=x.x.x.x port=5000 

当我推出的Android我得到的屏幕上也没有(没有客户端接收到数据,没有建立连接在客户端和服务器之间)。

要打开插座,我使用下面的Java代码:

try 
{ 
IPAddress = InetAddress.getByName(dstAddress); 
socket = new DatagramSocket(PORT); 
socket.connect(IPAddress,PORT); 
sendPacket = new DatagramPacket(buff, buff.length, IPAddress, PORT); 
if (socket.isConnected()) { 
       socket.send(sendPacket); 
      } 
receivePacket = new DatagramPacket(buffr, buffr.length, IPAddress, PORT); 
socket.receive(receivePacket); 
} 
catch(IOException e) { 
      e.printStackTrace(); 
     } 

可否请你指导我解决这个问题?

回答

0

对于Androud上的rtsp服务器,您应该使用gstreamer rtsp lib。

简而言之:

在服务器端使用这条管道:

filesrc location=toystory.h264 ! h264parse ! rtph264pay name=pay0 pt=96

用它,在rtsp的服务器 “包装” 代码。 (在回购中检查它)。

客户端使用这条管道:

rtspsrc location=rtsp://host_address:host_port/host_mount ! " "rtpjitterbuffer ! " "rtph264depay ! " "h264parse ! " "avdec_h264 ! " "autovideosink

你可以看一下这个回购为例。

https://github.com/tamashevich-valery/rtsp-server

https://github.com/tamashevich-valery/rtsp-client