在Android上使用Gstreamer RTSP服务器

时间:2017-07-26 15:34:13

标签: android gstreamer

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

我现在要做的是用以下管道替换我的服务器:

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(); 
        } 

你能指导我解决这个问题吗?

1 个答案:

答案 0 :(得分: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