Streaming methods used from this server

html video tag
True http live stream vs HLS within text
(requires vlc NPAPI plug-in, not more supported by current browsers)
Simple external call
html video tag with UHD content (h264)
External call of hevc UHD content (h264 and h265)
The usage of vlc for offline splicing of mp4 file and generation of a m3u8 metafile
The usage of vlc plug-in for realtime generation of a m3u8 file

The video used in this page has been got from the website yosemite project.
It is a timelapse video 5 minute long
More informations about Colin Delehanty and Sheldon Neil that directed the people that made it can be read on the about page

html video tag

The following is a plain usage of a html video tag of the h264 video file streamed by Apache: the video file is on the server and it is recalled by the streaming server on request.

Only h264 (or VP8) video can be embedded in html page in this way, and it is reproduced from a copy in the terminal cache.
Not all the terminals could be able to download it seamless, because not all the terminals could have enough cache for this purpose.
On the contrary almost all terminals have enough computational power to decode h264 (and generally speaking much much more).
From these potential unavailability moves the
MPEG-DASH standard
The video is locally downloaded as it is (thanks to the TCP/IP) and reproduced through the commands.
For the peace of the sense of rights people this content will be deleted and will be hardly reacheable from outside.

<video id="yosemite_h264" poster="../jpg/yosemite_poster.jpg" controls> <source src="../media/Yosemite_h264_SD100.mp4" type="video/mp4" /> </video>


True http live stream vs hls within text

require the support of vlc NPAPI plug-in (no more supported by current browsers)
The usage of legacy version of common browsers is the only chance to use VLC NPAPI plug-in as I wrote in
True unicast streaming has lost his appeal

Original live http streaming with VLC
(no more supported by current browsers)


The embedded stream can be directly loaded with an h265 player (such as VLC media player) recalling http://www.iginomanfre.it/yosemite_SD100.

The banned VLC cone means that your browser do not support VLC NPAPI Plug-in

Segmented stream in HLS generated with VLC
(no more supported by current browsers)


The embedded stream can be directly loaded with an h265 player (such as VLC media player) recalling http://www.iginomanfre.it/hlsB/hlsB.m3u8, the metafile of HLS trasmission.
This is an offline hls material spliced with VLC.



This is how this page appears with firefox 51.0b9. (see the post firefox 51)

Technically it is a Standard definition 720x400 progressive video precompressed in hevc (h265) 16:9 100-300 Kbps variable bitrate, 24 frame per second with 64 Kbps AAC-LC stereo 44KHz audio through the FFmpeg x265 encoder, wrapped in mpeg-4 ISO container.
A mean variable bitrate of 200 Kbps means a bandwidth variable 100 and 350 Kbps, it could be arranged by the ISO mpeg wrapper but this is not the case.
The decompression of hevc, being about 1000 time more complex than mpeg2, requires enough power, and this page that may contains two simultaneous streams, could not be light to be processed.
But do not worry: at 99.99% probability your browser will not show you any video within text.
These streams are transmitted (in unicast) and could not reproduced by any browser through its native capabilities and the <video> instruction because, for license problems, browsers can only play h264 and vp8 video formats.


html video tag with UHD content

The only difference with the former is the size of the material stream: UHD (3860x2160 pixel).
Due to the size (greater than any usual monitor, I play a resized reproduction, but the stream are 100% and and the efforts of the browser may be 100%. In this sense, please note that my Core2duo laptop is unable to reproduce it, the hadware decoder of a cheap SetTopBox reboots, and only the intel cube equipped with i5 processor is able to play it due to the adopted GPU.

The video is resized only for user interface coherence purpose.
If you want to download it
click over this link, with right mouse button and save as.
The left button click will reproduce the stream in full size (if possible)
The filesize is 358 MB, so this activity should be avoid on mobile phones. The reproduction may be not fluid for network problems: as shown from the following graph the mean bitrate in 10 Mbps, but there are many spikes above 10 Mbps and one over 20 Mbps.


The reproduction may be not fluid also for unsufficient decoding capability: the following graph shows the activity of intel cube GPU during the reproduction via web.

GPU activity of the intel cube i5 (video decode 28%, 3D about 20%)


Bandwidth drained by the intel cube i5 (less than 15 Mbps, connected in copper)

The video call is the following. Please note the width at 720 pixel (about 1/4)

<video id="yosemite_UHD_h264" width="720" poster="../jpg/yosemite_poster.jpg" controls> <source src="../video/yosemite_II_h264_4k_9000.mp4" type="video/mp4" /> </video>
The following is the mediainfo analysis of the file General Complete name : F:\yosemite\yosemite_II_h264_4k_9000.mp4 Format : MPEG-4 Format profile : Base Media Codec ID : isom (isom/iso2/avc1/mp41) File size : 350 MiB Duration : 5 min 19 s Overall bit rate : 9 173 kb/s Writing application : Lavf58.20.100 Video ID : 1 Format : AVC Format/Info : Advanced Video Codec Format profile : High@L5.1 Format settings : CABAC / 4 Ref Frames Format settings, CABAC : Yes Format settings, RefFrames : 4 frames Codec ID : avc1 Codec ID/Info : Advanced Video Coding Duration : 5 min 19 s Bit rate : 9 000 kb/s Width : 3 840 pixels Height : 2 160 pixels Display aspect ratio : 16:9 Frame rate mode : Constant Frame rate : 23.976 (24000/1001) FPS Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Scan type : Progressive Bits/(Pixel*Frame) : 0.045 Stream size : 344 MiB (98%) Writing library : x264 core 146 r2538 121396c Encoding settings : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x133 / me=hex subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 fast_pskip=1 / chroma_qp_offset=-2 / threads=6 / lookahead_threads=1 sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 rc=2pass / mbtree=1 / bitrate=9000 / ratetol=1.0 / qcomp=0.60 qpmin=10 / qpmax=51 / qpstep=4 / cplxblur=20.0 / qblur=0.5 ip_ratio=1.40 / aq=1:1.00 Codec configuration box : avcC Audio ID : 2 Format : AAC LC Format/Info : Advanced Audio Codec Low Complexity Codec ID : mp4a-40-2 Duration : 5 min 19 s Bit rate mode : Constant Bit rate : 160 kb/s Channel(s) : 2 channels Channel layout : L R Sampling rate : 48.0 kHz Frame rate : 46.875 FPS (1024 SPF) Compression mode : Lossy Stream size : 6.10 MiB (2%) Default : Yes Alternate group : 1


Simple external call

Please note that this streaming way could not be available: it is always available only for hslB, because it has been spliced offline.

This one is the plain external reference to an .m3u8 metafile to be open with an application resident on the client:


the above image is a plain link to an external object...
But
1) depends on the chosen player: there could be some opening problem

These are the m3u8 files downloaded (and opened) in sequence repeating the recall n times

2) m3u8 file has been thought for playlists, the player plays the download state (hls8-n), not the next (hls8-n+1).
hlsB.m3u8 works always because it is steady .m3u8 file: it is a fixed and closed playlist,
which never updates and whose content are never updated.
Clicking on the repeat option the reproduction will never last.
anyhow the calling line is the following:

<p><a href="http://iginomanfre.it/hls8/hls8.m3u8"><img border=0 src="../jpg/yosemite_poster.jpg"></a> passing through the following steps:

or

depending on the player and its version.
Clicking on the image your browser will ask you what I must do with this file? Open or download.


Really it will anyhow downloaded but automatically it will opened with the application you specify in the settings (here VLC).


external call of hevc UHD content

The server is also able to stream (but the browsers are unable to reproduce it) an UHD hevc content (3892x2160 pixels).
After clicking
clicking over this link, right mouse button you can:


save as (the filesize is 182 MB)

or open the stream in the external application:


copy the address of the link ("http://iginomanfre/video/yosemite_II_hevc_4k_4500.mp4")


open a suitable application (such as VLC)


and paste the copied address as a stream to open


the link pasted


play it (it is a UHD: 3892x2160 pixels!)


this is the drained bandwidth


this is the gpu effort


stopping the play the gpu effort immediately stops


stopping the play the network drain immediately stops

