Reino's hobby website

Copyright © 2015, Reino Wijnsma (powered by Notepad)

Uitzending Gemist

Inleiding

Ideaal UitzendingGemist, of NPO.nl zoals het nu heet. Programma's terugkijken wanneer jij dat wilt. Je hoeft er geen tv-abonnement meer voor af te sluiten. Maar dan moet het wel werken. Gelukkig werkt het tegenwoordig prima (ervaringen van Nederlanders in het buitenland uitgezonderd), maar tot een aantal jaar terug heeft het mij en menig ander aardig wat irritaties opgeleverd. Terwijl er nu gebruik wordt gemaakt van Adobe Flash, was het toen Microsoft Silverlight wat de klok sloeg. Ik kan me nog herinneren dat ik vaak trukjes moest uithalen, of zelfs Silverlight opnieuw moest installeren om een gemiste uitzending te kunnen bekijken. Maar bij mij speelde er nóg iets. Mijn computer was oud en dat is ie nog, want ik heb en gebruik 'm nog steeds. Zo oud dat er op de website zelf gewoon niet fatsoenlijk een video bekeken kan worden. De processor is de hele tijd voor de volle 100% belast, met een stotterende video tot gevolg. En dan heb ik het nog niet eens over de HD videostreams van RTLXL.nl. Niet te doen.

Oplossingen

De video die je bekijkt staat natuurlijk als bestand ergens op de servers van de Publieke Omroep, dus het mooiste zou zijn als je die rechtstreeks zou kunnen openen met je favoriete mediaspeler, om op die manier de processor te ontlasten en juist de videokaart het decodeerwerk te laten doen. In dat geval wordt mijn oude processor nog maar voor ±5% belast! In het begin waren het vooral trukjes die ik te weten ben gekomen om uit de broncode een directe videolink te kunnen achterhalen. Maar de techniek staat niet stil, dus die trukjes werkten al snel niet meer. Gelukkig kwamen daar later websites en programma's voor in de plaats die niet alleen een directe videolink konden achterhalen, maar ook het downloaden een stuk eenvoudiger maakten:
  • Uitzending Gemist Mobiel en RTL Gemist Mobiel bijvoorbeeld. Twee websites met een overzicht van bijna alle programma's van NPO.nl en RTLXL.nl respectievelijk, die je rechtstreeks kon bekijken of downloaden in de hoogste kwaliteit. Was erg gemakkelijk. De één wordt niet meer geüpdate en de andere is uit de lucht. Jammer.
  • Downloadgemist.nl. Een website opgezet en onderhouden door enthousiaste en betrokken ontwikkelaars. Het heeft een vraagbaak en van de ontwikkelingen op de website wordt een blog bijgehouden. Op dit moment kunnen er alleen video's van NPO.nl worden gedownload. Aanrader!
  • GemistDownloader. Een software programma waarmee video's van NPO.nl, RTLXL.nl, Kijk.nl en meer gedownload en geconverteerd kunnen worden. Voelt wat log aan, is niet bedoeld voor de veeleisende gebruiker en is niet opensource. Ik heb het nooit zo'n prettig programma gevonden.
  • Youtube-dl. Mijn ontdekking van 2014! Een klein in Python geschreven commandoregel programma met vele mogelijkheden. Ik denk oorspronkelijk geschreven om Youtube video's mee te kunnen downloaden, maar ondertussen heeft het ondersteuning voor 700 websites!!! NPO.nl, RTLXL.nl en Kijk.nl zaten daar vorig jaar nog niet bij, maar door samen met nog een aantal actieve gebruikers zoveel mogelijk informatie aan te leveren en fouten aan te kaarten, is daar nu ook ondersteuning voor.

