VLC en mergen van video t.b.v. eigen tool voo streamen Ziggo

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mojo81
  • Registratie: November 2011
  • Laatst online: 25-02 22:56
Onlangs stond op de frontpage dat Ziggo een iPad app heeft ontwikkeld om live tv mee te streamen (nieuws: Ziggo maakt tv-app geschikt voor iPhone en iPod touch). Ik heb geen iPad of andere apple producten maar wil toch graag gebruik maken van de stream.

Omdat ik zelf software developer ben dacht ik zelf dus wel even de software in elkaar te steken om hier gebruik van te maken. Dit is op tot op zekere hoogte dan ook gelukt. Ik heb echter een klein probleem en wel het volgende:

De stream is in m3u8 formaat, een formaat van Apple als ik het goed begrepen heb. Echter, de video files die er in gebruik worden zijn ‘gewoon’ in H264 formaat. Het lastigste leek dus aanvankelijk dat Windows software geen support heeft voor m3u8. Mijn programma leest de m3u8 files en downloadt de content waar naar verwezen wordt. De tegenvaller voor mij is dat dit zogenaamde chunks (losse delen) van video blijken en dat deze samengevoegd dienen te worden om het als geheel te streamen. Ik heb weinig verstand van video container en codecs en dergelijke dus besteed ik die taak uit aan VLC. Echter, tot mijn teleurstelling zit er na samenvoegen een kleine hapering precies tussen alle chunks :(

Omdat ik weinig verstand heb van videoformaten, containers, codecs, etc. wil ik graag hier jullie hulp vragen, want het zou heel tof zijn als ‘wij’ Windows mensen ook in hoge kwaliteit kunnen streamen (en RTL 4, etc, wat niet op de alternatieve streams kan).

Wat ik nu doe met VLC is telkens ieder nieuw deel toevoegen door VLC als volgt aan te roepen:

vlc.exe -I dummy 1.ts vlc://quit --sout-file-append --sout=file/ts:go.ts

Je kunt het deel “--sout-file-append --sout=file/ts:go.ts” zelf aanpassen in de instellingen van mijn programma. Het is niet helemaal af, maar ik ben dan ook niet van plan om het af te maken voordat ik een oplossing voor bovenstaande problematiek gevonden heb. Je vind hem hier: http://members.ziggo.nl/a...eamer/ZiggoTVStreamer.exe

Zijn er VLC / Video experts die mij op de goede weg kunnen helpen?

Voor de mensen die graag helpen maar geen Ziggo hebben heb ik een voorbeeld van losse chunks en een samengevoegde versie daarvan geupload, die vind je hier: http://members.ziggo.nl/antonhensen/videos/
NB: De gemergede versie van de video bevat een deel wat in eens een hele chunk wordt overgeslagen o.i.d.. Om zaken niet complexer te maken dan ze al zijn gaan we er maar even vanuit dat dit door een bug in mijn software komt. Het gaat me in eerste instantie om de hickups tussen de chunks, want zolang die er zijn heeft de rest ook geen zin wat mij betreft.

Acties:
  • 0 Henk 'm!

  • BlackHawkDesign
  • Registratie: Maart 2005
  • Laatst online: 06-07 12:32
Hey,

Ik ben zelf niet zo'n expert hierin, maar misschien kan je wat ideeen geven. Zover ik begrijp wat je doet is dat je de losse stukjes van elk 10 seconden download en vervolgens on the fly toevoegt aan een playlist die vlc afspeelt. Dan zijn die hick ups op zich niet zo heel gek, aangezien hij bij elke file opnieuw gaat kijken, wat is me codec e.d. en wat heb ik nodig.

Ik zie ook dat je de parameter -l meegeeft, als ik de vlc documentatie lees dan staat daar You can get a listing of the available modules by using vlc -l of begrijp ik dat nu verkeerd..

Wat je misschien ook zou kunnen doen is met vlc die files die je ontvangt opnieuw gaan streamen en vervolgens een andere mediaplayer naar deze stream laten opvangen.. Het is een beetje omslachtig maar het zou kunnen werken..

Edit: Iemand met hetzelfde probleem, geen oplossing, maar misschien handig: http://forum.videolan.org/viewtopic.php?f=11&t=45939

[ Voor 7% gewijzigd door BlackHawkDesign op 18-12-2011 10:15 ]


Acties:
  • 0 Henk 'm!

  • Bartjezz
  • Registratie: Maart 2006
  • Laatst online: 16-06-2024
Idd, als je steeds 10 seconden film krijgt per keer, gaat ie per 10 seconden kijken welke codec het beste is. Kun je hier niet al een vaste codec voor aanwijzen?? En is het misschien mogelijk om 10 of 20 seconden achter te liggen? Op deze manier kun je misschien de losse delen beter aan elkaar plakken.

Acties:
  • 0 Henk 'm!

  • mojo81
  • Registratie: November 2011
  • Laatst online: 25-02 22:56
Ik denk dat het inderdaad zit in die hoek Bartjezz. Om die reden ga ik nu proberen met de Microsoft DirectShow API zelf de video te decoden en dan zorgen dat ik bij iedere chunk alvast de volgende chunk begin te decoderen zodat ik dan hopelijk vloeiend kan verder spelen als ik het eind van de eerste bereikt heb.

Ik had liever bestaande tools gebruikt, maar ik lees zo hier en daar dat VLC pas vanaf 1.2 support krijgt voor m3u8. Ik vermoed dat dit omdat ze met vergelijkbare problematiek te maken hebben.

Acties:
  • 0 Henk 'm!

  • mojo81
  • Registratie: November 2011
  • Laatst online: 25-02 22:56
@BlackHawkDesign: Ik voeg ze niet echt aan een play list toe, maar laat VLC ze mergen. Het resultaat lijkt echter slechts een klein beetje beter dan een play list.

Acties:
  • 0 Henk 'm!

  • Mavamaarten
  • Registratie: September 2009
  • Laatst online: 13:54

Mavamaarten

Omdat het kan!

Misschien kan FFMpeg hier iets mee?
Ik heb eff je bestanden gedownload en ga er direct mee aan de slag...

EDIT: Video files samenvoegen noemt men "Muxen". Misschien is hierop zoeken handig :Y
Oeps, toch niet. Dan zou je verschillende streams tegelijk afspelen 8)7
http://ffmpeg.org/faq.html#How-can-I-join-video-files_003f