The mediainfo analysis of this file is the following
General Complete name : F:\yosemite\yosemite_II_hevc_4k_4500.mp4 Format : MPEG-4 Format profile : Base Media Codec ID : isom (isom/iso2/mp41) File size : 178 MiB Duration : 5 min 19 s Overall bit rate : 4 670 kb/s Writing application : Lavf58.20.100 Video ID : 1 Format : HEVC Format/Info : High Efficiency Video Coding Format profile : Main@L5@Main Codec ID : hev1 Codec ID/Info : High Efficiency Video Coding Duration : 5 min 19 s Bit rate : 4 504 kb/s Width : 3 840 pixels Height : 2 160 pixels Display aspect ratio : 16:9 Frame rate mode : Constant Frame rate : 23.976 (24000/1001) FPS Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Bits/(Pixel*Frame) : 0.023 Stream size : 172 MiB (96%) Writing library : x265 2.4:[Windows][MSVC 1900][64 bit] 8bit Encoding settings : cpuid=1173503 / frame-threads=2 / numa-pools=4 wpp / no-pmode / no-pme / no-psnr / no-ssim log-level=2 / input-csp=1 / input-res=3840x2160 interlace=0 / total-frames=0 / level-idc=0 high-tier=1 / uhd-bd=0 / ref=3 / no-allow-non-conformance no-repeat-headers / annexb / no-aud / no-hrd / info hash=0 / no-temporal-layers / open-gop / min-keyint=25 keyint=250 / bframes=3 / b-adapt=1 / b-pyramid bframe-bias=0 / rc-lookahead=40 / lookahead-slices=8 scenecut=40 / no-intra-refresh / ctu=64 / min-cu-size=8 no-rect / no-amp / max-tu-size=32 / tu-inter-depth=1 tu-intra-depth=1 / limit-tu=0 / rdoq-level=0 / dynamic-rd=0.00 no-ssim-rd / signhide / no-tskip / nr-intra=0 / nr-inter=0 no-constrained-intra / strong-intra-smoothing / max-merge=2 limit-refs=3 / no-limit-modes / me=3 / subme=5 / merange=16 temporal-mvp / weightp / weightb / no-analyze-src-pics deblock=0:0 / sao / no-sao-non-deblock / rd=3 / early-skip rskip / no-fast-intra / no-tskip-fast / no-cu-lossless no-b-intra / rdpenalty=0 / psy-rd=1.00 / psy-rdoq=0.00 no-rd-refine / analysis-mode=0 / no-lossless / cbqpoffs=0 crqpoffs=0 / rc=abr / bitrate=4500 / qcomp=0.60 / qpstep=4 stats-write=0 / stats-read=1 / cplxblur=20.0 / qblur=0.5 ipratio=1.40 / pbratio=1.30 / aq-mode=2 / aq-strength=1.00 cutree / zone-count=0 / no-strict-cbr / qg-size=32 no-rc-grain / qpmax=69 / qpmin=0 / sar=0 / overscan=0 videoformat=5 / range=0 / colorprim=2 / transfer=2 colormatrix=2 / chromaloc=0 / display-window=0 / max-cll=0,0 min-luma=0 / max-luma=255 / log2-max-poc-lsb=8 / vui-timing-info vui-hrd-info / slices=1 / opt-qp-pps / opt-ref-list-length-pps no-multi-pass-opt-rps / scenecut-bias=0.05 / no-opt-cu-delta-qp no-aq-motion / no-hdr / no-hdr-opt / no-dhdr10-opt refine-level=5 / no-limit-sao Codec configuration box : hvcC Audio ID : 2 Format : AAC LC Format/Info : Advanced Audio Codec Low Complexity Codec ID : mp4a-40-2 Duration : 5 min 19 s Bit rate mode : Constant Bit rate : 160 kb/s Channel(s) : 2 channels Channel layout : L R Sampling rate : 48.0 kHz Frame rate : 46.875 FPS (1024 SPF) Compression mode : Lossy Stream size : 6.10 MiB (3%) Default : Yes Alternate group : 1


The usage of vlc for realtime generation of a m3u8 file

VLC plug-in is no more supported by latest de facto standard browsers.
As of writing with these browsers is only possible to play h264 or vp8 video materials within html page.
So the only way to play a HEVC video is an external call.
The stream in input is a loop continously generated by VLC (as well an external stream) and broken in 10 seconds chops (aka segments) by a further instance of VLC which updates in realtime the .m3u8 manifest/metafile.