Verscheidene manieren dus om niet meer Silverlight of Flash te hoeven gebruiken. Talloze avonden was ik zoet met het zonder reclame(!) terugkijken van tv-programma's wanneer ik wilde, door gewoon een aantal videolinks aan MPC-BE, mijn favoriete mediaspeler, als een afspeellijst toe te voegen. Sinds ik echter een mooie dunne Samsung SMART TV, heb is daar verandering in gekomen. Met de speciaal voor Samsung SMART TV's geschreven UGSamsungApp is het terugkijken van NPO, RTLXL en Kijk programma's nog makkelijker geworden. Als bonus kun je NPO 1, 2, 3 en alle themakanalen ook nog live bekijken. Tv-abonnement kan de deur uit.
Toch gebruik ik Youtube-dl nog af en toe. Puur vanwege het indrukkende aantal ondersteunde websites. Ik heb op het punt gestaan een batchscript wat ik voor Youtube-dl heb gemaakt uit te brengen, maar toen ik op een gegeven moment door iemand op het programma Xidel werd geattendeerd, heb ik hier van afgezien en heb ik me volledig verdiept in Xidel.
Xidel,... achteraf bekeken het Zwitsers zakmes voor tekstontleding. Het is uiteindelijk de aanzet geweest voor BatchGemist. Een batchscript waarmee ik al het ontleedwerk zelf doe en welke ondersteuning heeft voor een select aantal websites.

Twee formaten

Ik ben natuurlijk niet de enige die wel eens een tv-programma wil downloaden. De afgelopen tijd heb ik verspreid over het internet veel (specifieke) vragen hierover voorbij zien komen. Daarom wil ik graag, met de kennis die ik heb, over NPO.nl het één en ander toelichten.

Tegenwoordig worden tv-programma's op NPO.nl en RTLXL.nl in 2 verschillende soorten formaten aangeboden. Op Kijk.nl, voor zover ik weet, in één formaat. De zogenaamde progressieve- en dynamische videostreams. Elke soort is beschikbaar in verschillende videoresoluties, oftewel een hoge- en lagere videokwaliteit.
Tot een aantal jaar geleden was er alleen de progressieve variant. Sinds het voorjaar van 2012 is bij NPO de dynamische variant hier bij gekomen en wordt vanaf dan standaard voorgeschoteld. Het verschil zit 'm in de manier waarop de videostreams zijn samengesteld en hoe ze worden geladen. Bij de progressieve variant gaat het om één videobestand die volledig wordt geladen, of je de gehele video nu bekijkt of alleen een begin. Bij de dynamische variant gaat dat wat efficiënter. De gehele videostream is opgedeeld in stukjes van ±5 seconden, waardoor alleen die stukjes geladen hoeven te worden die jij wilt bekijken. Een ander voordeel is dat, in het geval je internet niet snel genoeg is, er nu vloeiend op een lagere kwaliteit overgeschakeld kan worden, i.p.v. te moeten bufferen. Toch worden progressieve videostreams ook nog steeds aangeboden. Dit is omdat iOS en Android apparaten geen Flash of Silverlight ondersteunen.

Dynamisch uit de broncode

Mocht je geen gebruik willen maken van Downloadgemist.nl, GemistDownloader, Youtube-dl, of BatchGemist, dan kun je van de dynamische videostreams, die op een Windows pc standaard worden geladen, toch een videolink achterhalen.
Bij het laden van die videostreams laadt je internetbrowser in werkelijkheid een zogenaamde m3u8-playlist. In dit geval spreek ik daarom ook liever over een videoafspeellijst i.p.v een videolink. Deze videoafspeellijst vertegenwoordigt al die stukjes van ±5 seconden, om ze op die manier in de goede volgorde op je scherm te tonen.
Laten we als voorbeeld het 20:00u NOS Journaal van 16-08-2015 nemen, met de programmalink http://www.npo.nl/nos-journaal/16-08-2015/POW_00942286.
Ga in Firefox* naar 'Extra' -> 'Webontwikkelaar' -> 'Webconsole' (Ctrl+Shift+K), klik dan op de programmalink en start de video. In de webconsole zul je een hele lijst zien van bestanden die op dat moment worden geladen. Je ziet bijvoorbeeld POW_00942286-audio_eng=128000-video=1001000-1.ts en oplopend. Dit zijn de videobestanden van 5 à 6 seconden. Je zou natuurlijk al die kleine videobestanden kunnen downloaden, om er daarna weer één videobestand van te maken. Maar gelukkig staan ze allemaal al op volgorde in POW_00942286.m3u8 en POW_00942286-audio_eng=128000-video=1001000.m3u8; de zogenaamde videoafspeellijsten. Laten we deze twee eens nader bekijken, door rechtermuisknop -> 'URL openen in nieuw tabblad' en dan te openen met Kladblok.

