prepare a video file for rtph264pay
Aleix Conchillo FlaquƩ
aconchillo at gmail.com
Wed Oct 22 13:43:26 PDT 2014
On Sun, Oct 19, 2014 at 5:26 AM, Jacob S <jacobhameiri at gmail.com> wrote:
> Hello all,
>
> I am using gst-rtsp-server to stream video files and I want to prepare the
> video file for streaming in order to reduce the work for the streamer in
> run-time.
> this is the pipeline I tried for preparing the file:
>
> gst-launch-1.0.exe filesrc location=D:\\videos\\srcfile.wmv ! decodebin
> name=dbin ! queue ! videorate max-rate=15 ! videoconvert ! videoscale !
> video/x-raw,width=426,height=240 ! queue ! x264enc bitrate=2000 ! filesink
> location=D:\\videos\\ready_for_streaming\\srcfile.h264
>
> and the rtsp-server launch command:
>
> rtsp-launch.exe "( filesrc
> location=D:\\videos\\ready_for_streaming\\srcfile.h264 ! h264parse !
> rtph264pay name=pay0 pt=96 ) "
>
> I am getting a WARN 'baseparse
> gstbaseparse.c:3253:gst_base_parse_loop:<h264parse0> error: No valid frames
> found before end of stream' and after an ERROR : 'can't prepare media'
>
> If I do the decoding and re-encoding in run-time like this it works fine:
>
> rtsp-launch.exe "( filesrc location=D:\\videos\\srcfile.wmv ! decodebin
> name=dbin ! queue ! videorate max-rate=15 ! videoconvert ! videoscale !
> video/x-raw,width=426,height=240 ! queue ! x264enc bitrate=2000 ! rtph264pay
> name=pay0 pt=96 )"
>
> What am I doing wrong here?
>
I might need to set x264enc's byte-stream property to true
x264enc byte-stream=true
Otherwise all the encoder information is passed on the caps and lost
when you save to disk. With byte-stream=true you have all what you
need in the file.
You can simply try to reproduce your .h264 file with:
gst-launch-1.0 filesrc location=test.h264 ! h264parse ! decodebin !
videoconvert ! xvimagesink
Aleix
More information about the gstreamer-devel
mailing list