[ Voor 55% gewijzigd door Mavamaarten op 18-12-2011 15:42 ]

Android developer & dürüm-liefhebber


Acties:
  • 0 Henk 'm!

  • mojo81
  • Registratie: November 2011
  • Laatst online: 25-02 22:56
Geweldig Mavamaarten! FFMpeg zou inderdaad een optie kunnen zijn, het wordt ook voor de omgekeerde route veel gebruikt zag ik. Dus van 1 lange stream opgehakte delen maken zodat het juist voor iPhone / iPad streambaar wordt gemaakt.

Acties:
  • 0 Henk 'm!

  • Mavamaarten
  • Registratie: September 2009
  • Laatst online: 13:54

Mavamaarten

Omdat het kan!

mojo81 schreef op zondag 18 december 2011 @ 15:42:
Geweldig Mavamaarten! FFMpeg zou inderdaad een optie kunnen zijn, het wordt ook voor de omgekeerde route veel gebruikt zag ik. Dus van 1 lange stream opgehakte delen maken zodat het juist voor iPhone / iPad streambaar wordt gemaakt.
ffmpeg wordt vooral gebruikt voor videoconversie, deze tool doet dit snel en zonder toeters en bellen.
Misschien kan je eens naar dit kijken? http://ffmpeg.org/faq.html#How-can-I-join-video-files_003f

Android developer & dürüm-liefhebber


Acties:
  • 0 Henk 'm!

  • mojo81
  • Registratie: November 2011
  • Laatst online: 25-02 22:56
Thanks. Ik ben nu even aan het kijken wat ik kan doen met DirectShow, omdat ik dan alle controle zelf heb en kan zorgen dat het voorwerk voor een volgende chunk alvast gedaan is. Als dat weer niets oplevert zal ik je link bestuderen.

Acties:
  • 0 Henk 'm!

  • mojo81
  • Registratie: November 2011
  • Laatst online: 25-02 22:56
