甚高频

甚高频

我想将笔记本电脑上的网络摄像头用作电脑上的视频设备,用于视频会议等。

因此,我不仅仅想传输视频。我实际上想通过网络传输整个设备。

因此,两台计算机,一台传输其网络摄像头的数据,另一台将其作为视频设备接收。

两台计算机都运行正常的 Ubuntu 18.04,但我很快就会升级到 20.04

答案1

假设两台机器都连接到网络,并且 PC 可以访问笔记本电脑的 IP。请按照以下步骤操作:

在笔记本电脑上(带网络摄像头)

安装v4l-utilsffmpeg运行:

sudo apt install v4l-utils ffmpeg

matroska像这样安装媒体容器:

sudo apt install libmatroska6v5

运行以下命令打开netcat摄像头流的监听器:

ffmpeg -i /dev/video0 -codec copy -f matroska - | nc -l 9999

在电脑上

安装v4l-utilsffmpeg运行:

sudo apt install v4l-utils ffmpeg

安装v4l2loopback并加载虚拟相机:

sudo apt install v4l2loopback-dkms v4l2loopback-utils

sudo modprobe -r v4l2loopback

sudo depmod -a

sudo modprobe v4l2loopback exclusive_caps=1 card_label="MyLaptopCam:MyLaptopCam"

测试一下:

  1. 将笔记本电脑上的真实摄像头传输到 PC 上的虚拟摄像头(更改Laptop_IP为笔记本电脑的 IP):

    nc Laptop_IP 9999 | ffmpeg -i /dev/stdin -codec copy -f v4l2 /dev/video0
    
  2. 启动并播放虚拟相机:

    ffplay /dev/video0
    
  3. 奶酪到你的笔记本电脑的摄像头。

如果你能看到你的脸,那么它就起作用了。

麦克风?

要将麦克风输出从笔记本电脑发送到 PC,请按照以下步骤操作:

在笔记本电脑上:

arecord -f cd -c 1 | nc -l 7777

在电脑上:

sudo modprobe snd-aloop

arecord -l | grep -i loopback

输出将会像这样:

card 1: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
card 1: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]

我们将使用设备 1(这通常是虚拟麦克风)卡 1像这样hw:1,1

  1. 然后运行此命令(更改Laptop_IP为笔记本电脑的 IP):

    nc Laptop_IP 7777 | aplay -f cd -D hw:1,1 
    
  2. 在系统设置->声音->输入中选择新的麦克风设备。

测试麦克风,并注意由于未使用压缩,因此会有声音延迟。

注意

  • 这已经过测试并且运行在两台机器上完美Ubuntu 19.10 的最新版本

如果测试失败,则可能是因为您的 PC/dev目录中有其他虚拟相机设备或以其他方式存在。

要解决此问题,请运行ls /dev/video*并记下有多少个。然后在测试中的两个命令中使用后面数字较大的那个。操作如下:

  1. 跑步sudo modprobe -r v4l2loopback

  2. 然后运行ls /dev/video*并注意现有的摄像头,例如/dev/video0 /dev/video1 /dev/video2 ... etc

  3. 然后运行:

    sudo modprobe v4l2loopback exclusive_caps=1 card_label="MyLaptopCam:MyLaptopCam"
    
  4. 然后再次运行,将添加ls /dev/video*一个新的相机,如下所示/dev/video3/dev/video0 /dev/video1 /dev/video2 /dev/video3

  5. 在最后两个命令中使用新相机,而不是/dev/video0像这样:

    nc Laptop_IP 9999 | ffmpeg -i /dev/stdin -codec copy -f v4l2 /dev/video3
    
    ffplay /dev/video3
    

故障排除

测试流是否正在通过如果您遇到问题v4l2loopback,您可以在 PC 上运行:

nc Laptop_IP 9999 | mplayer -

或者

nc Laptop_IP 9999 | vlc -

或者

nc Laptop_IP 9999 | ffplay -

要将其与 Google Hangouts 一起使用:

谢谢@janjaromirhorak如图所示此评论引述如下。

可能还有其他方法可以做到这一点,但这是我在 Mozilla Firefox 中的方法:打开 Google Hangouts,开始视频通话并允许麦克风和内置网络摄像头的请求。然后单击齿轮图标打开设置对话框,您可以在其中选择要使用的网络摄像头。选择您的虚拟网络摄像头,接受权限请求,然后单击“完成”。此外,此设置似乎会持续到未来的视频通话 - 下次我发现我的虚拟网络摄像头已被选中并正在运行。:)

答案2

所以你想借用相机给另一台机器。可能有点晚了,但这个问题似乎有解决办法。

我看到的常见问题是,大多数会议/聊天应用程序仅支持本地摄像头设备(没有网络或本地文件流)。

你只缺少一件:

