웹캠이 있고 이를 사용하여 h264 비디오를 스트리밍하고 싶습니다. 이제 mjpg-streamer를 사용하여 mjpg 비디오를 스트리밍하고 있습니다. 이제 h264를 스트리밍하고 싶습니다. gstreamer를 사용하여 수행할 수 있다는 것을 알았지만 완전히 새로운 기능입니다. 또한 일부 블로그/기사 등을 읽은 후 h264 및 gstreamer에 몇 가지 문제가 있는 것 같습니다. 아직도 사실인가요?
gstreamer 외에 다른 방법이 있을까요?
어떤 정보라도 도움이 될 것입니다. 미리 감사드립니다.
답변1
gstreamer를 사용하여 h264를 스트리밍하는 방법을 설명하겠습니다.
먼저 v4l2 드라이버에서 "H264 픽셀 형식"을 지원하려면 Linux 커널 3.2 이상이 필요합니다.
v4l2-ctl을 사용하여 카메라가 올바른 H.264를 지원하는지 확인하세요.
# v4l2-ctl --목록 형식 # v4l2-ctl --list-formats-ext
다음으로 video4linux 라이브러리와 유틸리티가 필요합니다. 여기에는 다음이 포함됩니다.
libv4l 및 libv4l-dev v4l-utils qv4l2 (아마도 v4l-utils의 일부) v4l2ucp
프레임 속도 설정:
# v4l2-ctl --set-fmt-video=너비=800, 높이=448, 픽셀 형식=1 # v4l2-ctl --set-parm=30
Gstreamer에는 아직 video/x-264 형식을 지원하지 않는 v4l2src 입력 요소가 있습니다.
그러나 파일 소스를 사용하여 gstreamer 파이프의 stdin으로 파이프하면 H.264 스트림을 캡처하여 파일이나 stdout으로 보낼 수 있습니다.
#./capture -c 100000 -o | gst-launch -v -e filesrc 위치=/dev/fd/0 ! h264 분석! bin2를 디코딩하세요! xvimagesink 동기화=false
인코딩된 비디오 스트림은 Gstreamer를 사용하여 네트워크를 통해 전송할 수 있습니다.
#gst-launch -v udpsrc port=4000 caps='application/x-rtp, media=(string)video, clockrate=(int)90000, 인코딩 이름=(string)H264'! \ rtph264depay! ffdec_h264! xvimagesink 동기화=false #./capture -c 10000 -o | gst-launch -v -e filesrc 위치=/dev/fd/0 ! h264 분석! rtph264가 지불합니다! udpsink 호스트=host_IP 포트=4000
이 내용이 도움이 되길 바랍니다.