2016-08-08 12 views
1

않고있는 GStreamer와 파일에 나는 GStreamer에 의해 파일에 감시 IP 카메라에서 rtsp 스트림을 저장 하는 방법을 몇 가지 팁을 부탁드립니다.저장 RTSP는 재 인코딩

gst-launch -e rtspsrc location="rtsp://(my-camera-stream-address)" ! decodebin ! x264enc ! mp4mux ! filesink location=file.mp4

그것은 잘 작동하지만, 정말 높은 CPU 소모가 :이를 발견했다. 내 원래 스트림을 디코딩하고 다른 스트림으로 인코딩한다고 확신합니다.

다시 인코딩하지 않고 어떻게해야하는지 알려주세요. 실시간 스트림을 캐치하고 컨테이너에 저장하는 방법은 무엇입니까?

답변

0

그럼 먼저 확인 뭐죠 스트림의 종류 ..

접근 방식의 정체성 디버깅 요소 1

확인 버퍼 :

gst-launch-1.0 rtspsrc location=rtsp://mpv.cdn3.bigCDN.com:554/bigCDN/definst/mp4:bigbuckbunnyiphone_400.mp4 name=r ! application/x-rtp,media=video ! identity silent=false ! fakesink -v 

되어야 버퍼의 정보를 확인 형태 :

/GstPipeline : 파이프 라인 0/GstRTSPSrc : r.GstGhostPad : recv_rtp_src_0_2072847348_96.GstProxyPad : proxypad9 : caps = "application/x-rtp \, \ media \ = (문자열) 오디오 \, \ payload \ = (int) 96 \, \ clock-rate \ = (문자열) 1, \ 모드 \ = (문자열) 2, \ 프로필 수준 ID = (문자열) 4800 \, \ 인코딩 이름 \ = (문자열) MPEG4-GENERIC \, 인코딩 매개 변수 \ (string) 13, \ indexlength \ = (문자열) 3 \, \ indexdelength \ = (문자열) 3 \, \ config \ = (문자열) 119008c400002000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000 \, \ a (문자열) AAC-hbr \, \ sizelength \ (기본) 0, \ seqnum-base \ = (단위) 1 \, \ npt-start \ = (기본) (guint64) 0 \ \ NPT 스톱 \ = (guint64)를 encoding- \ = (더블) 1 \ \ 플레이 스케일 \ = (더블) 한

공지 596,458,000,000 \ \ 재생 속도 이름이 .AAC를 가리킨다. 이것은 mp4에서 기본적으로 사용됩니다. 동일하게 비디오에도 적용됩니다. application/x-rtp, media = video 유형의 버퍼를 다시 검색합니다. mp4 generic - h264.


접근법 2 :

쉽게 그냥 uridecodebin를 사용하여 점 파일을 덤프하고 각각의 요소는 파이프 라인을 구축하는 방법을보고 복사

GST_DEBUG_DUMP_DOT_DIR=`pwd` gst-launch-1.0 uridecodebin uri=rtsp://mpv.cdn3.bigCDN.com:554/bigCDN/definst/mp4:bigbuckbunnyiphone_400.mp4 ! fakesink 

이 파일을 생성됩니다 .dot 확장자로 - PAUSE_PLAYING을 가져 와서 dot -T png 0.0blabla.dot -o blabla.png으로 그림을 만드십시오. rtpsometginfdepay 뒤에 요소를 확인하십시오. 비슷한 파이프 라인을 구축 할 수있는 모든 정보를 정기적으로


:

gst-launch-1.0 -e mp4mux name=m ! filesink location=bla.mp4 rtspsrc location=rtsp://mpv.cdn3.bigCDN.com:554/bigCDN/definst/mp4:bigbuckbunnyiphone_400.mp4 name=r r. ! "application/x-rtp,media=video" ! rtph264depay ! h264parse ! m. r. ! "application/x-rtp,media=audio" ! rtpmp4gdepay ! aacparse ! m. 

(나는 mp4mux했던 것처럼) 당신이 GST 발사의 시작 부분에 요소를 생성하지만 나중에 사용할 수 있습니다 유의하십시오.

HTH