HOWTO: iStreamdev auf yaVDR

  • EDIT 11/05/2010: Punkt 7.) angepasst: segmenter per Hand kompilieren, da mit den zusätzlichen libs für ffmpeg das normale Makefile nicht passt, hab das vorher nicht bedacht
    EDIT 29/06/2010: Fehlende Libs ergänzt, danke für den Hinweis roupi
    EDIT 14.11.2010: Bitte folgenden Post zum Bau des Segmenters beachten: HOWTO: iStreamdev auf yaVDR oder direkt die Anleitung hier von roupi und mwfv verwenden.


    EDIT 07.12.2010: Da es momentan immer wieder Schwierigkeiten mt dem Bau von ffmpeg oder dem segmenter gibt und ich das aktuell nicht aktiv nutze / selber am Basteln bin, aktualisieren ich hier vorerst nicht mehr.


    EDIT 13.12.2010: Wichtiges Posting von jondalar: HOWTO: iStreamdev auf yaVDR



    Na da hab ich mir ja was eingebrockt :lol2 ...


    Vorweg: ich habs mit den Repo Paketen von ffmpeg und libx264 versucht, aber die tuns nicht. Verzeiht mir bitte, wenn ich nirgendwo ein "sudo" schreibe, es nervt nur...


    Also los:


    1.) Änderungen am Basissystem


    tntnet Konfiguration geändert und auf Port 8080 gelegt
    Firefox Startpage wegen Portänderung verlegt
    Templates in /etc/yavdr/templates_custom angelegt für Firefox prefs.js und tntnet Konfig (falls ihr mir das mal mit einem Update zerballert ;-)) )
    Neustart von tntnet


    Kurzer Test, läuft! Coole Idee mit den Templates übrigens.



    2.) Zusätzlich installierte Pakete
    (ich hab versucht, es mir einfach zu machen und Pakete zu installieren, die wegen der Abhängigkeiten alles wichtige mit drauf packen, sprich nicht apache2, sondern direkt libapache2-mod-php5 usw.; bei php5 war ich mir nicht sicher, was ich noch an Grafikkram brauche, da hab ich einfach zugeschlagen):


    subversion, git-core, libapache2-mod-php5, php5, php5-curl,php5-gd,php5-idn,php5-imagick,php5-xcache, libavcodec-dev, libavformat-dev, libavutil-dev, libfaac-dev, libfaad-dev,


    libmp3lame-dev, libxvidcore-dev, libbz2-dev, yasm


    (Hoffe, ich habe nix vergessen! Könnte aber durchaus sein, daß was zuviel ist, so fit bin ich nicht darin...)


    3.) In der /etc/apache2/httpd.conf folgendes eintragen, damit QuickTime auf dem Iphone kapiert, was es gestreamt bekommt:


    AddType application/x-mpegURL .m3u8
    AddType video/MP2T .ts


    Dann Apache restarten.


    ( 4 und 5 hab ich im Homevz gemacht)


    4.) libx264 (wegen ffmpeg):


    git clone git://git.videolan.org/x264.git
    cd x264
    ./configure --prefix=/usr
    make
    make install
    ldconfig


    5.) ffmpeg:


    svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
    cd ffmpeg
    ./configure --prefix=/usr --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-pthreads --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-x11grab
    make
    make install
    LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH
    export LD_LIBRARY_PATH
    ldconfig


    6.) iStreamdev holen und "installieren":


    cd /var/www
    git clone git://projects.vdr-developer.org/istreamdev.git
    mkdir /var/www/istreamdev/ram
    chown -R www-data.www-data istreamdev


    Konfigurieren muß man das im Prinzip nicht mehr, da es eine default Konfiguration gibt, aber ich habe mich doch dazu entschieden.
    Von daher: Im Verzeichnis /var/www/istreamdev die Datei config_default.php nach config.php kopieren und folgende Parameter anpassen: $user, $password, $vdrrecpath


    Noch ein Hinweis zur dritten Zeile: der Autor der Software schlägt vor, ein Unterverzeichnis "ram" in /dev/shm anzulegen, www-data Schreibrechte zu geben und per softlink nach /var/www/istreamdev zu verlinken. Da ich aber anfänglich ja Schwierigkeiten hatte, habe ich versucht, alle Besonderheiten außen vor zu lassen und ein "normales" Verzeichnis statt der Ramdisk genommen.


    Ach so, und wer den Verzeichnisnamen ändert, muß $httppath auch noch anpassen.


    7.) HTTP Stream Segmenter (da hat sich Apple echt was feines ausgedacht, Hut ab!):


    cd /var/www/istreamdev/segmenter
    (make und make install werden wahrscheinlich nicht gehen, dann lieber direkt per Hand)
    gcc -Wall -g segmenter.c -o segmenter -lavformat -lavcodec -lavutil -lbz2 -lm -lz -lfaac -lmp3lame -lx264 -lfaad -lxvidcore -ltheora -ltheoraenc -ltheoradec -lpthread
    strip segmenter
    cp segmenter /usr/local/bin
    ln -s /usr/local/bin/segmenter /usr/bin/segmenter


    Alternativ zum letzten Schritt kann man auch in der config.php den Parameter $segmenterpath anpassen.


    8.) Zugriffsrechte für VDR anpassen:


    In svdrphosts.conf und streamdevhosts.conf mein heimisches Subnet mit aufgenommen.


    9.) GAAAAAAANZ WICHTIG:
    Mindestens (!) eine Gruppe in der channels.conf anlegen!!! Ich hatte ursprünglich nur meine channels.conf, die ich mit wirbelscan erzeugt hatte und habe mich gewundert, wieso auf dem Iphone keine Kanäle und kein EPG angezeigt wurden und die Seite hing. Bis dahin wußte ich gar nicht, daß man das gruppieren kann :schäm. Ich habs dann erst mit dem chanorg plugin versucht, daß machte aber nur Murks (Leerzeilen an stellen, wo sie nicht hingehören, man konnte immer nur einen Kanal in eine Gruppe aufnehmen, blabla) und hab schlußendlich einfach oberhalb meiner Kanalliste ":Programme" in eine Zeile geschrieben ;-). Damit läufts perfekt!


    Neustart und Daumen drücken, sollte laufen!!


    Optional 10.) Senderlogos:


    Wer Senderlogos möchte, muß sich die runterladen und im Verzeichnis /var/www/istreamdev/logos abspeichern. Ich habs nach einem Hinweis einfach bei Wikipedia gemacht. Wichtig ist nur, daß die Logos "<Sendername>.png" (Groß-/Klein ist wichtig) benannt sind.


    Jetzt nur noch vom Iphone aus die Seite aufrufen und schauen obs klappt. Bei mir gehts jedenfalls.



    Viel Spaß beim Nachbasteln ;-)


    EDIT: Oh Schei***, ich hab überlesen, daß ich das in einem neuen Thread machen sollte, kann das mal bitte bitte bitte einer der Mods abtrennen :schiel ???

    Gruß
    Holger


    HTPC: yaVDR 0.5, M3N78-VM, Athlon II X2 240, 2GB, 2x TT S2-1600, Antec Fusion Remote, Harmony 650, LG 50PK550

    The post was edited 11 times, last by pandel ().

  • Erstmal "Hut Ab" für dieses gute Howto.


    Ich habe ein HTC Magic(Google´s Android). Nun wollte ich fragen ob sowas auch damit geht??? Oder gibts da schon etwas???


    Zusätzlich wollte ich mich auch bei den Jungs von yaVDR bedanken.
    :cool1

  • Hallo hoktar,


    danke für die Blumen, aber es muß sich ja erst noch rausstellen, ob die Anleitung auch brauchbar funktioniert :-)


    Wie das bei Android aussieht kann ich Dir leider nicht sagen, aber google doch mal, ob das mit dem Http Stream Segmenting auch evtl. unter Android unterstützt wird. Wichtig ist, das auf dem mobilen Gerät ein Player existiert, der mit m3u8 Dateien was anfangen kann.


    Gruß Holger

    Gruß
    Holger


    HTPC: yaVDR 0.5, M3N78-VM, Athlon II X2 240, 2GB, 2x TT S2-1600, Antec Fusion Remote, Harmony 650, LG 50PK550

  • Ich habe das Ganze mal getestet mit dem kleinen Unterschied, dass ich anstatt apache2 lighttpd genommen und anstatt make install mit checkinstall .deb Pakete von ffmpeg und x264 erstellt habe.
    Ging auch alles einwandfrei allerdings wollte ich von der Installation gerne "richtige" .deb Pakete erstellen damit das System auch richtig über den Paketmanager updated wird ..
    also libavcodec, libavformat, libx264 usw. alles ersetzen und automatisch die Depencies auf "fremden" System herunterladen.


    Hier bin ich allerdings kläglich gescheitert .. ich weiß einfach nicht was zu tun ist. Habe hierzu auch schon diverse Guides gelesen und komme einfach nicht weiter.


    Ich würde ja die Standard Ubuntu Pakete von ffmpeg und x264 nutzen bloss funktionieren die überhaupt nicht mit iStreamdev.
    Teste ich nur ffmpeg mit den Einstellungen von iStreamdev ohne Angabe einer Sample Rate kommt es schon zu einer Fehlermeldung :



    Mit Angabe der Sample Rate (-ar 48000 oder -ar 44100) kommt es zu einem Segfault :
    Apr 18 15:50:07 vdr kernel: [71355.013236] ffmpeg[15262]: segfault at 11da13c ip 00e56ef3 sp bf9b3720 error 7 in libavcodec.so.52.20.0[d51000+52a000]



    Hat evtl jemand von den yaVDR Spezialisten hierzu einen Rat?


    Ich weiß, dass das eigentlich nicht direkt was mit der Distri zu tun hat, aber ich schätze eure Arbeit und euer Wissen im Pakete bauen sehr.

    HW1: Streacom ST-F7C Alpha Optical | ASUS Z170I Pro Gaming | Intel i3-6100 | 8GB RAM | Streamdev | System/Video: 500GB Crucial MX200 | Intel 8260 (WiFi/BT)

    HW2: Antec Fusion Remote | Asus P5N7A-VM | Intel E5200 | 4GB RAM | TechniSat Skystar HD | System: 80GB Intel X25-M G2 | Video: 1TB Western Digital WD10EACS

    SW: yaVDR 0.6.1

    The post was edited 1 time, last by Walhalla ().

  • Auf Launchpad finden sich PPAs mit recht aktuellen Versionen von x264 und ffmpeg. Ihr könntet Euch mal die zu Grunde liegenden Sourcepakete anschauen und gucken, ob die Sourcen neu genug sind, um mit iStreamdev zu funktionieren:


    x264:


    https://launchpad.net/~nilarimogard/+archive/webupd8
    https://launchpad.net/~giroll/+archive/ppa


    ffmpeg:


    https://launchpad.net/~nvidia-…e/cutting-edge-multimedia


    Gruß
    hepi

  • Gute Idee mit den PPAs leider bringt das Ganze irgendwie jede Menge Probleme mit sich und ich habe im Moment leider nicht genug Zeit um die Pakete von Grund auf neu zu erstellen, auch fehlt mir hierzu das Wissen.
    Das Problem ist einfach, dass es auf der PPA zu ffmpeg keine "unstripped" Pakete gibt und wenn man dann updaten will bügelt er natürlich die Alten runter und xine, libxine, yavdr-essential und viele mehr mit sich.



    Laut Wiki fehlen ohne die unstripped Pakete auch die wichtigsten Codecs:
    http://wiki.ubuntuusers.de/FFm…ntuquellen-ab-Ubuntu-8-10


    Code
    1. Für die Codecs MP3, AAC, MPEG-4 und H.264 (bzw. MPEG-4 AVC) müssen zusätzlich die "Unstripped"-Pakete


    Ein anderes Probem könnte der geänderte SONAME mit sich bringen:
    libavutil von 49 auf 50
    libavfilter von 0 auf 1


    zumindest beim groben Drüberschauen hängen folgende Pakete von libavutil-49 ab:


    libxine1-xvdr
    libxine2
    libxineliboutput-fbfe
    libxineliboutput-sxfe
    vdr-addon-markad-standalone
    vdr-markad
    xineliboutput-fbfe
    xineliboutput-sxfe


    wobei ich das wohl schon eher in den Griff bekommen würde durch laden, ändern und neu erstellen der Source Pakete als das mit den fehlenden Codecs :)

    HW1: Streacom ST-F7C Alpha Optical | ASUS Z170I Pro Gaming | Intel i3-6100 | 8GB RAM | Streamdev | System/Video: 500GB Crucial MX200 | Intel 8260 (WiFi/BT)

    HW2: Antec Fusion Remote | Asus P5N7A-VM | Intel E5200 | 4GB RAM | TechniSat Skystar HD | System: 80GB Intel X25-M G2 | Video: 1TB Western Digital WD10EACS

    SW: yaVDR 0.6.1

  • Hallo walhalla,


    ich gebe zu, ich kann Deine Probleme leider nicht ganz nachvollziehe, muß aber zugestehen, daß mich erstmal überhaupt nicht interessiert hat, die debs zu verwenden, sondern es überhaupt lauffähig zu bekommen. Da ich recht neu in der Debian-artigen Welt bin (komme von opensuse), ist mir das auch noch gar nicht klar, wie man debs über die zugehörigen Tools und Sourcepackages erstellt.


    Was die Paketabhängigkeiten anbelangt: ich hatte, da ich in meinem Testlaptop keine Nvidia Karte habe, einmal untie-packages laufen lassen.


    Daher kann ich leider keine Hilfe sein. Ich kann nur sagen, daß es bei mir funktioniert...


    EDIT: nur so ein Hinweis: Du hast geschrieben, Du hast irgendwo die Samplerate angegeben. Hab ich auch gemacht, bevor ich bemerkte, daß mein default ffmpeg den ganzen Krämpel eh überhaupt nicht kann. Nach entfernen der Pakete und neu kompilieren gings dann eben.

    Gruß
    Holger


    HTPC: yaVDR 0.5, M3N78-VM, Athlon II X2 240, 2GB, 2x TT S2-1600, Antec Fusion Remote, Harmony 650, LG 50PK550

    The post was edited 1 time, last by pandel ().

  • Kann den segmenter nicht bauen

    Code
    1. root@ubuntu:/var/www/istreamdev/segmenter# make
    2. gcc -Wall -g segmenter.c -o segmenter -lavformat -lavcodec -lavutil
    3. /tmp/cca0xyoL.o: In function `main':
    4. /var/www/istreamdev/segmenter/segmenter.c:242: undefined reference to `av_guess_format'
    5. /var/www/istreamdev/segmenter/segmenter.c:316: undefined reference to `av_free_packet'
    6. /var/www/istreamdev/segmenter/segmenter.c:366: undefined reference to `av_free_packet'
    7. /var/www/istreamdev/segmenter/segmenter.c:370: undefined reference to `av_free_packet'
    8. collect2: ld returned 1 exit status
    9. make: *** [all] Fehler 1
  • ok, so hat es geklappt:

    Code
    1. gcc -Wall -g segmenter.c -o segmenter -L/usr/src/ffmpeg/libavformat -lavformat -L/usr/src/ffmpeg/libavcodec -lavcodec -L/usr/src/ffmpeg/libavutil -lavutil -I/usr/src/ffmpeg/ -lm -lmp3lame -lxvidcore -lx264 -lfaad -lfaac -lbz2 -lpthread -lz
  • @Mods: Danke fürs Thread abtrennen ;-))


    omek
    Hattest Du mal probiert, folgende Pakete vorher zu installieren:
    libavcodec-dev, libavformat-dev, libavutil-dev?


    Ist zwar ne rethorische Frage, aber es würde mich interessieren. Ggf. müßte man das Makefile dann mal anpassen...

    Gruß
    Holger


    HTPC: yaVDR 0.5, M3N78-VM, Athlon II X2 240, 2GB, 2x TT S2-1600, Antec Fusion Remote, Harmony 650, LG 50PK550

  • @all


    Habe festgestellt, daß es beim Abspielen von Aufnahmen zu Problemen kommen kann, wenn diese mit VDR geschnitten worden sind. Im Unterverzeichnis "bin" von istreamdev gibt es eine session.php.


    Von dort wird das Kodieren und Bereitstellen des Streams gestartet. Es gibt dort (momentan für mich nicht nachvollziehbar) eine Zeile Code, die da lautet:


    $cmd = str_replace ('%', '%%', $cmd);


    Diese Zeile macht die Pfadnamen zu den Aufnahmen kaputt (jedenfalls bei mir).


    Wer also Schwierigkeiten beim Abspielen von Aufnahmen hat, sollte die Zeile einfach mal auskommentieren. Dann gehts...

    Gruß
    Holger


    HTPC: yaVDR 0.5, M3N78-VM, Athlon II X2 240, 2GB, 2x TT S2-1600, Antec Fusion Remote, Harmony 650, LG 50PK550

  • Hallo, dieses Thema interessiert mich auch brennend, allerdings habe ich mich da noch nicht dran getraut.
    Daher die Frage, besteht die Möglichkeit, dass dies in die zukünftige neue yaVDR-Version mit aufgenommen wird?
    Oder gegebenenfalls dort einfacher einzubauen ist?


    So lange könnte ich dann warten und mir die Mühe erst einmal sparen . . .

    :] Lutz

    yaVDR 0.6, VDR 2.2.0
    Asus P5N7A-VM, 4 GB, 1TB HD, 2x Satelco KNC 1 DVB-C, NetCologne Köln

  • Hallo fugazzy, ich kann Dir zwar Deine Frage nicht beantworten, aber ich kann Dir sagen, daß es wirklich nach mehr Aufwand aussieht, als es de facto ist.


    Und wenn Du das nicht auf Deinem Produktivsystem machen willst, dann nimm Dir doch einfach ne virtuelle Maschine, installier Dir yavdr und trau Dich ran!


    Seit den letzten Updates im git von ffmpeg sind auch alle Kodierproblemchen wieder weg und der ganze Kram läuft astrein ;-))

    Gruß
    Holger


    HTPC: yaVDR 0.5, M3N78-VM, Athlon II X2 240, 2GB, 2x TT S2-1600, Antec Fusion Remote, Harmony 650, LG 50PK550

  • Für alle die noch Probleme mit der Installation von iStreamdev auf yaVDR haben, hier das HowTo welches funktioniert.


    Basis ist eine saubere Neuinstallation von yaVDR Version 0.2.0.


    Viel Erfolg!
    Roupi

    Files

    Server:
    ASUS M3N78-EM | AMD Athlon 64 X2 4850e 2x2.50GHz | 2 GB RAM | 2x Hauppauge WinTV-Nova-HD-S2 | Debian Lenny mit Kernel 2.6.31.4 | VDR 1.7.12 + extension-patch | Ausgabe über xineliboutput-cvs | T-Home Entertain über IPTV-Plugin | iStreamdev 1.0.1


    Streaming Client:
    ZOTAC ZBOX HD-ID40 | Intel Atom D525 | Next Generation NVIDIA ION Grafik | 2GB RAM | yaVDR 0.3a

    The post was edited 5 times, last by roupi ().

  • roupi
    Was funktioniert denn an meinem Tut oben nicht ? Die zuletzt beschriebenen Probleme hatten mit istreamdev selber zu tun und wurden mittlerweile vom Autor korrigiert...

    Gruß
    Holger


    HTPC: yaVDR 0.5, M3N78-VM, Athlon II X2 240, 2GB, 2x TT S2-1600, Antec Fusion Remote, Harmony 650, LG 50PK550

  • pandel


    Wir haben heute beim VDR Camp 2010 die Installation auf einem frischen yavdr vorgenommen.
    Hier nur einige Beispiele über die wir gestollpert sind:


    - die libxvidcore4-dev gibt es bei Ubuntu nicht, die heist hier libxvidcore-dev


    - zum bauen des Segmenter wird die libbz2-dev benötigt, diese fehlt bei der yavdr Distri.


    By the way hast Du diverse Schritte aus meinem Howto in Alibs Original-Thread zu iStreamdev kopiert. Nehm ich Dir nicht übel, hättest Du aber fairerweise erwähnen können ;-)))


    Gruss
    Roupi

    Server:
    ASUS M3N78-EM | AMD Athlon 64 X2 4850e 2x2.50GHz | 2 GB RAM | 2x Hauppauge WinTV-Nova-HD-S2 | Debian Lenny mit Kernel 2.6.31.4 | VDR 1.7.12 + extension-patch | Ausgabe über xineliboutput-cvs | T-Home Entertain über IPTV-Plugin | iStreamdev 1.0.1


    Streaming Client:
    ZOTAC ZBOX HD-ID40 | Intel Atom D525 | Next Generation NVIDIA ION Grafik | 2GB RAM | yaVDR 0.3a

  • roupi


    Danke für die Hinweise mit den fehlenden/fehlerhaften Libs. habs korrigiert.


    Aber BTW, was hälst Du denn bitte für kopiert? Doch wohl kaum die Compileanweisung, oder :lol2???

    Gruß
    Holger


    HTPC: yaVDR 0.5, M3N78-VM, Athlon II X2 240, 2GB, 2x TT S2-1600, Antec Fusion Remote, Harmony 650, LG 50PK550