The usage of VLC for continous streaming as well realtime splicing easily bring the system in an unstable state because the loop of VLC drains at each loop a very small amount of system RAM, that - in few days - bring the system to reboot.
For this reason the hls8 chops could not be available.
Please consider to recall hlsB (http://iginomanfre.it/hlsB/hlsB.m3u8) or hls2 (http://iginomanfre.it/hls2/hls2.m3u8) offline spliced. The production of hlsB is widely dealt in
the next section.

The .m3u8 manifest file (or metafile) is a realtime updated file by VLC meanwhile it produces the chops of the original source http://www.iginomanfre.it/yosemite_SD100.
The following is http://iginomanfre.it/hls8/hls8.m3u8 one day after it has been launched:

#EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:3 #EXT-X-ALLOW-CACHE:NO #EXT-X-MEDIA-SEQUENCE:31691 #EXTINF:8.05, http://iginomanfre.it/hls8/hls8-00031691.ts #EXTINF:7.96, http://iginomanfre.it/hls8/hls8-00031692.ts #EXTINF:8.12, http://iginomanfre.it/hls8/hls8-00031693.ts #EXTINF:7.91, http://iginomanfre.it/hls8/hls8-00031694.ts #EXTINF:7.91, http://iginomanfre.it/hls8/hls8-00031695.ts And these are the files generated (sorted by date)

The red border window ideally moves down passing the time (and changing the m3u8 file)

Counters, starting from 1, are resetted periodically (they have a lenght of 8 digit) and all the segments are deleted before restarting the splitting.
Metafile and chops are accessed through Apache.
The required bandwidth is about equal the nominal transmitted.

The meaningful section of the batch I used for the generation is the following:
del "C:\Program Files (x86)\...\hls8\*.*" /Q "c:\program files\vlc\vlc" --network-caching=300 http://localhost:64039/Yosemite :sout=#std{access=livehttp{seglen=10,delsegs=true,numsegs=5, index="C:\Program Files (x86)\...\hls8\hls8.m3u8", index-url=http://iginomanfre.it/hls8/hls8-########.ts},mux=ts{use-key-frames}, dst="C:\Program Files (x86)\...\hls8\hls8-########.ts"} The meaning of these lines is:
1) Open the true stream (in loop, never ending) http://localhost:64039/Yosemite
(available to external viewing as http://iginomanfre.it/Yosemite_SD100)
2) split it in slices of 10 seconds each, 3) delete the segments after the creation of 5 new good items
4) align the splittings to key-frames, save the slices on the server on this directory .
5) log these created segments in the .m3u8 file referring urls therein as http://...

Please note that the video is hevc (h265) despite not at the maximum compression efficiency because uses key-frames.

It cannot be played by the browsers without an external plug-in


This is the analysis of the source stream
General ID : 27220 (0x6A54) Complete name : C:\Program Files (x86)\...\hls8\hls8-00031912.ts Format : MPEG-TS File size : 273 KiB Duration : 7 s 848 ms Overall bit rate mode : Variable Overall bit rate : 275 kb/s Video ID : 100 (0x64) Menu ID : 1 (0x1) Format : HEVC Format/Info : High Efficiency Video Coding Format profile : Main@L3@Main Codec ID : 36 Duration : 16 h 50 min Width : 720 pixels Height : 400 pixels Display aspect ratio : 16:9 Frame rate : 23.976 (23976/1000) FPS Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Writing library : x265 1.7:[Windows][GCC 4.9.2][32 bit] Encoding settings : wpp / ctu=64 / min-cu-size=8 .... Audio ID : 200 (0xC8) Menu ID : 1 (0x1) Format : AAC Format/Info : Advanced Audio Codec Format version : Version 4 Format profile : LC Muxing mode : ADTS Codec ID : 15 Duration : 7 s 941 ms Bit rate mode : Variable Channel(s) : 2 channels Channel positions : Front: L R Sampling rate : 44.1 kHz Frame rate : 43.066 FPS (1024 spf) Compression mode : Lossy Delay relative to video : -68 ms Menu ID : 32 (0x20) Menu ID : 1 (0x1) Duration : 7 s 848 ms List : 200 (0xC8) (AAC) / 100 (0x64) (HEVC) Service type : advanced codec SD digital television

The usage of vlc for offline splicing of mp4 file and generation of a m3u8 metafile

The usage of vlc for continous streaming as well realtime splicing easily bring the system in an unstable state because the loop of VLC drains loop by loop a very small amount of system RAM, that - in few days - reboot.
The reproduction of a m3u8 metafile (or more exactly playlist) can also be shared on the web by a standard streaming server such as apache: it is sufficient to split offline the file and save the chops as generated by VLC.
As the former, even this is a plain external reference to an hlsB.m3u8 metafile to be open with an application resident on the client:


It seems the same but does not changes only the 8 in B: it is a different approach.
The chops are not obtained in real time from a live streaming but once from a file.
The metafile (such as hlsB.m3u8) is produced from a mp4 file with a command line such as:

"c:\program files\vlc\vlc" :file-caching=300 "mp4_file_with_path" :sout=#std { access=livehttp{seglen=10,delsegs=false, index="<source_m3u8_file_with_path>", index-url=<target url file>-########.ts}, mux=ts{use-key-frames}, dst="<path and filename of chops>-########.ts" }
please note that:
1) the splitted source is a file. The path must following the operating system conventions: windows backslash (\), linux slash (/).
2) the eight hashes -######## at the end of the filenames will be replaced by vlc with a counter.
3) The mp4 source file could be the same h264 used above in the html embedded, but it is an hevc (h265) file wrapped in mp4, that the most diffused browsers are - without plug-in - unable to play.

