두 프로세스가 동시에 웹캠에 액세스 할 수 있습니까?


14

Google+ 행 아웃 및 유사 구성에서 치즈를 사용하고 싶습니다. 두 프로세스에서 웹캠을 사용하여 동시에 웹캠에 액세스 할 수 있는지 알고 싶습니다. 나는 그것을 아직 시도하지 않았지만, 그렇게하기 전에 물어볼 것이라고 생각했다.

그래서 가능합니까?

답변:


6

글쎄, 방금 시도했다. 흥미로운 결과.

나는 스카이프와 치즈, 웹캠 장난감과 행 아웃 (모두 작동하는)을 가지고 함께 시험해 보았습니다.

결과 :

한 번에 두 가지에 동일한 웹캠을 사용할 수 없습니다.

치즈 (작동 중) + 웹캠 장난감 (작동하지 않음) + Skype (소형, 오른쪽 상단, 작동하지 않음).

여기에 이미지 설명을 입력하십시오

그래도 2 개의 웹캠을 2 가지로 사용할 수 있습니다. (치즈 + 웹캠 토이).

여기에 이미지 설명을 입력하십시오

행 아웃 (작동하지 않음) + 치즈 (작업 중)

여기에 이미지 설명을 입력하십시오

행 아웃 (자신이 직접 작업)

여기에 이미지 설명을 입력하십시오

행 아웃을 처음 열면 치즈가 깨졌습니다. 다른 것과 동일하지만 내 인터넷이 너무 느려서 모든 단일 스크린 샷을 업로드 할 수 없습니다 (그리고 30 + 스크린 샷을 높이 평가할 것입니다) ...

여기에 이미지 설명을 입력하십시오

난에 심볼릭 링크를 만드는 시도 /dev/video0하고 그것을 저장 /devvideo2. 작동하지 않았습니다.

또한 한 번에 2 개의 치즈 프로세스를 실행할 수 없습니다.

당신이해야한다면, 나는 그것을 전체 화면으로 만들고 2 화면 녹화를하는 것이 좋습니다. 나는 그것이 당신이 원하는 것에 효과가 있을지 의심합니다.


감사! 이것은 간결하며 알아야 할 사항을 알려줍니다. 멋진 정원 btw! 현상금은 타임 아웃이 만료 될 때 수여됩니다 (21 시간 진행). 그런 다음이 주석을 삭제합니다.
RolandiXor

@Mew 그것은 그것이 작동하게하는 마지막 시도였습니다 :)
Tim

@Tim 다음 답변은 필요한 방법이 필요하기 때문에 여기에 오면 바로 찾는 것입니다.
Isiah Meadows

1
@impinball nope, 방금 흥미로운 질문을 찾았습니다!
Tim

14

행복하게 지금 그렇습니다!

현재 GitHub에는 단일 소스에서 두 개뿐만 아니라 시스템 용량으로 제한되는 무한한 수의 비디오 장치를 표시 할 수있는 프로젝트가 있습니다.

이 프로젝트를이라고 v4l2loopback합니다. (링크를 확인하고 아래로 스크롤하여 README에서 지침을 확인하십시오.)

v4l2loopbackGitHub를 복제하고 다음 명령을 실행하여 설치할 수 있습니다 .

$ git clone https://github.com/umlaeute/v4l2loopback.git
$ cd v4l2loopback
$ make
$ sudo make install

GStreamer, FFmpeg, MPlayer 및 Skype와 함께 사용하는 방법에 대한 샘플은 작은 위키를 확인하십시오 . 희망에 따라 적절한 설정을 찾을 수 있습니다.

조정을 즐기십시오!


1
가상 장치는 Linux (및 * nix)가 빛나는 영역 중 하나입니다. Windows tee에서는 stdin먹이를 마치기를 기다리지 않는 기본 유틸리티를 작성하는 것이 더 복잡합니다 . 이것이 실제로 tee확장 가능한 지원과 동등한 바이너리를 실제로 사용하더라도 놀라지 않을 것 입니다.
Isiah Meadows

