hlssink and openh264

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

hlssink and openh264

Jerry Geis-2
Hello 

When I use the videotestsrc line:
gst-launch-1.0 videotestsrc is-live=true ! openh264enc ! mpegtsmux  
        ! hlssink playlist-root=http://IP \
          location=/var/www/html/hlssink.%05d.ts \
          playlist-location=/var/www/html/playlist.m3u8
I can play the videotestsrc... cool

So I thought I would change that to an actual file.
gst-launch-1.0 filesrc location=movie.mov ! openh264enc ! mpegtsmux  
        ! hlssink playlist-root=http://IP \
          location=/var/www/html/hlssink.%05d.ts \
          playlist-location=/var/www/html/playlist.m3u8

on the second command I get syntax error

What do I change for videotestsrc (that worked) to use an actual file?
The movie.mov file format is apple quick time.

Thanks,

Jerry

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

RE: hlssink and openh264

Rand Graham
Hello,

You will need to demux, parse and decode the video file before you can re-encode it to h264.

Quick time is a container format. You will also need to know what video codec was used for the file.

Regards,
Rand
________________________________________
From: gstreamer-devel [[hidden email]] On Behalf Of Jerry Geis [[hidden email]]
Sent: Wednesday, May 17, 2017 10:09 AM
To: [hidden email]
Subject: hlssink and openh264

Hello

When I use the videotestsrc line:
gst-launch-1.0 videotestsrc is-live=true ! openh264enc ! mpegtsmux
        ! hlssink playlist-root=http://IP \
          location=/var/www/html/hlssink.%05d.ts \
          playlist-location=/var/www/html/playlist.m3u8
I can play the videotestsrc... cool

So I thought I would change that to an actual file.
gst-launch-1.0 filesrc location=movie.mov ! openh264enc ! mpegtsmux
        ! hlssink playlist-root=http://IP \
          location=/var/www/html/hlssink.%05d.ts \
          playlist-location=/var/www/html/playlist.m3u8

on the second command I get syntax error

What do I change for videotestsrc (that worked) to use an actual file?
The movie.mov file format is apple quick time.

Thanks,

Jerry
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: hlssink and openh264

Jerry Geis-2
In reply to this post by Jerry Geis-2
>Hello,

>You will need to demux, parse and decode the video file before you can re-encode it to h264.

>Quick time is a container format. You will also need to know what video codec was used for the file.

>Regards,
>Rand
ok - I was assuming since videotestsrc was a good source and worked that changing to filesrc was OK also... Apparently not.

So I added decodebin and videoconvert

gst-launch-1.0 filesrc location=movie.mov ! decodebin ! videoconvert ! openh264enc ! mpegtsmux  
        ! hlssink playlist-root=http://IP \
          location=/var/www/html/hlssink.%05d.ts \
          playlist-location=/var/www/html/playlist.m3u8


The pipeline now works, but I do not get anything but black on viewing. Do I still have something wrong ? 
Thanks,

Jerry

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: hlssink and openh264

Jerry Geis-2
If I wait a little longer - instead of a black screen I get 1 still image of the video. Which is a good step.

VLC plays the playlist.m3u8 fine
.ts files are served with the WRONG content-type (I think) The type is text/vnd.trolltech.linguist and it should be video/mp2t (I think)

Do I not have something right? 

my command was:
gst-launch-1.0 filesrc location=movie.mov ! decodebin ! videoconvert ! openh264enc ! mpegtsmux  
        ! hlssink playlist-root=http://IP \
          location=/var/www/html/hlssink.%05d.ts \
          playlist-location=/var/www/html/playlist.m3u8

Thanks

Jerry

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: hlssink and openh264

Arjen Veenhuizen
insert h264parse between encoder and multiplexer. What could also help is to set a fixed GOP size on the openh264enc element (e.g. 1 second / 30 frames). What you can also try is to swap out openh264enc by x264enc and see if that yields better results.
Reply | Threaded
Open this post in threaded view
|

Re: hlssink and openh264

Jerry Geis-2
In reply to this post by Jerry Geis-2
I am trying to run this command:

gst-launch-1.0 filesrc location=pirates_trailer.mov '!' decodebin '!' videoconvert '!' openh264enc '!' h264parse '!' mpegtsmux '!' hlssink playlist-root=http://192.168.1.8/hlssink location=/var/www/html/hlssink/hlssink.%05d.ts playlist-location=/var/www/html/hlssink/playlist.m3u8
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...

Missing element: video/x-fluendo-va decoder

WARNING: from element /GstPipeline:pipeline0/GstDecodeBin:decodebin0: Delayed linking failed.
Additional debug info:
./grammar.y(510): gst_parse_no_more_pads (): /GstPipeline:pipeline0/GstDecodeBin:decodebin0:
failed delayed linking some pad of GstDecodeBin named decodebin0 to some pad of GstVideoConvert named videoconvert0

and I get the above error.

I do have fluendo codecs installed.

What can I do about it ?

Jerry


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

RE: hlssink and openh264

Rand Graham
Jerry,

I have seen the "delayed delayed linking failed no more pads error" before. I do not have a general solution for it. It is extremely frustrating.

In your specific case I would recommend a more explicit pipeline where you demux the audio stream and video stream into separate queues and process the audio and video separately. That is come up with a pipeline that does not use decodebin. Also, keep in mind for HLS you are going to need AAC audio.

Here is an example HLS pipeline that works for me.

// HLS Sink example
gst-launch-1.0 -v -e mpegtsmux name=m m. ! queue ! hlssink filesrc location=/home/rdg/data/the_canoe_h265.ts ! tsdemux name=d d. ! queue max-size-buffers=1200 max-size-buffers=0 max-size-time=0 ! h265parse ! mfxhevcdec ! videoconvert ! mfxvpp width=1280 height=720  ! mfxh264enc rate-control=cbr bitrate=1500 insert-aud=true ! "video/x-h264, stream-format=byte-stream, profile=high" ! m. d. ! queue max-size-buffers=1200 max-size-buffers=0 max-size-time=0 ! aacparse ! avdec_aac ! audioconvert ! voaacenc bitrate=128000 ! m.

I want to draw your attention to this part of the pipeline:

! aacparse ! avdec_aac ! audioconvert ! voaacenc bitrate=128000 ! m.

What this does is parse aac audio and then re encode it as aac audio. IIRC, I had to do this to avoid the no more pads error. I was unable to compose a pipeline that did not do the apparently extra work of transcoding AAC audio into AAC audio.

Regards,
Rand
________________________________________
From: gstreamer-devel [[hidden email]] On Behalf Of Jerry Geis [[hidden email]]
Sent: Thursday, May 18, 2017 7:08 AM
To: [hidden email]
Subject: Re: hlssink and openh264

I am trying to run this command:

gst-launch-1.0 filesrc location=pirates_trailer.mov '!' decodebin '!' videoconvert '!' openh264enc '!' h264parse '!' mpegtsmux '!' hlssink playlist-root=http://192.168.1.8/hlssink location=/var/www/html/hlssink/hlssink.%05d.ts playlist-location=/var/www/html/hlssink/playlist.m3u8
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...

Missing element: video/x-fluendo-va decoder

WARNING: from element /GstPipeline:pipeline0/GstDecodeBin:decodebin0: Delayed linking failed.
Additional debug info:
./grammar.y(510): gst_parse_no_more_pads (): /GstPipeline:pipeline0/GstDecodeBin:decodebin0:
failed delayed linking some pad of GstDecodeBin named decodebin0 to some pad of GstVideoConvert named videoconvert0

and I get the above error.

I do have fluendo codecs installed.

What can I do about it ?

Jerry

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel