![웹캠에서 네트워크로 h264 비디오를 전송하는 방법은 무엇입니까?](https://linux55.com/image/27745/%EC%9B%B9%EC%BA%A0%EC%97%90%EC%84%9C%20%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EB%A1%9C%20h264%20%EB%B9%84%EB%94%94%EC%98%A4%EB%A5%BC%20%EC%A0%84%EC%86%A1%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
웹캠이 있고 이를 사용하여 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
이 내용이 도움이 되길 바랍니다.