Hello,
I've got an incoming H264 live stream which I want to play from a webpage with low latency. The video format has to be HTML5 compatible and I want to avoid any transcoding. With that in mind, I've choosen mp4 as the container. Just for the starts, I'm testing the pipeline using videotestsrc and different encoding/containers: theora video in ogg container: gst-launch-1.0 -v videotestsrc is-live=true ! clockoverlay shaded-background=true font-desc="Sans 38" ! theoraenc ! oggmux ! tcpserversink host=127.0.0.1 port=8080 shows fine in webpage: <html> <title>A simple HTML5 video test</title> </html> <body> <video autoplay controls width=320 height=240> <source src="<a href="http://localhost:8080"">http://localhost:8080" type="video/mp4"> You browser doesn't support element <code>video</code>. </video> </body> notice that MIME type is set as "video/mp4" - weird but works. then I'm finally testing H264 video in mp4 container: gst-launch-1.0 -v videotestsrc is-live=true ! clockoverlay shaded-background=true font-desc="Sans 38" ! x264enc ! mpegtsmux ! queue ! tcpserversink host=127.0.0.1 port=8080 It does not work. I don't know why, it flows just fine but I can't see any video on the webpage. Any hints? |
then I'm finally testing H264 video in mp4 container: Just my two cents, but MPEG Transport Stream is not MP4. You should try mp4mux with the streamable value set to true and I'm not sure about the fragment-duration. _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
gst-launch-1.0 -v videotestsrc is-live=true ! clockoverlay shaded-background=true font-desc="Sans 38" ! x264enc ! mp4mux streamable=true fragment-duration=1000 ! tcpserversink host=127.0.0.1 port=8080
Setting pipeline to PAUSED ... /GstPipeline:pipeline0/GstTCPServerSink:tcpserversink0: current-port = 8080 Pipeline is live and does not need PREROLL ... Setting pipeline to PLAYING ... New clock: GstSystemClock /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)320\,\ height\=\(int\)240\,\ framerate\=\(fraction\)30/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive" /GstPipeline:pipeline0/GstClockOverlay:clockoverlay0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)320\,\ height\=\(int\)240\,\ framerate\=\(fraction\)30/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive" Redistribute latency... /GstPipeline:pipeline0/GstX264Enc:x264enc0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)320\,\ height\=\(int\)240\,\ framerate\=\(fraction\)30/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive" /GstPipeline:pipeline0/GstClockOverlay:clockoverlay0.GstPad:video_sink: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)320\,\ height\=\(int\)240\,\ framerate\=\(fraction\)30/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive" /GstPipeline:pipeline0/GstX264Enc:x264enc0.GstPad:src: caps = "video/x-h264\,\ codec_data\=\(buffer\)01640014ffe1001967640014acd94141fb0110000003001000000303c8f142996001000568ebecb22c\,\ stream-format\=\(string\)avc\,\ alignment\=\(string\)au\,\ level\=\(string\)2\,\ profile\=\(string\)high\,\ width\=\(int\)320\,\ height\=\(int\)240\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)30/1" /GstPipeline:pipeline0/GstMP4Mux:mp4mux0.GstPad:video_0: caps = "video/x-h264\,\ codec_data\=\(buffer\)01640014ffe1001967640014acd94141fb0110000003001000000303c8f142996001000568ebecb22c\,\ stream-format\=\(string\)avc\,\ alignment\=\(string\)au\,\ level\=\(string\)2\,\ profile\=\(string\)high\,\ width\=\(int\)320\,\ height\=\(int\)240\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)30/1" /GstPipeline:pipeline0/GstMP4Mux:mp4mux0.GstPad:src: caps = "video/quicktime\,\ variant\=\(string\)iso" /GstPipeline:pipeline0/GstTCPServerSink:tcpserversink0.GstPad:sink: caps = "video/quicktime\,\ variant\=\(string\)iso" /GstPipeline:pipeline0/GstMP4Mux:mp4mux0: streamable = true No video on the webpage player. |
Again, I have no experience with GStreamer, only with MP4 and HTML5 video as such. If there is still no video then there are following solutions: 1) If you have Chrome, it has a nice internal tab chrome://media-internals/ which contains all the information about all of the created media pipelines. You can open that after you have launched your player and see in what state it is and what errors it has reported. 2) Add the event listeners to the video element for error, loadedmetadata and canplay events (see https://www.w3.org/2010/05/video/mediaevents.html) to get additional info. You could also try playing the stream with ffplay or VLC and check their error logs. _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
This is the output from VLC:
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f3ef4c28780] could not find corresponding trex [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f3ef4c28780] error reading header [00007f3ef4001db8] avformat demux error: Could not open tcp://127.0.0.1:8080: Unknown error 1094995529 it looks like I'm passing a wrong header |
It's not you but the muxer. So this is the point where GStreamer knowledge comes in play:) I'd suggest looking at the mp4mux parameters and trying to tweak them because for some reason the muxer is not emitting a trex atom or it emitts it in a way VLC does not understand. If you want more of my help then maybe you can paste the full VLC log so that I can see what boxes were sent. [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f3ef4c28780] could not find corresponding trex [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f3ef4c28780] error reading header [00007f3ef4001db8] avformat demux error: Could not open tcp://127.0.0.1:8080: Unknown error 1094995529 it looks like I'm passing a wrong header -- View this message in context: http://gstreamer-devel.966125.n4.nabble.com/H264-to-streamable-mp4-tp4677114p4677122.html Sent from the GStreamer-devel mailing list archive at Nabble.com. _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Thanks Rudolf, unfortunately that is the whole VLC output.
I've been gst-inspecting like crazy but can't find anything stream-related |
It cant be all:) VLC is quite verbose if you tell it to be. I dont know if you are running vlc from command line or with GUI. But with GUI be sure to open the Tools->Messages window before you open the stream and set the verbosity to 2 (debug) in the combo box at the bottom. Sadly i dont know what are the equivivalent command line arguments. I've been gst-inspecting like crazy but can't find anything stream-related -- View this message in context: http://gstreamer-devel.966125.n4.nabble.com/H264-to-streamable-mp4-tp4677114p4677125.html Sent from the GStreamer-devel mailing list archive at Nabble.com. _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Thanks Rudolf, here is a bit verbose log from VLC:
core debug: adding item `tcp://127.0.0.1:8080' ( tcp://127.0.0.1:8080 ) core debug: meta ok for (null), need to fetch art core debug: processing request item: tcp://127.0.0.1:8080, node: null, skip: 0 core debug: rebuilding array of current - root Scaletta core debug: rebuild done - 1 items, index 0 core debug: starting playback of the new playlist item core debug: resyncing on tcp://127.0.0.1:8080 core debug: tcp://127.0.0.1:8080 is at 0 core debug: creating new input thread core debug: Creating an input for 'tcp://127.0.0.1:8080' core debug: looking for meta fetcher module matching "any": 1 candidates core debug: requesting art for tcp://127.0.0.1:8080 core debug: using timeshift granularity of 50 MiB, in path '/tmp' core debug: `tcp://127.0.0.1:8080' gives access `tcp' demux `' path `127.0.0.1:8080' core debug: specified demux `any' core debug: creating demux: access='tcp' demux='any' location='127.0.0.1:8080' file='(null)' core debug: looking for access_demux module matching "tcp": 20 candidates core debug: no access_demux modules matched core debug: creating access 'tcp' location='127.0.0.1:8080', path='(null)' core debug: looking for access module matching "tcp": 25 candidates core debug: looking for meta fetcher module matching "any": 1 candidates core debug: net: connecting to 127.0.0.1 port 8080 core debug: connection succeeded (socket = 33) core debug: using access module "tcp" core debug: Using stream method for AStream* core debug: starting pre-buffering lua debug: Trying Lua scripts in /home/bomba/.local/share/vlc/lua/meta/fetcher lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/fetcher lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/fetcher/tvrage.luac lua debug: Trying Lua scripts in /home/bomba/.local/share/vlc/lua/meta/fetcher lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/fetcher lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/fetcher/tvrage.luac lua debug: skipping script (unmatched scope) /usr/lib/vlc/lua/meta/fetcher/tvrage.luac lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/fetcher core debug: no meta fetcher modules matched core debug: searching art for tcp://127.0.0.1:8080 core debug: looking for art finder module matching "any": 2 candidates lua debug: skipping script (unmatched scope) /usr/lib/vlc/lua/meta/fetcher/tvrage.luac lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/fetcher core debug: no meta fetcher modules matched core debug: searching art for tcp://127.0.0.1:8080 core debug: looking for art finder module matching "any": 2 candidates lua debug: Trying Lua scripts in /home/bomba/.local/share/vlc/lua/meta/art lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/art lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/00_musicbrainz.luac qt4 debug: IM: Setting an input lua debug: skipping script (unmatched scope) /usr/lib/vlc/lua/meta/art/00_musicbrainz.luac lua debug: Trying Lua scripts in /home/bomba/.local/share/vlc/lua/meta/art lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/art lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/01_googleimage.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/00_musicbrainz.luac lua debug: skipping script (unmatched scope) /usr/lib/vlc/lua/meta/art/00_musicbrainz.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/01_googleimage.luac lua debug: skipping script (unmatched scope) /usr/lib/vlc/lua/meta/art/01_googleimage.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/02_frenchtv.luac lua debug: skipping script (unmatched scope) /usr/lib/vlc/lua/meta/art/01_googleimage.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/02_frenchtv.luac lua debug: skipping script (unmatched scope) /usr/lib/vlc/lua/meta/art/02_frenchtv.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/03_lastfm.luac lua debug: skipping script (unmatched scope) /usr/lib/vlc/lua/meta/art/02_frenchtv.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/03_lastfm.luac lua debug: skipping script (unmatched scope) /usr/lib/vlc/lua/meta/art/03_lastfm.luac lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/art core debug: no art finder modules matched core debug: looking for meta fetcher module matching "any": 1 candidates lua debug: skipping script (unmatched scope) /usr/lib/vlc/lua/meta/art/03_lastfm.luac lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/art core debug: no art finder modules matched core debug: looking for meta fetcher module matching "any": 1 candidates lua debug: Trying Lua scripts in /home/bomba/.local/share/vlc/lua/meta/fetcher lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/fetcher lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/fetcher/tvrage.luac lua debug: Trying Lua scripts in /home/bomba/.local/share/vlc/lua/meta/fetcher lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/fetcher lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/fetcher/tvrage.luac core debug: using meta fetcher module "lua" core debug: removing module "lua" core debug: searching art for tcp://127.0.0.1:8080 core debug: looking for art finder module matching "any": 2 candidates core debug: using meta fetcher module "lua" core debug: removing module "lua" core debug: searching art for tcp://127.0.0.1:8080 core debug: looking for art finder module matching "any": 2 candidates lua debug: Trying Lua scripts in /home/bomba/.local/share/vlc/lua/meta/art lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/art lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/00_musicbrainz.luac lua debug: Trying Lua scripts in /home/bomba/.local/share/vlc/lua/meta/art lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/art lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/00_musicbrainz.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/01_googleimage.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/01_googleimage.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/02_frenchtv.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/02_frenchtv.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/03_lastfm.luac lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/art core debug: no art finder modules matched core debug: art not found for tcp://127.0.0.1:8080 lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/art/03_lastfm.luac lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/art core debug: no art finder modules matched core debug: art not found for tcp://127.0.0.1:8080 core debug: received first data after 1979 ms core debug: pre-buffering done 560 bytes in 1s - 0 KiB/s core debug: looking for stream_filter module matching "any": 9 candidates core debug: no stream_filter modules matched core debug: looking for stream_filter module matching "record": 9 candidates core debug: using stream_filter module "record" core debug: creating demux: access='tcp' demux='any' location='127.0.0.1:8080' file='(null)' core debug: looking for demux module matching "any": 66 candidates mp4 warning: MP4 plugin discarded (not seekable) ts debug: TS module discarded (lost sync) mod debug: MOD validation failed (ext=) lua debug: Trying Lua scripts in /home/bomba/.local/share/vlc/lua/playlist lua debug: Trying Lua scripts in /usr/lib/vlc/lua/playlist lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/anevia_streams.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/anevia_xml.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/appletrailers.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/bbc_co_uk.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/break.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/canalplus.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/cue.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/dailymotion.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/extreme.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/france2.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/googlevideo.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/jamendo.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/joox.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/katsomo.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/koreus.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/lelombrik.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/liveleak.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/metacafe.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/metachannels.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/mpora.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/pinkbike.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/pluzz.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/rockbox_fm_presets.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/soundcloud.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/vimeo.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/youtube.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/youtube_homepage.luac lua debug: Trying Lua playlist script /usr/lib/vlc/lua/playlist/zapiks.luac lua debug: Trying Lua scripts in /usr/share/vlc/lua/playlist avformat debug: trying url: tcp://127.0.0.1:8080 avformat debug: CPU flags: 0x0107d3db avformat debug: detected format: mov,mp4,m4a,3gp,3g2,mj2 avformat error: Could not open tcp://127.0.0.1:8080: Unknown error 1094995529 vobsub debug: this doesn't seem to be a vobsub file ps warning: this does not look like an MPEG PS stream, continuing anyway core debug: using demux module "ps" core debug: looking for meta reader module matching "any": 2 candidates lua debug: Trying Lua scripts in /home/bomba/.local/share/vlc/lua/meta/reader lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/reader lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/reader/filename.luac lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/reader core debug: no meta reader modules matched core debug: `tcp://127.0.0.1:8080' successfully opened ps debug: es id=0xf8 format unknown ps warning: garbage at input, trying to resync... ps warning: found sync code ps debug: es id=0xf4 format unknown ps warning: garbage at input, trying to resync... ps warning: found sync code ps warning: garbage at input, trying to resync... ps warning: found sync code ps warning: garbage at input, trying to resync... ps warning: found sync code ps warning: garbage at input, trying to resync... ps warning: found sync code ps warning: garbage at input, trying to resync... ps warning: found sync code ps warning: garbage at input, trying to resync... |
The verbose trace does not contain the error you showed previously. Could it be that the tcp server in gstreamer is going on and on and thus the new connections do not get the initial metadata (moov atom?). Or is there some other reason why the error does not show in the second log? One more thing that made me wonder - you are using a url with tcp://. Shouldn't it be http? I think that the content type header in the response would certainly help VLC determine the format. One more thing - if you can't reproduce the error with VLC what you can do is use wget to capture an initial fragment of the HTTP response and then there is a tool called AtomicParsley that prints the atom tree, that is another way to see what exactly is the structure of the response. 2016-04-26 20:01 GMT+03:00 bomba <[hidden email]>: Thanks Rudolf, here is a bit verbose log from VLC: _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
This post was updated on .
I was not able to reproduce the first error. Like my last log says, VLC keeps try to connect to the stream and catch description of the stream.
I'm thinking about dropping mp4mux / qtmux and embed the H264 video into flv, to be played with a flash player. This is annoying, since HTML5 is supposed to handle MP4 natively and I can stream closed files without any problem. RESTREAM SOURCE (working) gst-launch-1.0 -v rtspsrc location=rtsp://192.168.1.121:8554/eyescream protocols=0x00000004 latency=2000 do-timestamp=true ! rtph264depay ! rtph264pay config-interval=1 pt=96 ! multiudpsink clients=127.0.0.1:5556,127.0.0.1:5560 sync=false FILE SAVER (working) gst-launch-1.0 -v udpsrc port=5560 do-timestamp=true ! application/x-rtp, payload=96 ! rtpjitterbuffer ! rtph264depay ! h264parse ! splitmuxsink location=5560-%05d.mp4 max-size-time=60000000000 HTML5 LIVE (not working) gst-launch-1.0 -v udpsrc uri=udp://127.0.0.1:5556 do-timestamp=true ! application/x-rtp, payload=96 ! rtpjitterbuffer ! rtph264depay ! h264parse ! mp4mux streamable=true fragment-duration=1000 ! tcpserversink host=0.0.0.0 port=8080 sync-method=2 WEBPAGE (supposed to embed the live mp4 stream) <html> <title>A simple HTML5 video test</title> </html> <body> <video autoplay controls> <source src="<a href="http://127.0.0.1:8080"">http://127.0.0.1:8080" type="video/mp4"> You browser doesn't support element <code>video</code>. </video> </body> Any hints? |
Well, I have developed a custom RTSP to HTML5 video solution and I can tell that it's not always the browser (however they also have problems) - the client side (in this case GStreamer) can also be unabled to produce a correct fragmented (streamable) format. And since I'm all for open source, if you have the time and energy we could try to track down what exactly is bad - but for that I'd need to see the contents of the mp4 stream from the beginning or output of Atomic Parsley from these contents. Btw - I advised to check the Chrome media-internals page. What did that say? What errors were present? 2016-04-27 13:32 GMT+03:00 bomba <[hidden email]>: I was not able to reproduce the first error. Like my last log says, VLC keeps _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
This post was updated on .
Not much (chrome://media-internals/)
error Failed loading buffered resource. Error code=-302 event WEBMEDIAPLAYER_CREATED pipeline_state kCreated player_id 11 render_id 207 url tcp://192.168.1.30:8080 (the IP:PORT is correct) You can produce exactly the same stream on your computer if you have Gstreamer 1.8.0! gst-launch-1.0 -v videotestsrc is-live=true ! clockoverlay shaded-background=true font-desc="Sans 38" ! x264enc ! mp4mux streamable=true fragment-duration=1000 ! tcpserversink host=0.0.0.0 port=8080 |
Hmm, here you again are using tcp:// while your initial markup (first mail) had http://. Can you explain? Again as I said - I do not know what GStreamer does - if ti sends raw TCP data or actually handles HTTP requests. But I would assume browser is expecting the second. 2016-04-27 14:06 GMT+03:00 bomba <[hidden email]>: Not much (chrome://media-internals/) _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
You are right. tcp://ip:port was terribly wrong.
Retried with http:// render_id: 84 player_id: 45 pipeline_state: kStopped event: WEBMEDIAPLAYER_CREATED url: http://192.168.1.30:8080/ total_bytes: -1 streaming: true single_origin: true passed_cors_access_check: false range_header_supported: false error: FFmpegDemuxer: open context failed pipeline_error: demuxer: could not open 00:00:00 00 pipeline_state kCreated 00:00:00 00 event WEBMEDIAPLAYER_CREATED 00:00:00 00 url http://192.168.1.30:8080/ 00:00:00 254 total_bytes -1 00:00:00 254 streaming true 00:00:00 254 single_origin true 00:00:00 254 passed_cors_access_check false 00:00:00 254 range_header_supported false 00:00:00 254 pipeline_state kInitDemuxer 00:00:00 255 error FFmpegDemuxer: open context failed 00:00:00 255 pipeline_state kStopping 00:00:00 255 pipeline_state kStopped 00:00:00 255 pipeline_error demuxer: could not open |
I thought so:) Ok now that we have that solved, it seems that Chrome can't even detect the format. I'd advise trying VLC with the http:// url and maybe also capturing a Wireshark log: 1) Chrome usually sends a Range: 0- header in the request to detect whether the source is streamable or no - not sure how GStreamer handles this (and if it handles HTTP requests at all) 2) If the headers are ok, then the atoms of the stream must be inspected. 2016-04-27 14:36 GMT+03:00 bomba <[hidden email]>: You are right. tcp://ip:port was terribly wrong. _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
test case 1:
gst-launch-1.0 -v videotestsrc is-live=true ! clockoverlay shaded-background=true font-desc="Sans 38" ! theoraenc ! oggmux ! tcpserversink host=0.0.0.0 port=8080 VLC - http://127.0.0.1:8080 don't work, tcp://127.0.0.1:8080 works HTML5 - http://127.0.0.1:8080 works, I see the stream in the webpage test case 2: gst-launch-1.0 -vvv videotestsrc is-live=true ! clockoverlay shaded-background=true font-desc="Sans 38" ! x264enc ! mp4mux streamable=true fragment-duration=1000 ! tcpserversink host=0.0.0.0 port=8080 VLC - http://127.0.0.1:8080 don't work, tcp://127.0.0.1:8080 don't work HTML5 - http://127.0.0.1:8080 don't work I'm pretty sure this is a muxing problem. How do you suggest to inspect the atoms? |
Well, the easiest way would be to use wget on http://127.0.0.1:8080, save the contents to file and use Atomic Parsley on that file (actually, you can also try playing the file with VLC, if the file contains valid mp4 content it should play). Did you anything relevant in the VLC logs for the test case 2? 2016-04-27 15:04 GMT+03:00 bomba <[hidden email]>: *test case 1: * _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
cvlc -v tcp://127.0.0.1:8080 VLC media player 2.2.2 Weatherwax (revision 2.2.2-0-g6259d80) [000000000110d338] dummy interface: using the dummy interface module... [00007f2ed4001dc8] mp4 demux warning: MP4 plugin discarded (not seekable) ./AtomicParsley test.mp4 -T 1 AtomicParsley error: bad mpeg4 file (ftyp atom missing or alignment error). |
> ./AtomicParsley test.mp4 -T 1 > AtomicParsley error: bad mpeg4 file (ftyp atom missing or alignment error). Ok this is extremely weird. Can you post lets say the first 16 bytes in hex from the file? Normally an mp4 file should begin with an ftyp atom so you should have the FourCC ftyp in the bytes 5-8 (first 4 are size), but it seems that the actual contents are totally different. 2016-04-27 16:05 GMT+03:00 bomba <[hidden email]>: Rudolfs Bundulis wrote _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |