利用DroidCam将手机摄像头打造成电脑摄像头
1.目的
现在许多同学的电脑上没有摄像头,但是随着智能手机的普及,大多数同学都有带摄像头的手机。而智能手机的摄像头比电脑的usb摄像头的效果好很多。那可不可以把手机摄像头用在电脑上来网络聊天呢,其实这是可以的,这里我们需要借助DroidCam软件来让手机摄像头变成电脑摄像头。
2. 环境
本人亲测通过的软硬件环境:
安卓手机一部(小米1S)MIUI5(Android 4.1.2)
PC机一台(Windows 7)
DroidCam Client 5.0.1.exe
DroidCam 5.0.2.apk
adb 1.0.32
软件我都上传了,可在文末下载。
3. 步骤
3.1 首先在手机上安装DroidCam 5.0.2.apk
3.2 接着在电脑上安装DroidCam Client 5.0.1.exe
注意安装时需要联网下载声音驱动,这样手机的话筒还可以用来作为电脑的话筒使用。
本人之前试验过网上流传的DroidCam一个较老的版本1.4.2,结果发现这个版本分辨率只能支持320x240,而改用5.0版本以后分辨率可以达到640x480
3.3 将以下3个文件放入C:\Windows\System32
adb.exe
AdbWinApi.dll
AdbWinUsbApi.dll
注意adb的版本,本人之前试验多次失败的原因可能是adb版本太老,不支持安卓4.0。而换用adb 1.0.32后,就成功了。
>adb version
Android Debug Bridge version 1.0.32
3.4 连接摄像头
这里我只介绍通过USB方式连接摄像头。
3.4.1 设置手机,开发者选项-->打开USB调试
3.4.2 将手机数据线插入电脑的USB口。
3.4.3 显示要不要打开USB存储,这个无所谓,我们选择不打开就可以。
3.4.4 在电脑上关闭所有和安卓有关的程序,比如金山手机控,豌豆荚等等
3.4.5 电脑上打开命令行,输入
>adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
556607e8 device
出现以上信息代表没问题
然后输入
>adb forward tcp:4747 tcp:4747
如果失败,请检查是否有别的程序控制了安卓手机
输入
>netstat -ano | findstr "5037"
TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 1704
TCP 127.0.0.1:5037 127.0.0.1:52111 TIME_WAIT 0
TCP 127.0.0.1:5037 127.0.0.1:52174 TIME_WAIT 0
这里可发现1704号进程使用了5037端口,很有可能1704号进程就是金山手机控,豌豆荚等等这类程序,请杀死它们。
3.4.6 以上都成功以后
打开手机端的DroidCam,再打开电脑端的DroidCam
3.4.7 电脑端选择USB图标,点击Start
OK了,可看到图像,成功了。
不用摄像头的时候电脑端记得按Stop,以节约手机的电量。
4. 测试(3款工具)
4.1 使用 Win7摄像头预览.exe
(附件testTool有下载)
设备推荐使用DroidCam Source 1
4.2 commandcam
(附件testTool有下载)
>commandcam /devlist
http://batchloaf.wordpress.com/CommandCam
This version 24-1-2013
Available capture devices:
Device name: DroidCam Source 3
Device name: DroidCam Source 1
Device name: DroidCam Source 2
Device name: DroidCam Source Mini (240p)
注意这里记下4个摄像头的顺序,它们的id分别为0,1,2,3。推荐用DroidCam Source 1,所以他的id为1,这个后面用java写摄像头程序有用。
4.3 FFmpeg
(由于程序太大,不附在附件里了,请去官网自行下载)
4.3.1 确认摄像头的名字
>ffmpeg -list_devices true -f dshow -i dummy
ffmpeg version N-69351-gfb34c58 Copyright (c) 2000-2015 the FFmpeg developers
built on Jan 28 2015 02:25:52 with gcc 4.9.2 (GCC)
[dshow @ 003cf9a0] "DroidCam Source 3"
[dshow @ 003cf9a0] Alternative name "@device_pnp_\\?\root#media#0000#{65e877
3d-8f56-11d0-a3b9-00a0c9223196}\global"
[dshow @ 003cf9a0] "DroidCam Source 1"
[dshow @ 003cf9a0] Alternative name "@device_sw_{860BB310-5D01-11D0-BD3B-00A
0C911CE86}\{961A218F-3CA2-4041-98B1-066B8B33487E}"
[dshow @ 003cf9a0] "DroidCam Source 2"
[dshow @ 003cf9a0] Alternative name "@device_sw_{860BB310-5D01-11D0-BD3B-00A
0C911CE86}\{9E2FBAC0-C951-4AA8-BFA9-4B196644964C}"
[dshow @ 003cf9a0] "DroidCam Source Mini (240p)"
[dshow @ 003cf9a0] Alternative name "@device_sw_{860BB310-5D01-11D0-BD3B-00A
0C911CE86}\{FC9B8228-83D5-4C8D-8656-45CBA9E237FB}"
dummy: Immediate exit requested
4.3.2 确认分辨率
>ffmpeg -list_options true -f dshow -i video="DroidCam Source 1"
[dshow @ 037762c0] DirectShow video device options (from video devices)
[dshow @ 037762c0] Pin "CapturePin" (alternative pin name "1")
[dshow @ 037762c0] pixel_format=bgr24 min s=640x480 fps=0.2 max s=640x480 fps=50
这边确认分辨率是否是640x480,老版的DroidCam分辨率只能支持320x240
4.3.3 视频录制测试
>ffmpeg -f dshow -s 640x480 -i video="DroidCam Source 1" webcam.flv
注意按q退出。然后可发现一个文件webcam.flv,可以用播放器打开观赏我们刚刚录制的视频。
5. 摄像头可以用来干嘛
推荐学习Vision-based User Interface Programming in Java
这本书讲了如何用java来做摄像头程序和游戏。