Installation Stream2Dream
Die Linux Version von Stream2Dream gibt es hier. Samba haben wir in der Ubuntu Grundinstallation bereits installiert. Wir brauchen jetzt also noch Perl.
Vorbereitungen
Installation Perl
apt-get install perl
So, jetzt ist noch wichtig, dass diese beiden Module installiert sind:
IO::Socket Date::Format
Folgende Befehle ausführen. Sind die Module bereits installiert, wird das der Installscript bemerken und abbrechen.
perl -MCPAN -e shell
Jetzt kommt man ins Perl Shell. Nun diese Befehle eingeben:
install IO::Socket install Date::Format
Um Shell zu verlassen:
quit
Installation VLC Player
Damit wir auch MPEG-4 AVC / AAC Codec Videos mit VLC streamen können, müssen wir alles selber builden. Ansonsten werden bei AAC Codierten Videos kein Audio ausgegeben. Ist zwar aufwändiger in der Installation, aber dafür klappt es nachher auch wirklich mit dem Streaming 🙂
FFMpeg
Zuerst allerneuste ffmpeg Version installieren.
Das ist die Grundanleitung http://ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuide
Damit allerdings alles klappt, müssen die Libraries SHARED installiert werden. Ausserdem mit PIC.
Als erstes bestehende Packages entfernen
apt-get remove ffmpeg x264 libvpx-dev libx264-dev
Dann Abhängigkeiten Installieren
apt-get update apt-get -y install autoconf build-essential libhal-dev checkinstall git libfaac-dev libgpac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev librtmp-dev libtheora-dev libtool libvorbis-dev pkg-config texi2html yasm zlib1g-dev libxvidcore-dev libmp4v2-0 libavcodec-extra-52 ubuntu-restricted-extras
x264
H.264 video encoder
cd git clone --depth 1 git://git.videolan.org/x264 cd x264 ./configure --enable-shared --enable-pic make checkinstall --pkgname=x264 --pkgversion="3:$(./version.sh | awk -F'[" ]' '/POINT/{print $4"+git"$5}')" --backup=no --deldoc=yes --fstrans=no --default
fdk-aac
AAC audio encoder.
cd git clone --depth 1 git://github.com/mstorsjo/fdk-aac.git cd fdk-aac autoreconf -fiv ./configure --enable-shared --with-pic make checkinstall --pkgname=fdk-aac --pkgversion="$(date +%Y%m%d%H%M)-git" --backup=no --deldoc=yes --fstrans=no --default
libvpx
VP8 video encoder and decoder.
cd git clone --depth 1 http://git.chromium.org/webm/libvpx.git cd libvpx ./configure --enable-shared --enable-pic make checkinstall --pkgname=libvpx --pkgversion="1:$(date +%Y%m%d%H%M)-git" --backup=no --deldoc=yes --fstrans=no --default
FFmpeg
cd git clone --depth 1 git://source.ffmpeg.org/ffmpeg cd ffmpeg ./configure --enable-gpl --enable-libfaac --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-version3 --enable-pic --enable-shared --enable-libxvid make checkinstall --pkgname=ffmpeg --pkgversion="7:$(date +%Y%m%d%H%M)-git" --backup=no --deldoc=yes --fstrans=no --default hash x264 ffmpeg ffplay ffprobe
Ganz wichtig, damit am schluss alle Libraries stimmen
ldconfig
nochmals ausführen. Sonst kann es nachher beim VLC zu shared module fehlern kommen wie z.b.
[0xa0aca68] main decoder warning: cannot load module `/usr/local/lib/vlc/codec/libavcodec_plugin.so' (libavutil.so.54: cannot open shared object file: No such file or directory)
VLC
Da braucht es zuerst noch diverse Libraries:
sudo apt-get install lua5.1 liblua5.1-0-dev libusb-1.0-0-dev libmadlib libmad0 libmad0-dev libavcodec-dev libavformat-dev libswscale-dev libpostproc-dev liba52-dev libxcb1-dev libxcb-shm0-dev libxcb-xv0-dev libx11-xcb-dev libgl1-mesa-dev libqt4-dev libasound2-dev libgcrypt-dev zlib1g-dev libdvbpsi-dev libfaad-dev libtwolame-dev libflac-dev libmpeg2-4-dev
Die aktuellste Version gibt es hier: http://www.videolan.org/vlc/download-sources.html
mkdir /usr/local/software cd /usr/local/software
wget http://download.videolan.org/pub/videolan/vlc/2.0.4/vlc-2.0.4.tar.xz
tar xfv vlc-2.0.4.tar.xz cd vlc-2.0.4 ./configure --enable-dvbpsi --disable-xcb --enable-merge-ffmpeg --enable-faad --enable-twolame --enable-flac --enable-libmpeg2 --with-pic make make install
Installation Stream2Dream
Aktuelle Stream2Dream Version herunterladen und ins Verzeichnis
/usr/local/bin
kopieren und konfigurieren. Darauf achten, dass bei
$vlc =
zum Binary cvlc gelinkt wird (Command Line Version). Sonst gibt es Interface Fehler, weil wir keine X Oberfläche haben.
chmod 775 /usr/local/bin/stream2dream.pl
Und jetzt noch Script beim Boot automatisch starten
vi /etc/rc.local
# By default this script does nothing. # sudo -uVideoUser /usr/local/bin/stream2dream.pl # damit wir eine eigene bash ($HOME) haben su - VideoUser -c /usr/local/bin/stream2dream.pl exit 0
Fehlermeldungen
main libvlc error: cannot open config file (/root/.config/vlc/vlcrc): Permission denied
VLC media player 1.1.9 The Luggage (revision exported) [0x1930120] main libvlc error: cannot open config file (/root/.config/vlc/vlcrc): Permission denied Blocked: call to unsetenv("DBUS_ACTIVATION_ADDRESS") Blocked: call to unsetenv("DBUS_ACTIVATION_BUS_TYPE") [0x1a51a30] inhibit interface error: Failed to connect to the D-Bus session daemon: //bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed.
Fix: stream2dream nicht per sudo, sondern su ausführen. So erhalten wir eine bash ($HOME) Verzeichnis mit permission. per sudo ist $HOME root, mit su ist es videouser.
su - VideoUser -c /usr/local/bin/stream2dream.pl
/usr/local/lib/libavformat.a: could not read symbols: Bad value
Wenn alles korrekt installiert wurde, reicht wahrscheinlich ein ldconfig auszuführen
ldconfig
avcodec encoder error: cannot open encoder
Wahrscheinlich wurde ffmpeg (und/oder) vlc direkt aus den Packages installiert. Wenn alles aus den Sources wie oben beschrieben installiert wird, klappts!
[mpeg2video @ 0x2923c50]a vbv buffer size is needed, for encoding with a maximum bitrate
[0x26252f8] avcodec encoder error: cannot open encoder
[0x26252f8] main encoder error: Streaming/Transkodierung fehlgeschlagen
[0x26252f8] main encoder error: VLC konnte den Encoder nicht öffnen.
[0x26252f8] main encoder debug: no encoder module matching "any" could be loaded
[0x26252f8] main encoder debug: TIMER module_need() : 22.442 ms - Total 22.442 ms / 1 intvls (Avg 22.442 ms)
[0x1769bb8] stream_out_transcode stream out error: cannot find video encoder (module:any fourcc:mpgv). Take a look few lines earlier to see possible reason.
[0x2624eb8] main generic debug: removing module "avcodec"
[0x2624eb8] avcodec generic debug: ffmpeg codec (MPEG-4 Video) stopped
[0x1769bb8] stream_out_transcode stream out error: cannot create video chain
[0x236d418] main decoder error: cannot create packetizer output (mp4v)
Diverses
VLC forcieren mit FFMPEG zu demuxen
/usr/local/bin/cvlc --demux ffmpeg [...]
VLC Debuggen
/usr/local/bin/cvlc -vvv [...]
VLC aufrufen
Um einfach zu testen, ob vlc das machen würde, was wir mit Stream2Dream bezwecken, kann man es einfach mal so aufrufen. So sieht man eventuelle Fehlermeldungen sofort ohne jedesmal den Stream über die Dreambox zu starten. Achte natürlich darauf, dass du eine Video Datei nimmst, die bei Dir auf dem Server liegt.
/usr/local/bin/cvlc -vvv -I telnet "file:///home/mediacenter/movies/_Series/Lie to me/Season 1/s01e01.avi" ":sout=#transcode{vcodec=mpgv,vb=8192,fps=25,acodec=mpga,ab=192,channels=2,samplerate=48000,soverlay}:duplicate{dst=std{access=file,mux=ts,dst="/home/mediacenter/movies/MPStream.ts"}}"
.