This is the hlsB.m3u8

#EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:3 #EXT-X-ALLOW-CACHE:NO #EXT-X-PLAYLIST-TYPE:VOD #EXT-X-MEDIA-SEQUENCE:1 #EXTINF:8.05, http://iginomanfre.it/hlsB/hlsB-00000001.ts #EXTINF:7.96, http://iginomanfre.it/hlsB/hlsB-00000002.ts #EXTINF:8.12, http://iginomanfre.it/hlsB/hlsB-00000003.ts #EXTINF:7.91, http://iginomanfre.it/hlsB/hlsB-00000004.ts #EXTINF:7.91, http://iginomanfre.it/hlsB/hlsB-00000005.ts #EXTINF:7.92, http://iginomanfre.it/hlsB/hlsB-00000006.ts #EXTINF:8.13, http://iginomanfre.it/hlsB/hlsB-00000007.ts #EXTINF:3.96, http://iginomanfre.it/hlsB/hlsB-00000008.ts #EXTINF:10.24, http://iginomanfre.it/hlsB/hlsB-00000009.ts #EXTINF:9.78, http://iginomanfre.it/hlsB/hlsB-00000010.ts #EXTINF:7.95, http://iginomanfre.it/hlsB/hlsB-00000011.ts #EXTINF:7.95, http://iginomanfre.it/hlsB/hlsB-00000012.ts #EXTINF:8.10, http://iginomanfre.it/hlsB/hlsB-00000013.ts #EXTINF:7.94, http://iginomanfre.it/hlsB/hlsB-00000014.ts #EXTINF:8.10, http://iginomanfre.it/hlsB/hlsB-00000015.ts #EXTINF:7.95, http://iginomanfre.it/hlsB/hlsB-00000016.ts #EXTINF:7.93, http://iginomanfre.it/hlsB/hlsB-00000017.ts #EXTINF:8.10, http://iginomanfre.it/hlsB/hlsB-00000018.ts #EXTINF:9.83, http://iginomanfre.it/hlsB/hlsB-00000019.ts #EXTINF:6.04, http://iginomanfre.it/hlsB/hlsB-00000020.ts #EXTINF:8.12, http://iginomanfre.it/hlsB/hlsB-00000021.ts #EXTINF:7.94, http://iginomanfre.it/hlsB/hlsB-00000022.ts #EXTINF:3.95, http://iginomanfre.it/hlsB/hlsB-00000023.ts #EXTINF:8.11, http://iginomanfre.it/hlsB/hlsB-00000024.ts #EXTINF:3.97, http://iginomanfre.it/hlsB/hlsB-00000025.ts #EXTINF:7.95, http://iginomanfre.it/hlsB/hlsB-00000026.ts #EXTINF:8.09, http://iginomanfre.it/hlsB/hlsB-00000027.ts #EXTINF:7.94, http://iginomanfre.it/hlsB/hlsB-00000028.ts #EXTINF:7.94, http://iginomanfre.it/hlsB/hlsB-00000029.ts #EXTINF:8.21, http://iginomanfre.it/hlsB/hlsB-00000030.ts #EXTINF:7.85, http://iginomanfre.it/hlsB/hlsB-00000031.ts #EXTINF:7.95, http://iginomanfre.it/hlsB/hlsB-00000032.ts #EXTINF:10.44, http://iginomanfre.it/hlsB/hlsB-00000033.ts #EXTINF:5.82, http://iginomanfre.it/hlsB/hlsB-00000034.ts #EXTINF:7.91, http://iginomanfre.it/hlsB/hlsB-00000035.ts #EXTINF:7.90, http://iginomanfre.it/hlsB/hlsB-00000036.ts #EXTINF:7.91, http://iginomanfre.it/hlsB/hlsB-00000037.ts #EXTINF:7.97, http://iginomanfre.it/hlsB/hlsB-00000038.ts #EXTINF:10.38, http://iginomanfre.it/hlsB/hlsB-00000039.ts #EXTINF:10.46, http://iginomanfre.it/hlsB/hlsB-00000040.ts #EXTINF:6.22, http://iginomanfre.it/hlsB/hlsB-00000041.ts #EXT-X-ENDLIST

Differently from the next realtime generated you can see the list contains the references to all the generated and not the sliding window.

... to be continued ...