v4l2loopback

  1. 在桌面(PC2)中创建 V4L2 环回设备
  2. 在笔记本电脑(PC1)中,使用 GStreamer(gst-launch-1.0)、ffmpeg、vlc 等将视频从摄像头设备传输到网络
  3. 在桌面(PC2)中,使用 GStreamer(gst-launch-1.0)、ffmpeg、vlc 等接收视频并将其传送到环回设备

然后在桌面(PC2)中设置会议/聊天应用程序,使用步骤(1)中创建的 V4L2 环回设备作为摄像头。

参考:

答案3

甚高频

使用甚高频单程来实现这个目标。

步骤 1 - 设置

要在 Debian、Ubuntu 或 Linux Mint 上安装 VLC:

$ sudo apt-get install vlc

要在 Fedora 上安装 VLC,首先启用 RPM Fusion 的免费存储库,然后运行:

$ sudo yum install vlc

要在 CentOS 或 RHEL 6 上安装 VLC,首先设置 EPEL 存储库,然后使用以下命令:

$ cd /etc/yum.repos.d/
$ sudo wget http://pkgrepo.linuxtech.net/el6/release/linuxtech.repo
$ sudo yum install vlc

第 2 步 - 在 VLC 中验证网络摄像头

确保您的网络摄像头可以被 Linux 系统和 VLC 检测到。

为此,您需要知道网络摄像头的名称。在下面的示例中,网络摄像头名为/dev/video0

$ ls /dev/video*
/dev/video0

然后,您必须测试网络摄像头的视频。这是您需要使用的命令,请不要忘记将“video0”替换为您的设备名称。

$ vlc v4l2:///dev/video0

如果您的网络摄像头被 VLC 成功检测到,您应该能够看到您的视频流。

步骤 3 - 在 VLC 上配置网络摄像头流

您已成功在 VLC 中检测到您的网络摄像头,接下来是配置网络摄像头流。

在此示例中,网络摄像头以 WMV 格式通过 HTTP 进行流式传输。要配置 VLC 进行网络摄像头流式传输,请先启动 VLC。

$ vlc

在 VLC 菜单中选择“流媒体”。

在屏幕上选择您的网络摄像头或音频设备的名称,例如,网络摄像头为 /dev/video0,音频为 hw:0,0。勾选“显示更多选项”复选框,并记下“MRL”和“编辑选项”字段中的值字符串。这些字符串将在教程的后面使用。单击“流”按钮。

验证视频源,例如 v4l2:///dev/video,然后单击“下一步”继续。

选择网络摄像头流媒体的目标,即流媒体方法/目标。在我们的示例中,我们从下拉列表中选择 HTTP,然后单击“添加”。

接下来,指定流媒体服务的端口号和路径。对于端口号,请输入 8080;我们假设端口号未被占用,对于路径 - “/stream.wmv”。对于转码,从下拉列表中选择“视频 - WMV + WMA (ASF)”配置文件。单击“下一步”。

下一个屏幕显示自动生成的流输出字符串。记下它并单击“流”按钮。

此时,VLC 应该开始通过 HTTP 从您的网络摄像头流式传输视频。流式传输流量直接发送到 TCP 端口号 8080 的本地主机,因此您将无法在 VLC 窗口中看到任何内容。

要验证 VLC 是否在 TCP 端口 8080 上正常运行,请运行以下命令并查找 VLC。

$ sudo netstat -nap | grep 8080

步骤 4 - 通过网络摄像头观看流媒体视频

一旦流媒体服务器开始运行,网络摄像头实时直播即可在 http://:8080/stream.wmv

您可以使用 VLC 播放器或 MPlayer 访问网络摄像头源,如下所示。

$ vlc http://:8080/stream.wmv
$ mplayer http://:8080/stream.wmv

如果您正在测试来自同一主机的供稿,请改用环回地址 127.0.0.1。

答案4

您可以尝试使用 DroidCam。我没有带笔记本电脑的 PC,所以我只在 Android 手机和 Ubuntu 19.10 上测试了它。您可以尝试使用 Wifi 服务器选项。

Ubuntu 的安装:

sudo apt install linux-headers-`uname -r`
sudo apt install v4l2loopback-dkms v4l2loopback-utils
sudo modprobe v4l2loopback
wget https://www.dev47apps.com/files/600/droidcam-64bit.tar.bz2 -O droidcam.tar.bz2
tar xjvf droidcam.tar.bz2
cd droidcam-64bit/
sudo ./install
echo -e '[Desktop Entry]\n Version=1.0\n Name=DroidCam\n Exec=droidcam\n Icon=droidcam\n Type=Application\n Categories=Application' | sudo tee /usr/share/applications/droidcam.desktop

您可以从终端运行它:droidcam &

在此处输入图片描述

在防火墙中允许它:

sudo ufw allow 4747

在此处输入图片描述

对于 20.04,此 droidcam 安装指南无法使用。但我找到了另一种方法这里

相关内容