我有一台HTC One VX手机,我想为它开发一款应用程序.
我得到了SDK,IDE,JDK以及我需要的一切.http://developer.android.com/sdk/index.html我试图在我的手机上运行我的应用程序.但我的设备没有出现在Android设备选择器窗口中.我猜这是因为我没有手机的驱动程序,但我似乎无法找到它.
我的手机设置为" USB调试 ".
该网站 - > http://developer.android.com/tools/extras/oem-usb.html#Drivers
说是为我的电脑安装OEM USB驱动程序.我有一个戴尔,我已升级到Windows 7,服务标签BLZXLC1.因此我无法从网站上获取驱动程序,因为我已经升级了我的操作系统.
但我已经有了USB驱动程序吗?在设备管理器中,我在"其他设备"下面有一个"Android手机",它没有驱动程序.我需要做些什么来完成这项工作?
我正在尝试制作一个应用程序,它将使用TCP或UDP协议通过互联网从Android手机的摄像头流式传输视频.我目前能够将一个字节数组从Android手机传输到我的计算机,该计算机正在运行我用C#编写的服务器.之前我通过网络发送.jpeg并以30 fps的速度显示它们,但这耗费了太多的带宽.
首先从摄像机捕获图像的最佳方法是什么?我在看......
onPictureTaken(byte[] data, Camera camera)
Run Code Online (Sandbox Code Playgroud)
要么
onPreviewFrame (byte[] data, Camera camera)
Run Code Online (Sandbox Code Playgroud)
我只对byte []数据感兴趣,然后对其进行编码/压缩,然后通过网络发送.
其次,我应该如何将这些帧转换为压缩视频,这是一个可以通过网络流式传输的字节数组?我不太关心视频质量,我更关心减少带宽.
这是我想要做的,但我不需要高质量的视频. https://code.google.com/p/spydroid-ipcamera/
我试图了解spydroid(https://code.google.com/p/spydroid-ipcamera/)的工作原理,以便我可以为我的手机编写类似的应用程序。基于spydroid,这是我对RTSP、RTCP和RTP的理解。
RTSP 在指定端口上运行并设置一切。
RTCP 可以在任何端口上运行。有一个客户端端口和一个服务器端口。这是RTP的控制流程
RTP 可以在任何端口上运行。有一个客户端端口和一个服务器端口。其中包含音频和视频流。这很令人困惑,因为它似乎实际上并未在此端口上发送音频和视频。在spydroid中,它在端口5006上发送视频,在5004上发送音频。
Spydroid 正在通过 RTSP 发送此消息以确认端口...传输:RTP/AVP/UDP;单播;destination=123.456.789.00;client_port=65234-65235;server_port=44580-44581;ssrc=ba98a863;mode=play
我认为这意味着客户端(在我的例子中是 VLC)正在使用 UDP 侦听 65234 的 RTP 和 65235 的 RTCP 消息。此外,spydroid 正在侦听 44580 的 RTP 和 44581 的 RTCP。这是正确的吗?
现在,在 RTSP 的 DESCRIBE 序列中,spydroid 告诉客户端 m=video 5006 RTP/AVP 96 我认为这表明它将通过端口 5006 通过 UDP 发送视频。
我在上面的句子中所说的一切听起来都正确吗?
我真正想知道的是如何将此信息转发到正确的端口。客户端端口由 VLC 自动分配。我尝试运行这个命令... vlc "rtsp://192.168.1.104:8086" --rtp-client-port=58866 但VLC似乎忽略它并选择它自己的端口。所以我转发了端口 8086、5004 和 5006,但我不知道为 RTP 和 RTCP 连接转发哪个端口,因为它每次都会改变。我可以完成这项工作的唯一方法是将所有端口转发到我的计算机。(我有一个 linksys 路由器,它有一个 DMZ 选项)但这是一个糟糕的解决方案。有人可以指导我正确的方向吗?
另外,很高兴知道我正在这样做,因为我是通过互联网上的外部 IP 地址发送所有内容。其中spydroid旨在在局域网上使用。