*Misschien dat Internet Explorer en Chrome ook een webconsole o.i.d. hebben, maar ik gebruik Firefox.

POW_00942286.m3u8:

#EXTM3U
#EXT-X-VERSION:1
## Created with Unified Streaming Platform(version=1.7.6)
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=281960,CODECS="mp4a.40.2,avc1.66.30",RESOLUTION=288x162
POW_00942286-audio_eng=65000-video=201000.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=666740,CODECS="mp4a.40.2,avc1.66.30",RESOLUTION=416x234
POW_00942286-audio_eng=128000-video=501000.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=878740,CODECS="mp4a.40.2,avc1.66.30",RESOLUTION=544x306
POW_00942286-audio_eng=128000-video=701000.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1196740,CODECS="mp4a.40.2,avc1.66.30",RESOLUTION=608x342
POW_00942286-audio_eng=128000-video=1001000.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=135680,CODECS="mp4a.40.2"
POW_00942286-audio_eng=128000.m3u8

POW_00942286-audio_eng=128000-video=1001000.m3u8:

#EXTM3U
#EXT-X-VERSION:1
## Created with Unified Streaming Platform(version=1.7.6)
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:9
#USP-X-TIMESTAMP-MAP:MPEGTS=900000,LOCAL=1970-01-01T00:00:00Z
#EXTINF:8, no desc
POW_00942286-audio_eng=128000-video=1001000-1.ts
#EXTINF:8, no desc
POW_00942286-audio_eng=128000-video=1001000-2.ts
#EXTINF:8, no desc
POW_00942286-audio_eng=128000-video=1001000-3.ts
...
#EXTINF:8, no desc
POW_00942286-audio_eng=128000-video=1001000-107.ts
#EXTINF:8, no desc
POW_00942286-audio_eng=128000-video=1001000-108.ts
#EXTINF:2, no desc
POW_00942286-audio_eng=128000-video=1001000-109.ts
#EXT-X-ENDLIST

POW_00942286.m3u8 is de zogenaamde manifest-playlist. Je kunt het zien als een overzicht van alle beschikbare videoresoluties. Zoals te zien is het NOS Journaal beschikbaar in de videoresoluties 288x162 t/m 608x342 en een geluidsspoor. Als je internetsnelheid onder een bepaalde BANDWIDTH komt, kan er in je internetbrowser, d.m.v. deze manifest-playlist, gemakkelijk op een lagere videoresolutie overgeschakeld worden.

POW_00942286-audio_eng=128000-video=1001000.m3u8 is een videoafspeellijst van 109 videobestanden (hier ingekort) van elk 5 à 6 seconden. Maar voor software met HLS-ondersteuning is het een dynamische videostream van 14 minuten en 26 seconden met een videoresolutie van 608x342.
Zoals je in de webconsole kunt zien is de volledige (tijdelijke) videolink van deze dynamische videostream bijvoorbeeld:

http://l24m662a87a1be00558413c8000000.81a540340f91660e.adaptive-e99c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2015/POW_00942286/POW_00942286.ism/POW_00942286-audio_eng=128000-video=1001000.m3u8

Downloadgemist.nl is de enige zonder ondersteuning voor de dynamische videostreams. BatchGemist, Youtube-dl en GemistDownloader allemaal wel.

Live streams

Via http://www.npo.nl/live en http://www.npo.nl/radio kun je live televisie kijken en radio luisteren. Hieronder een overzicht van al deze kanalen/zenders (klik op het plusje voor de themakanalen/zenders):

De links van de televisiekanalen zijn programmalinks en moeten dus eerst nog vertaald worden. De links van de radiozenders zijn directe audiolinks en kunnen zo geopend worden.
Net als hierboven zijn de televisiekanalen ook dynamische videostreams. Op dezelfde manier kun je ook hier een directe videolink/videoafspeellijst achterhalen. Van NPO-1 is de (tijdelijke) videolink met de hoogste videoresolutie bijvoorbeeld:

http://l2cm4ac6d4764d00558421e3000000.4a2741cced59038b.kpnsmoote1c.npostreaming.nl/d/live/npo/tvlive/ned1/ned1.isml/ned1-audio=128000-video=900000.m3u8

Downloadgemist.nl is de enige zonder ondersteuning voor de live streams. BatchGemist, Youtube-dl en GemistDownloader ondersteunen ze wel, met voor GemistDownloader wel de kanttekening dat het programma je doorverwijst naar de website waar d.m.v. javascript een directe videolink voor alleen de manifest-playlist kan worden gegenereerd.

Progressief m.b.v. derden


Highslide JS
BatchGemist.
Highslide JS
Youtube-dl.
Highslide JS
Downloadgemist.nl.
Highslide JS
GemistDownloader.

Maak je wel gebruik van BatchGemist, Youtube-dl, Downloadgemist.nl, of GemistDownloader, dan krijg je, behalve van BatchGemist, standaard een (tijdelijke) videolink van de progressieve videostream voorgeschoteld. Van het 20:00u NOS Journaal van 21-05-2015 is dat bijvoorbeeld:

http://content50c1a.omroep.nl/urishieldv2/l27m7a993b671212b5e80055d45875000000.30afefbed80b2b1935ef577eb3b849c4/s05/ceresodi/h264/1/nos/rest/2015/POW_00942286/std.20150816.m4v

Alle 4 hebben ondersteuning voor de progressieve videostreams. In eerste instantie heeft de videolink nog een achtervoegsel wat begint met ?odiredirecturl, maar omdat het voor het afspelen en/of downloaden niet noodzakelijk is, laten BatchGemist en Downloadgemist.nl het achterwege.

Dynamische videofragmenten

Bij bepaalde programma's, zoals Nieuwsuur, is er op de programma-pagina naast het tabblad "Afleveringen" ook een tabblad "Fragmenten". Dit zijn geen op zichzelf staande video's, want deze videofragmenten verwijzen d.m.v. een begin- en eindtijd allemaal naar de volledige uitzending waar ze in vóórkomen.
Laten we als voorbeeld het videofragment "Terug naar de rampplek van MH17" uit Nieuwsuur van 07-07-2015 nemen, met de programmalink http://www.npo.nl/nieuwsuur/07-07-2015/VPWON_1235827/POMS_NOS_1331442. Merk op dat de prid van de gehele uitzending VPWON_1235782 is, terwijl die van het videofragment POMS_NOS_1331442 is. Het videofragment heeft dus een eigen prid.
In het verhaal van de dynamische videostreams hier boven kreeg je m.b.v. de webconsole van Firefox een hele lijst van bestanden te zien. Eén van die bestanden is http://e.omroep.nl/metadata/POW_00942286. Dit is een zogenaamde JSON welke belangrijke informatie bevat over de desbetreffende videostream. Ook het videofragment van Nieuwsuur heeft een eigen JSON.

http://e.omroep.nl/metadata/POMS_NOS_1331442:

