SDV 미디어: 카메라 사용

SDV Media를 사용하면 Linux V4L2 API를 통해 비디오 카메라를 사용할 수 있습니다. V4L2 API를 직접 사용할 수도 있지만 애플리케이션 개발자는 사용자 공간 도우미 라이브러리를 사용하는 것이 좋습니다. 예를 들면 다음과 같습니다.

  • libv4l-rs Rust용 crate (권장)
  • libv4l2 for C++. 이 라이브러리는 SDV Media에서 기본적으로 제공되지 않습니다.

지원되는 버퍼 모드

USERPTR 버퍼 모드는 업스트림 V4L2 관리자가 지원 중단된 것으로 간주하므로 SDV Media에서 지원되지 않습니다. 대신 MMAP 또는 DMABUF 모드를 사용하세요.

카메라 사용

하이퍼바이저에서 노출하는 각 동영상 기기 (카메라, 인코더, 디코더)는 /dev/videoN (숫자 값 N 포함)이라는 별도의 기기로 표시됩니다.

애플리케이션은 VIDIOC_QUERYCAP ioctl을 사용하여 동영상 기기의 기능을 쿼리할 수 있습니다. 카메라 기기는 지원V4L2_CAP_VIDEO_CAPTURE 또는 V4L2_CAP_VIDEO_CAPTURE_MPLANE 보고합니다.

동영상 캡처 흐름에 관한 자세한 내용은 Linux용 동영상 API: 입력/출력을 참고하세요.

다음 코드 샘플을 살펴보세요.

동영상 루프백 기기 구성

테스트를 위해 SDV Media는 게스트 VM 내에서 동영상 카메라를 완전히 에뮬레이션하는 데 사용할 수 있는 v4l2loopback 커널 모듈을 제공합니다. 기본적으로 단일 가상 카메라 기기를 초기화합니다. 더 추가하려면 커널 명령줄을 통해 구성 매개변수를 모듈에 전달하세요. 예를 들어 기기 4개를 초기화하려면 다음을 추가하세요.

v4l2loopback.devices=4

사용 가능한 모듈 옵션의 전체 목록을 보려면 v4l2loopback README 또는 Android 커널 저장소의 모듈 소스를 참고하세요.