이것이 질문에 대답하는 동안 여기에 링크의 일부를 포함시키고 참조 용 링크를 제공하는 것이 바람직 합니다. 예를 들어 1에서 2 개의 장치를 만듭니다. 그 옵션은 무엇입니까? OP의 요구 사항에 명시된 바와 같이 Google 행 아웃과 함께 사용할 수 있습니까? 방금 Skype로 테스트했는데 작동하지 않는 것 같습니다. 우리는 이제 4.0이 아닌 4.3 버전입니다 ...
Tim

2
다른 시스템이 돌아 오면이를 확인해야합니다. 아마 추가 현상금을 줄 것입니다.
RolandiXor

3
이것은 실제로 우분투의 일부입니다-자식이 필요하지 않습니다.
nbubis

자신이 컴파일 할 필요 v4l2loopback가-utils를하지 않기 때문에 사실이 지금 우분투 / 데비안 패키지로
아르노 Jeansen

3

@The Eye 답변 기반

우분투 18.04 https://gstreamer.freedesktop.org/documentation/installing/on-linux.html 에 gstreamer 패키지를 처음 설치했습니다.

$ git clone https://github.com/umlaeute/v4l2loopback.git
$ cd v4l2loopback
$ make
$ sudo make install

Ubuntu 18.04 LTS https://github.com/umlaeute/v4l2loopback/issues/139 에서 경고 메시지가 표시 되었지만 v4l2loopback 드라이버를로드하지 못하게하지 못했습니다.

$ sudo depmod -a

내 노트북 ​​/ dev / video0에 웹캠이 1 개 있고 동일한 하드웨어에서 2 개의 스트림을 가져오고 싶었습니다. https://github.com/umlaeute/v4l2loopback/blob/master/README.md 기반

$ modprobe v4l2loopback devices=2

이제 유일한 비디오 장치 라고 가정 /dev/video1하고 /dev/video2작성 해야 /dev/video0합니다.

이제 하나의 터미널 창에서 다음을 실행합니다.

gst-launch-1.0 v4l2src device=/dev/video0 ! tee name=t ! queue ! v4l2sink device=/dev/video1 t. ! queue ! v4l2sink device=/dev/video2

더 많은 탭을 엽니 다

첫 번째 탭에서

gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink

두 번째 탭에서

gst-launch-1.0 v4l2src device=/dev/video2 ! videoconvert ! ximagesink

이제 2 개의 비디오 스트림을 볼 수 있습니다

최신 정보

동일한 /dev/video1장치를 여러 번 사용하더라도 많은 스트림을 제공합니다. 예.

첫 번째 탭에서

gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink

두 번째 탭에서

gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink

세 번째 탭에서

gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink

세 가지 흐름을 제공합니다.


웹캠에 오디오가있는 경우 BTW 명령 pactl list | grep -A2 'Source #'을 사용 하여 오디오 장치를 필터링 한 후 다음 파이프 라인에서 해당 장치를 사용합니다 (여러 파이프 라인의 인스턴스도 실행할 수 있음)gst-launch-1.0 pulsesrc device=alsa_input.<name of device> ! autoaudiosink
enthusiasticgeek

이것은 FFmpeg가 h264를 디코딩하지 않고 복사 할 수 없었기 때문에 FFmpeg 솔루션보다 훨씬 잘 작동합니다. 아무도 듣고 있지 않을 때에도 항상 CPU를 사용하게되었습니다
Fabian N.

2

대답은 아마 없을 것입니다 ... 라이브러리, "Video 4 Linux"는 장치의 사용 여부를 감지하고 시작하지 않습니다. 하나; libv4l-dev를 다운로드하여 수동으로 편집하려는 경우 코드를 편집하여이 검사를 제거한 다음 다시 컴파일하면됩니다. 나는 당신이 이것을 작동시킬 수 있다고 상상하지만, 그것은 매우 불안정합니다. 그래도 확인해 볼 가치가 있습니다.

TLDR : 팔꿈치 그리스가 편리한 프로그래머라면 무엇이든 가능합니다. 멀리 가고 싶지 않아? 그럼 아닙니다; 불가능합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.