parseMetadata({"STATUS":"OK","VERSION":"1.11.16","prid":"VPWON_1235827","titel":"Terug naar de rampplek van MH17","aflevering_titel":"07-07-2015","info":"Verslaggever Rudy Bouma volgde de afgelopen maanden verschillende MH17-nabestaanden tijdens hun rouwproces. Onder hen de vader en de stiefmoeder van \u00e9\u00e9n van de twee nog niet ge\u00efdentificeerde slachtoffers, die niet eerder in de publiciteit kwamen. Ook reisde Nieuwsuur met een nabestaande naar de rampplek in Oost-Oekra\u00efne","ratio":"16:9","medium":"tv","gidsdatum":"2015-07-07","tijdsduur":"00:20:05","start":"00:18:37","eind":"00:38:42","url":"","webcast":1,"images":[{"size":"640x480","ratio":"4:3","url":"http:\/\/images.poms.omroep.nl\/image\/sx480\/c640x480\/629518.jpg"},{"size":"720x405","ratio":"16:9","url":"http:\/\/images.poms.omroep.nl\/image\/s720\/c720x405\/629518.jpg"}],"omroepen":[{"naam":"NOS"},{"naam":"NTR"}],"pubopties":["adaptive","h264_bb","h264_sb","h264_std"],"tt888":"ja","serie":{"srid":"VPWON_1235645","serie_titel":"Nieuwsuur","serie_url":null},"sitestat":{"baseurl":"http:\/\/b.scorecardresearch.com\/p?c1=2&c2=17827132&ns_site=po-totaal","programurl":"uitzendinggemist.publiekeomroep.ondemand.tv.nieuwsuur.20150707","programurlpost":"category=uitzendinggemist&thema=informatief&po_source=video","baseurl_subtitle":"http:\/\/nl.sitestat.com\/klo\/po\/s","subtitleurl":"uitzendinggemist.publiekeomroep.ondemand.tv.player.tt888.nieuwsuur","subtitleurlpost":"category=uitzendinggemist&po_source=video&po_sitetype=webonly"},"reclame":"http:\/\/pubads.g.doubleclick.net\/gampad\/ads?_cookie_&impl=s&gdfp_req=1&env=vp&output=xml_vast2&unviewed_position_start=1&sz=_sz_&correlator=_correlator_&iu=\/9233\/_site_\/nieuwsuur&url=_url_&cust_params=genre%3Dinformatief%2Cnieuws%2Factualiteiten%26dur%3D2900%26prid%3DVPWON_1235827%26srid%3DVPWON_1235645%26player%3D_player_","streamSense":{"episode":"nieuwsuur","program":"nieuwsuur","station":"nederland_2","sitestatname":"uitzendinggemist.publiekeomroep.ondemand.tv.nieuwsuur.20150707","sko":"TRUE","sko_dt":"20150707","sko_pr":"nieuwsuur","sko_stid":"2","sko_ty":"tv.seg","sko_prid":"vpwon1235827","sko_t":"2200","sko_cl":"2900"}})
//epc

De vetgedrukte informatie is hier van belang. Het is de begin- en eindtijd van het videofragment in de gehele video. Deze moeten we eerst omrekenen naar seconden: ( 18 x 60 ) + 37 = 1117 en ( 38 x 60 ) + 42 = 2322. Plak dan de begin- en eindtijd als volgt achter de videolink: ?start=1117&end=2322. De videolink van de dynamische- en progressieve videostream worden dan:

../VPWON_1235782-audio_eng=128000-video=1001000.m3u8?start=1117&end=2322
../std.20150707.m4v?start=1117&end=2322

Youtube-dl negeert POMS_NOS_1331442 en verwerkt in plaats daarvan de prid van de gehele uitzending, VPWON_1235782. Youtube-dl is daarmee de enige zonder ondersteuning voor de dynamische videofragmenten. BatchGemist ondersteunt ze wel en Downloadgemist.nl en GemistDownloader inmiddels ook.

Progressieve videofragmenten