Dit topic mag wat mij betreft gesloten worden. Ik ben er met externe software (zoals VLC) niet uitgekomen, maar door waar bestaande code aan te passen die leunt op DirectShow lukt het wel en daarom ga ik op op die route verder. Bedankt voor jullie hulp.

Acties:
  • 0 Henk 'm!

  • BlackHawkDesign
  • Registratie: Maart 2005
  • Laatst online: 06-07 12:32
Is het ondertussen al gelukt? Ben erg nieuwsgierig namelijk O-)

Acties:
  • 0 Henk 'm!

  • mojo81
  • Registratie: November 2011
  • Laatst online: 25-02 22:56
Gelukt nog niet. Maar ik kom steeds dichter bij een oplossing. Op dit moment heb ik m.b.v. de DirectShow API een werkend geheel dat alle binnenkomende delen achter elkaar afspeelt. Het nadeel is een heel klein schokje tussen de verschillende delen. Dit komt waarschijnlijk omdat ik ieder deel als een video bestand behandel, maar de TS container omvat vermoedelijk iets meer info om ze samen te voegen (iets met verschillende frame types, ik ben er nog niet uit)

Ik ben nu wat aan het experimenteren met ffdmpeg en die is wel in staat om verschillende delen te mergen zonder een schokje tussen de overgang van 2 delen. Op zich dus heel goed nieuws, maar nu moet ik zien hoe ik kan spelen en joinen tegelijk.

Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 24-06 11:15

LauPro

Prof Mierenneuke®

Je zit compleet verkeer te denken. Ten eerste kan VLC wat jij will via de 'Access Layer'. Dat wil zeggen deze Access Layer zorgt ervoor dat de chunks worden gedownload en in 1 buffer worden gezet, vervolgens gaat de codec deze decoderen en is er een output device. Dit kan het scherm zijn of een file.

De standaard GUI laat je dit echter niet zo eenvoudig configureren vrees ik, al hoewel er bij Advanced (bij openen file) veel opties mogelijk zijn qua buffer size en gewenste access layer.

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Acties:
  • 0 Henk 'm!

  • mojo81
  • Registratie: November 2011
  • Laatst online: 25-02 22:56
VLC liep ik wat dat aangaat vast. Misschien is het mogelijk, maar mij lukte het niet. Daarom heb ik hier ook een link naar de eerste versie van mijn software geplaatst, waarbij de VLC parameters instelbaar zijn. Helaas op die route nog geen succes. Ffdmpeg ziet er veelbelovend uit omdat ik daarmee i.t.t. VLC wel een naadloos geheel krijg. probleem daarmee is echter dat het niet lukt om at run-time chunks toe te voegen. Ik krijg immers de chunks 1 voor 1 en wil nieuw chunks dus appenden aan de stream terwijl deze speelt.

Misschien kan het met VLC, maar ik zie door de parameters het bos niet.

Acties:
  • 0 Henk 'm!

  • mojo81
  • Registratie: November 2011
  • Laatst online: 25-02 22:56
Eindelijk is het gelukt :) Niet met behulp van VLC, FFMpeg of iets anders, maar door zelf de transport stream te ontleden en te mergen (Met dank aan vriend en collega Jacob die me hier enorm bij heeft geholpen). Al met al is er veel meer tijd in dit project gaan zitten dan me lief is, maar over enkele dagen zal ik hem publiceren.

Update: hij is af.. heb hem hier geplaatst.

[ Voor 35% gewijzigd door mojo81 op 03-01-2012 17:57 ]


Acties:
  • 0 Henk 'm!

  • BlackHawkDesign
  • Registratie: Maart 2005
  • Laatst online: 06-07 12:32
Super!! Ik keek hier vol verwachting al naar uit! Netjes gedaan man, congratz :)

Als het uiteindelijk toch 1 groeiende file wordt, graag da wel een optie waar in je kan aangeven waar die file wordt opgeslagen. De vorige keer zag ik dat hij het op me c-schijf opslaat en aangezien die altijd maar een paar gig vrij heeft..

Ik wacht vol spanning af :)

Acties:
  • 0 Henk 'm!

  • Diecke
  • Registratie: December 2010
  • Laatst online: 13:22
En als je is kijkt bij HLS-player?

zie ook: http://www.kevincasey.org/?p=25
Pagina: 1