나는 라스베리 파이를위한 새로운 카메라 애드온을 가지고 있습니다. 아직 video4linux를 지원하지는 않지만 1080p h264 스트림을 내보내는 작은 프로그램이 있습니다. 나는 함께 표준 출력 할 비디오를 눌러이 작동을 확인하고 가지고 :라스베리 파이에서 gstreamer로 h264 스트림에서 jpeg 캡처하기
raspivid -n -t 1000000 -vf -b 2000000 -fps 25 -o -
은 내가 두 번째 한 번 촬영 한 비디오의 스냅 샷으로 끝날 있도록이 스트림을 처리하고 싶습니다.
이후 1080p이므로 H264 인코딩에 rpi 하드웨어 지원을 사용해야합니다. 나는 gstreamer가 이것을 지원하는 유일한 어플리케이션이라고 믿는다. 그래서 ffmpeg를 사용하는 솔루션이나 avconv는 작동하지 않을 것이다. 나는 gstreamer를 하드웨어 H264 인코딩 플러그인을 만들기 위해 http://www.trans-omni.co.uk/pi/GStreamer-1.0/build_gstreamer에서 빌드 스크립트를 사용했습니다 그리고 일을 나타납니다
[email protected]:~/streamtest# GST_OMX_CONFIG_DIR=/etc/gst gst-inspect-1.0 | grep 264
...
omx: omxh264enc: OpenMAX H.264 Video Encoder
omx: omxh264dec: OpenMAX H.264 Video Decoder
그래서 내가 표준 입력에 비디오를 소요하고 밖으로 뱉어 GST-출시 파이프 라인을 구축 할 필요가 한 번에 한 번 신선한 jpeg.
[email protected]:~/streamtest# cat test.sh
#!/bin/bash
export GST_OMX_CONFIG_DIR=/etc/gst
raspivid -n -t 1000000 -vf -b 2000000 -fps 25 -o - | \
gst-launch-1.0 fdsrc fd=0 ! decodebin ! videorate ! video/x-raw,framerate=1/1 ! jpegenc ! multifilesink location=img_%03d.jpeg
문제는 그것이 작동하지 않는 것입니다 : gstreamer를 그냥 prerolling 상태에 영원히 앉아 나는 그래서 다음과 같은 간단한 스크립트와 함께 온 것은 그것을 실행이 작업을 수행 할 수있는 GStreamer의 'multifilesink'싱크를 사용할 수 있습니다 알고 내 소중한 jpeg를 절대 내뱉지 마라. 경우
[email protected]:~/streamtest# ./test.sh
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
[waits forever]
그것은 gstreamer를의 -v 플래그가 설정된 도움이 출력은 사람이 내가 잘못 뭘하는지 설명 할 수 http://pastebin.com/q4WySu4L
에있을거야?
나는 똑같은 일을하려하고있다. 저는 아직 gstreamer 작업을 시도하지 않았기 때문에 결과가 다를 경우 다시 작성하고 다시 작성하겠습니다. – Respectech
나는 gstreamer-devel 목록에있는 사람들과도 이야기 해왔다. 희망찬 보지 않는다 : 나는 raspivid의 출력에 gstreamer가 프레임 레이트에 대한 결정을 내리는 데 필요한 타임 스탬프가 없다는 소식을 듣고있다. http://gstreamer-devel.966125.n4.nabble.com/Capturing-jpegs-from-an-h264-stream-td4660254.html –
raspivid 소스 코드를 수정하여 타임 스탬프를 추가 할 수 있습니까? 아니면 GPU 레벨에서 발생해야합니까? – Respectech