Naast de dynamische- zijn er ook progressieve videofragmenten. Dit zijn wel op zichzelf staande video's. Ze hebben een resolutie van 856x482, waarmee ze vreemd genoeg van hogere kwaliteit zijn dan volledige afleveringen, die niet hoger gaan dan 640x360. Je vindt ze, zonder plaatje, terug in het programma-overzicht van de dag, maar ook onder het tabblad "Extra" op de eerder genoemde programma-pagina van Nieuwsuur. Voor zover ik weet begint de prid altijd met "WO". Van het videofragment "Syrische vluchtelingen op Kos (16-08-2015)" bijvoorbeeld is de videolink:

http://download.omroep.nl/nos/content/mp4/web03/2015/08/16/247252.mp4

BatchGemist, Youtube-dl, Downloadgemist.nl en GemistDownloader hebben allemaal ondersteuning voor de progressieve videofragmenten.

Oude 'Silverlight' videostreams

In de beginjaren van, toendertijd nog, Uitzendinggemist.nl werd er nog alleen gebruik gemaakt van het MMS-protocol, de Windows Media Video en Audio codec en de Silverlight Player van Microsoft. In de loop der jaren is er overgestapt op Flash/HTML5 en de H.264 video- en AAC audiocodec. Hoewel dit laatste voor een behoorlijke verbetering van de beeld- en geluidskwaliteit heeft gezorgd, is de videostream helaas nog geen HD-kwaliteit. Wel heeft de NPO met terugwerkende kracht een heleboel (zo niet alle) oude programma's omgezet naar H.264 en AAC, maar mocht je alsnog eentje tegenkomen waarbij dat niet is gedaan, dan kan de huidige videospeler op NPO.nl die prima afspelen. Silverlight is dus niet meer nodig.
Laten we als voorbeeld het 20:00u NOS Journaal van 21-05-2007 nemen, waarvan de video in beide formaten beschikbaar is. BatchGemist en Youtube-dl ondersteunen beide, waarbij Youtube-dl standaard de H.264-versie terug geeft:

http://content.omroep.nl/id/NOS/serie/7Jnl_2000_ma-vr_n1/POW_00087732/bb.20070521.mp4

Downloadgemist.nl en GemistDownloader ondersteunen alleen de WMV-versie. GemistDownloader genereert de directe videolink:

mms://hurley.omroep.nl/public/ug-od/media2/ru_02/ap/media/id/NOS/serie/7Jnl_2000_ma-vr_n1/POW_00087732/bb.20070521.asf?wmt=5584045c&wmhash=12946f32

Downloadgemist.nl echter genereert alleen de link van de zogenaamde ASX-playlist:

http://cgi.omroep.nl/cgi-bin/streams?/id/NOS/serie/7Jnl_2000_ma-vr_n1/POW_00087732/bb.20070521.asf

Voor zover ik weet kan alleen VLC media player deze openen. Heb je een andere mediaspeler, maar wil je wel gebruik blijven maken van Downloadgemist.nl, open deze ASX-playlist dan met Kladblok, selecteer en kopieer de mms-link om die vervolgens in je mediaspeler te openen.
I.t.t. bij de progressieve videostreams is het achtervoegsel ?wmt=5584045c&wmhash=12946f32 voor het afspelen en/of downloaden hier wel noodzakelijk!

Afspelen


Highslide JS
Media Player Classic - Home Cinema.
Highslide JS
VLC media player.
Highslide JS
Media Player Classic - BE (manifest-playlist van een dynamische videostream).
Highslide JS
Media Player Classic - BE (progressieve videostream).

De dynamische videostreams en videofragmenten kun je zonder problemen openen met Media Player Classic - Home Cinema, VLC media player en Media Player Classic - BE, met voor die laatste wel de voorwaarde dat de DirectShow filter LAV Filters is geïnstalleerd.
Bijkomend voordeel van MPC-BE is dat het dan ook de manifest-playlist kan ontleden en je daardoor via het Navigatie-menu gemakkelijk tussen de verschillende videostreams kunt switchen. MPC-HC opent standaard de videostream met de laagste videoresolutie, VLC de hoogste.

