V4L2를 사용하여 동일한 장치에서 오디오 및 비디오를 읽을 수 있습니까?

StackOverflow https://stackoverflow.com/questions/917060

  •  06-09-2019
  •  | 
  •  

문제

내장 된 오디오로 SDI 비디오를 캡처하는 캡처 카드가 있습니다. Linux 드라이버에 대한 소스 코드가 있으며 Video4linux2 지원을 추가하려고 노력하고 있습니다. 내 변경은 Vivi 예제를 기반으로합니다.

내가 제기 한 문제는 내가 찾을 수있는 모든 예제가 비디오 또는 오디오 만 처리한다는 것입니다. 클라이언트 측에서도 V4L은 FFMPEG의 libavdevice와 같은 비디오라고 가정합니다.

드라이버가 V4L2 장치와 ALSA 장치의 두 개의 개별 장치를 만들도록해야합니까? 이것이 오디오와 비디오를 동기화하는 작업을 훨씬 더 어렵게 만드는 것처럼 보입니다.

드라이버 사이에 전달되는 각 버퍼에 대해 어떤 방법을 선호하고 (v4L2의 MMAP 인터페이스를 통해) 프레임과 해당 프레임과 일치하는 오디오가 포함되어 있습니다.

또는 각 버퍼에 비디오 프레임인지 또는 오디오 덩어리인지를 나타내는 플래그가 포함되어있을 수도 있습니다. 그런 다음 버퍼의 타임 스탬프를 사용하여 물건을 동기화 할 수 있습니다.

그러나 V4L2 API 사양으로이를 수행하는 방법은 보이지 않으며 단일 장치에서 오디오 및 비디오를 모두 읽는 V4L2 지원 앱 (GSTREAMER, FFMPEG, TRANSCODE 등)의 예제도 보지 못합니다.

도움이 되었습니까?

해결책

일반적으로 장치의 오디오 캡처 부분은 별도의 장치로 나타납니다. 일반적으로 다른 물리적 장치 (카드를 공유)입니다. 그것이 얼마나 도움이되는지 잘 모르겠지만, 내가 잘 익숙한 소프트웨어는 어떻게 작동하는지 ...

다른 팁

V4L2 버퍼에는 오디오 또는 기타 데이터를 운전자에서 MMAPED 버퍼로 통화 응용 프로그램으로 전달하는 데 사용할 수있는 일부 예비 또는 예약 필드가 있습니다.

이 방법을 사용하여 Ubuntu 6.06의 비디오와 동기화 된 A/D 카드의 데이터를 전달하기 위해 BT8X8 드라이버를 수정했습니다.

괜찮 았지만 수정 된 드라이버를 유지하려는 노력으로 인해이 접근 방식을 포기했습니다.

여전히 관심이 있다면 세부 사항을 파헤칠 수 있습니다.

운전자가 GSTREAMER 등과 함께 플레이하기를 원한다면 별도의 오디오 장치가 일반적으로 예상되는 것입니다.

저렴한 V4L2 캡처 카드의 오디오의 대부분은 사운드 카드의 라인 입력을 통해 점퍼가 오디오를 캡처 해야하는 볼륨 컨트롤과 아날로그 패스 일뿐입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top