如何通过USB(ADB)将安卓手机作为Linux PC的OBS有线摄像头?
当然可以!用ADB+USB的方式传输手机视频流,不仅能完美避开WiFi速度瓶颈,还能让你完全掌控分辨率、帧率和码率参数,完全适配你的需求。下面给你两种靠谱的实现方案,都能让你在OBS里直接把手机当摄像头用:
方案一:Scrcpy(简单易上手,无需手机额外装APP)
这是最省心的方案,Scrcpy本身是一款轻量投屏工具,支持通过ADB将视频流输出为Linux虚拟摄像头,不需要在手机上安装任何应用:
首先安装必要工具:在Linux终端执行
sudo apt install scrcpy v4l2loopback-dkms(如果是Fedora等其他发行版,替换
apt为对应的包管理器即可)加载虚拟摄像头驱动模块:
sudo modprobe v4l2loopback devices=1 video_nr=10 card_label="PhoneCam"这里
video_nr=10指定虚拟摄像头的设备编号,card_label给设备起个好认的名字,方便后续在OBS里快速找到它。启动Scrcpy并输出到虚拟摄像头:
scrcpy --v4l2-sink=/dev/video10 --no-display --bit-rate=16M --max-fps=60 --max-size=1920参数说明:
--v4l2-sink:指定视频流输出到刚才创建的虚拟设备--no-display:不需要显示Scrcpy的投屏窗口,只后台输出视频流--bit-rate:设置码率(16M足够支持1080P 60帧的高质量流)--max-fps:设置帧率,可根据手机摄像头支持情况调整(比如30或60)--max-size:限制分辨率,1920对应1080P,你也可以设为2560(2K)只要手机支持
打开OBS Studio,添加「视频捕获设备」源,在设备列表里选择「PhoneCam」,就能直接预览和采集手机的视频流了!
方案二:GStreamer(高度自定义,适合进阶需求)
如果你需要更精细地控制视频编码、格式等参数,可以用GStreamer配合ADB实现,不过需要手机端能运行GStreamer(部分定制ROM预装,或自行安装Android版GStreamer):
先在PC上安装GStreamer工具:
sudo apt install gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-bad加载虚拟摄像头驱动(和方案一一致):
sudo modprobe v4l2loopback devices=1 video_nr=10 card_label="PhoneCam"转发ADB端口:在PC终端执行,把PC的8080端口转发到手机的8080端口
adb forward tcp:8080 tcp:8080手机端启动视频流:先进入ADB shell(
adb shell),再执行GStreamer命令:gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-h264,width=1920,height=1080,framerate=30/1 ! h264parse ! rtph264pay ! udpsink host=127.0.0.1 port=8080注意:
/dev/video0是手机后置摄像头路径,前置摄像头可能是/dev/video1,可以用ls /dev/video*查看手机的摄像头设备列表。PC端接收流并转成虚拟摄像头:在另一个终端执行:
gst-launch-1.0 udpsrc port=8080 ! application/x-rtp,media=video,encoding-name=H264 ! rtph264depay ! h264parse ! avdec_h264 ! v4l2sink device=/dev/video10同样,打开OBS添加「视频捕获设备」,选择「PhoneCam」即可使用。
额外注意事项
- 确保手机已经开启「USB调试」,且PC能正常通过ADB连接手机(用
adb devices命令验证) - 如果虚拟摄像头设备被占用,调整
video_nr的数值(比如改成11),并对应修改命令里的设备路径 - Scrcpy方案兼容性更强,无需手机额外配置,推荐优先尝试
内容的提问来源于stack exchange,提问作者unfa