De progressieve videostreams en videofragmenten zijn voor alle 3 geen enkel probleem. MPC-BE kan het in dit geval ook alleen af.
Denk er wel om dat in dit geval (zie laatste plaatje) alleen dat gedeelte bekeken kan worden wat gebufferd is. Wil je een tijdsprong maken naar bijvoorbeeld de laatste minuut, dan zul je moeten wachten totdat er ±93% gebufferd is. Bij dynamische videostreams is dit geen probleem en kun je eindeloos tijdsprongen maken.

Van de oude 'Silverlight' videostreams kun je de directe videolink (denk om het achtervoegsel) met alle 3 zonder problemen openen, met voor MPC-BE wel weer de voorwaarde dat LAV Filters is geïnstalleerd. De ASX-playlist kun je, zoals al aangegeven, alleen met VLC openen.

Downloaden

Voor het downloaden van alle videoformaten raad ik FFMpeg aan. Ik citeer: "Een complete, cross-platform oplossing voor het opnemen, converteren en streamen van audio en video".
Een Windows-versie is hier te downloaden.

Dynamische videostreams:
De dynamische videostreams zijn, zoals al aangegeven, gewoon afspeellijsten (tekstbestanden) en kun je daardoor niet in je internetbrowser downloaden. Software met HLS-ondersteuning, zoals FFMpeg, kan dat wel.
Start een command-prompt door Windows-toets+R in te drukken en dan cmd in te vullen. Ga naar de directory waar je ffmpeg.exe hebt uitgepakt en voer dan het volgende commando uit:

ffmpeg.exe -i "http://l24m662a87a1be00558413c8000000.81a540340f91660e.adaptive-e99c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2015/POW_00942286/POW_00942286.ism/POW_00942286-audio_eng=128000-video=1001000.m3u8" -c copy -bsf:a aac_adtstoasc "NOS Journaal (16082015).mp4"

Na afloop heb je de video in dezelfde map als FFMpeg. (Hieronder verkort ik de in- en uitvoer.)

Progressieve videostreams en videofragmenten:
De progressieve videostreams en videofragmenten zijn op zichzelf staande video's en kun je in principe met je internetbrowser downloaden, maar toch zou ik ook deze met FFMpeg doen. Ten eerste omdat niet alle SMART TV's de m4v-bestanden goed kunnen afspelen en ten tweede vanwege "overhead". Van een 45 minuten durende video van 365MB bijvoorbeeld blijft er m.b.v. FFMpeg nog maar 340MB over. In dit geval wordt het commando:

ffmpeg.exe -i "videolink.m4v" -c copy "naam.mp4"

Dynamische videofragmenten:
Voor de dynamische videofragmenten is het het beste het knipwerk aan FFMpeg over te laten, omdat het achtervoegsel met de begin- en eindtijd niet in alle gevallen werkt.
FFMpeg accepteert tijd in seconden en als uu:mm:ss[.xxx]. Daarnaast is het noodzakelijk de tijdsduur i.p.v. de eindtijd te hanteren, omdat die laatste niet werkt in dit geval. Voor het eerder genoemde "Terug naar de rampplek van MH17" videofragment wordt het commando:

ffmpeg.exe -ss 1117 -i "videolink.m3u8" -t 1205 -c copy -bsf:a aac_adtstoasc "naam.mp4"

of...

ffmpeg.exe -ss 00:18:37 -i "videolink.m4v" -t 00:20:05 -c copy "naam.mp4"

Oude 'Silverlight' videostreams:
Het MMS-protocol wordt niet ondersteund door FFMpeg, maar gelukkig is daar een trukje voor (bedankt Downloadgemist.nl). Door het protocol simpelweg te vervangen door mmsh:// wordt het commando:

ffmpeg.exe -i "mmsh://...asf?wmt=xxx&wmhash=xxx" -c copy "naam.wmv"