2012-10-03 5 views
4

MJPEG 스트림 파일 저장에 문제가 있습니다. 나는 그런 파이프 라인을 사용하여 내 두 번째 시스템에서이 스트림을 재생할 수 있어요GStreamer - MJPEG 스트림 파일

gst-launch filesrc location=thirdmovie640x360.mp4 ! decodebin2 name=dec \ 
    ! queue ! ffmpegcolorspace ! jpegenc ! queue ! avimux name=mux \ 
    ! udpsink host=192.168.0.2 port=5000 

: I는 파이프 라인을 사용하여 MJPEG을 스트리밍 할 때 그러나

gst-launch -v udpsrc port=5000 ! jpegdec ! autovideosink 

을, 어떻게 (파일에 같은 MJPEG 스트림을 저장할 수 있습니다 트랜스 코딩하지 않고!) 어떤 미디어 플레이어에서 재생할 수 있습니까? 파이프 라인을 추천 해 주시겠습니까?

gst-launch udpsrc port=5000 ! multipartdemux ! jpegparse ! jpegdec \ 
    ! ffmpegcolorspace ! matroskamux ! filesink location=output.mkv 

어떻게 MP4 파일을 저장을 변경할 수 :


나는 MATROSKA 파일로 출력 스트림을 저장하는 등의 파이프 라인을 찾았나요? 이러한 파이프 라인 :

gst-launch udpsrc port=5000 ! multipartdemux ! jpegparse ! jpegdec \ 
    ! ffmpegcolorspace ! mp4mux ! filesink location=output.mp4 

이 작동하지 않습니다. MJPEG 비디오를 트랜스 코딩하지 않고도 mp4 컨스터너 (또는 AVI 컨스터너)로 저장하는 것을 도와 주실 수 있습니까?

답변

1

MJPEG는 간단히 말해 일련의 jpeg 이미지가 있음을 의미하는 코덱입니다. 이러한 jpeg는 비디오로 보려는 경우 컨테이너에 저장해야합니다. MP4는 그 (것)들을 안으로 저장하는 일반적인 콘테이너이다.

그래서 jpegenc 출력을 다시 mp4mux에 mux하고 파일로 저장할 수있다. 괜찮은 미디어 플레이어는 다시 재생할 수 있어야합니다.

+0

그것은 mp4mux'은 MP4 파일 컨테이너에 MJPEG를 기록하는 것을 허용하지 않습니다'과 같습니다 여기에 내가 찾던 piplines 있습니다. [https://stackoverflow.com/questions/46276014/how-to-record-image-jpeg-mjpeg-within-mp4-container-with-gstreamer] – Ahresse

6

내 문제가 해결되었습니다.

서버

gst-launch filesrc location=thirdmovie640x360.mp4 ! decodebin2 name=dec 
! queue ! ffmpegcolorspace ! jpegenc ! queue ! multipartmux 
! udpsink host=192.168.0.4 port=5000 

클라이언트

gst-launch udpsrc port=5000 ! multipartdemux ! image/jpeg, framerate=25/1 
! jpegparse ! jpegdec ! ffmpegcolorspace ! jpegenc 
! avimux ! filesink location=output.avi 
+5

좋습니다. 사실 당신은 왜 해독하고 암호 해독합니까? 왜 jpegparse에서 직접 avimux로 피드하지 않습니까? – av501