Android 相机 RTSP/RTP 流? [英] Android Camera RTSP/RTP Stream?

查看:17
本文介绍了Android 相机 RTSP/RTP 流?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用 RTP/RTSP 发送 Android 相机视频并在 PC 中播放(使用 vlc 或任何其他播放器).

How can I send Android camera video using RTP/RTSP and play it in PC(using vlc or any other player).

我google了一下,找到了两个答案:

I googled this and found two answers:

1) 使用 mediarecorder(http://sipdroid.org/ 使用 VideoCamera.java)

1) using mediarecorder (http://sipdroid.org/ using VideoCamera.java)

如何使用它我试过但没有结果:(

How to work with it i tried it but no result :(

2) 使用 PreviewCallback() - onPreviewFrame(data, camera) 方法.

2) using PreviewCallback() - onPreviewFrame(data, camera) method.

通过使用 sipdroid 的 (Rtppacket,Rtpsocket,sipdroidsocket),我可以发送包含每个帧的 Rtp 数据包作为数据,并且我可以通过 Wireshark 捕获它.

by using sipdroid's (Rtppacket,Rtpsocket,sipdroidsocket) I am able to send Rtp Packets containing each frame as data and I am able to catch it via Wireshark.

但我无法在 VLC 中播放我的数据包:(

But I am not able to play my packets in VLC :(

这是我的代码:

mCamera.setPreviewCallback(new PreviewCallback() { 

        public void  onPreviewFrame(byte[] data, Camera camera) {
            int width= 320;
            int height=240;
            eth=getInterfaces();
            Log.v("Connected to ","Ethernet"+eth);      
            if(eth!=null){
            try{                          
            InetAddress serverAddr = InetAddress.getByName("IP Address of My PC");               
            Log.v("trying to ","connect with"+serverAddr);                
            SipdroidSocket soc = new SipdroidSocket(9954);
            Log.v("trying to ","connect with Sipdroid Socket");                
            soc.connect(serverAddr, 9954);                               
            Log.v("Socket ","Connected");                               
            RtpPacket rtpp=new RtpPacket(data,height);               
            //rtpp.setPayloadType(125);                
            Log.v("RTPPacket","Created");                
            RtpSocket rtps= new RtpSocket(soc,serverAddr,9954);                    
            Log.v("RTPSocket","Created");                            
            rtps.send(rtpp);                
            Log.v("Packet","Sent");              

            }

            catch(Exception e){e.printStackTrace();Log.v(TAG, "Socket");}
            }
        }  
});

如何播放数据包?请给点建议!!!

How can I play the packets? Please give some suggestions!!!

我完全糊涂了:(我是android开发的新手!!需要专家的帮助!!!

I am totally confused:( I am new to android development!! need help from experts!!!!

推荐答案

我认为您可能需要通过 decodeYUV420SP 解码流,因为 byte[] 数据是 YUV 格式.

I think you might need to decode the stream via decodeYUV420SP since the byte[] data is in YUV format.

这篇关于Android 相机 RTSP/RTP 流?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