我该如何使用 RTP/RTSP 发送 Android 相机视频并在 PC 上播放它(使用 vlc 或任何其他播放器)?
我在谷歌上搜索了两个答案:
1. 使用 mediarecorder (http://sipdroid.org/ using VideoCamera.java)。
但我尝试了一下,没有结果 :(
2. 使用 PreviewCallback() - onPreviewFrame(data, camera) 方法。
通过使用 sipdroid 的 (Rtppacket、Rtpsocket、sipdroidsocket),我能够发送包含每个帧数据的 Rtp 数据包,并且我能够通过 Wireshark 捕获它。
但是我不能在 VLC 中播放我的数据包 :(
以下是我的代码:
我在谷歌上搜索了两个答案:
1. 使用 mediarecorder (http://sipdroid.org/ using VideoCamera.java)。
但我尝试了一下,没有结果 :(
2. 使用 PreviewCallback() - onPreviewFrame(data, camera) 方法。
通过使用 sipdroid 的 (Rtppacket、Rtpsocket、sipdroidsocket),我能够发送包含每个帧数据的 Rtp 数据包,并且我能够通过 Wireshark 捕获它。
但是我不能在 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");}
}
}
});
我该如何播放数据包?请给出一些建议!!!
我完全迷惑了:( 我是安卓开发的新手!!需要专家的帮助!!!