qt 카메라 예제

GstCameraBinPreviewPipelineData *gst_camerabin_create_pipeline (GstElement * 요소, GstElement * 필터) 에 위치한 비디오 예제 응용 프로그램 : / usr / 공유 / qt5 / 예 / 멀티미디어 / 비디오 / qmlvideo 당신의 조언을 주셔서 감사합니다! 나는 camerabin 소스를 볼 것이다, 그러나 나는 생각, GST API는 내 경우에 정말 더 나은 방법입니다. 기록을위한 특별한 파이프 라인이 필요한 경우, 예를 들어 mp3 파일을 기록하기 위해 imxmp3enc를 사용하여, 우리는 기능 GstElement *QGstreamerCaptureSession을 변경해야합니다 ::buildEncodeBinin “src / 플러그인 / gstreamer / 미디어 캡처 / qgstreamercapturesession.cpp”뿐만 아니라 QGstreamerMediaContainerControl (QObject *부모) “SRC / 플러그인 / gstreamer / 미디어 캡처 / qgstreamermediacontainercontrol.cpp”내 비디오 소스는 카메라입니다 – 인터레이스 bt656, UYVY. 디스플레이에 표시하려면 프로그레시브 RGB로 변환해야합니다. 그 목적을 위해 나는 gstreamer pipelien을 사용 : 나는 주로 모바일 장치 (아이폰 OS, 안드로이드)에서 낮은 대기 시간 및 높은 FPS (100 fps) 비디오 입력 처리에 관심이 있어요. QCamera는 비디오 캡처보다 더 많은 옵션 (초점, ISO, 셔터 시간 조정 등)을 가지고있는 것 같지만 Qt에서 QML 카메라 공식 예제를 테스트 할 때 빌드 인 노트북 웹캠을 사용하여 처리하지 않고 20fps (또는 어쩌면 오래된 예)가있었습니다. Qt 작성기에서 예제를 실행하려면 시작 모드를 열고 예제에서 예제를 선택합니다. 자세한 내용은 예제 작성 및 실행을 참조하십시오. 컴퓨터의 기본 카메라인 경우 카메라 인덱스를 올바르게 0으로 설정해 보십시오. 분명히 우리는 잘못된 카메라 인덱스, 지원되지 않는 파일 또는 작동하지 않는 RTSP 피드 URL의 경우 QMessageBox를 사용하여 관련 메시지를 표시합니다. 이 게시물과 이 예제 프로젝트에서는 비디오가 반응적으로 읽혀지고 표시되는 방법에 대한 세부 정보를 입력하기 전에 다음을 true로 가정합니다. 이러한 이벤트는 응용 프로그램 창에서 Qt:Key_CameraFocus 또는 Qt:Key_Camera 단추중 하나를 누르면 됩니다.

카메라 포커스는 뷰파인더를 표시하고 카메라 설정을 잠그기만 하면 됩니다. Key_Camera는 captureMode()가 QCamera::CaptureStillImage인 경우 takeImage()를 호출하거나 캡처 모드가 비디오용인 경우 두 가지 작업 중 하나가 발생합니다. 기록 상태는 우리가 현재 기록하는 것을 표시하는 경우 다음 stop() 함수는 QCamera::stop()에 대한 호출의 결과로 호출되지만, 녹화하지 않는 경우 비디오 녹화는 QMediaRecorder::record()에 대한 호출로 시작됩니다. 두 응용 프로그램 모두 환경 변수 QT_GSTREAMER_CAMERABIN_VIDEOSRC를 사용하여 imxv4l2src를 사용하려면 카메라 장치가 /dev/video0 이외인 경우 환경 변수 QT_GSTREAMER_CAMERABIN_VIDEOSRC_DEVICE를 “/dev/”와 같은 오른쪽 카메라 장치로 설정해야 합니다. video1” 예를 들어: 0001-gstreamer-fix-camerabin-not-협상-error.patch Xwayland 백엔드 Qt의 위젯에서 비디오 재생 또는 카메라 뷰파인더를 지원 하기 쉽지 않은 것 같습니다. Qt xwayland에서, 우리는 단지 비디오 / 카메라에 대한 Gstreamer 싱크로 waylandsink를 선택할 수있는 것처럼 보이지만, QtMultimedia의 QGstreamerVideoOverlay는 웨이 랜드 백 엔드 비디오 싱크를 지원하지 않습니다. 나는 src /gsttools/qgstreamervideooverlay.cpp 파일을 해킹하려고 waylandsink 지원을 추가하려고, 하지만 gst-플러그인 -나쁜waylandsink 플러그인은 나에게 말했다 : “waylandsink외부 공급 디스플레이 핸들없이 외부 공급 표면을 사용할 수 없습니다. 응용 프로그램에서 GstContext를 사용 하 여 표시 핸들을 제공 하는 것이 좋습니다.” 비디오 파일은 어떻게 재생하나요? 당신은 예를 보여 줄 수 있습니까 스크린 샷? 비디오의 전체 경로를 제공해야 합니까? 에서 “/qtmultimedia/src/플러그인/gstreamer/camerabin/camerabin.cpp”, 비록 camerbin2 뷰파인은 i.MX6UL에 PXP에 의해 가속 될 수 있지만, 카메라 bin2 및 qgstvideorendersink의 성능이 좋지 않아 약 60% CPU 로딩을 일으킬 수 있습니다. 카메라 예제 실행 미리 보기.