nochmal etwas gebastelt da mich ein paar dinge doch etwas genervt haben. transcoding von .vdr funktioniert zwar aber die videoliste wird durch die gefühlten 17 million einträge mit vielsagenden namen wie 001.vdr dann doch unbenutzbar. mal ganz davon abgesehn das nicht jede aufnahme auch überall im haus verfügbar sein muss/soll ;).
live tv über streamdev mit externremux geht zwar aber das externremux wollte ich für andere sachen benutzen von daher war auch auch eher unglücklich.
"zweckentfremdet" man die transcoding funktion des svn mediatomb kann man da einige lustige dinge machen die das handling wesentlich verbessern und die lösung fast wohnzimmertauglich machen.
momentan hab ich folgendes gebastelt:
live tv mit transcoding in mediatomb, die art der verarbeitung ist für jeden kanal einzeln einstellbar
aufzeichnungen als ein item in der videoliste, ebenfalls mit einstellbarer verarbeitung
aufzeichnungen werden im vdr "freigegeben", es ist nur das streambar war auch freigegeben ist
wie man einen mediatomb aus dem svn aufsetzt ist unter http://www.deadlock.dhs.org/jin/mt-tr-howto.txt beschreiben, keine grosse sache.
bestehende konfiguration und datenbank wirft man am besten weg und startet mit einer sauberen neuen, beim ersten start wird eine neue erzeugt die angepasst werden muss. meine config liegt als spickzettel bei.
zunächst erstmal den "dlna/ps3 modus" aktivieren, danach sollte mediatomb im dash der ps3 auftauchen und mp3´s,... wiedergeben
für die tv streams und aufzeichnungen benutzte ich dateien welche die quelle und verarbeitung parameter angeben. der verwendeten datei erweiterung weise ich im mt dann dummy mime types zu und bestimmte für die mime types die weiterverarbeitung
die dateien sehen dann zB so aus:
Premiere 1.sdtv-stream
Basic_Instinct.vdr-recording
#!/bin/bash
files="/var/lib/video.00/Basic_Instinct/2007-12-28.20.05.50.99.rec/0*.vdr"
opts=" -ovc copy -oac copy "
die erweiterungen werden in der config.xml auf mime types gemappt
<config>
...
<mappings>
...
<import hidden-files="no">
<extension-mimetype ignore-unknown="no">
<map from="sdtv-stream" to="video/x-vdr-sdtv"/>
<map from="vdr-recording" to="video/x-vdr-sdtv-recording"/>
...
</extension-mimetype>
...
</mappings>
</config>
Display More
für die mime types wird dann ein transcoding verfahren festgelegt, für die verfahren ein skript, der ziel mime type und die bufferstettings, was die einzelnen tag genau machen steht unter http://www.deadlock.dhs.org/jin/mt/transcoding.txt
<config>
...
<transcoding enabled="yes">
<mimetype-profile-mappings>
<transcode mimetype="video/x-vdr-sdtv" using="mencoder-stream-mpeg-sh"/>
<transcode mimetype="video/x-vdr-sdtv-recording" using="mencoder-recording-mpeg-sh"/>
</mimetype-profile-mappings>
<profiles>
<profile name="mencoder-stream-mpeg-sh" enabled="yes" type="external">
<mimetype>video/mpeg</mimetype>
<accept-url>no</accept-url>
<first-resource>yes</first-resource>
<agent command="mt-mencoder-stream-mpeg.sh" arguments="%in %out"/>
<buffer size="2097152" chunk-size="131072" fill-size="327860"/>
</profile>
<profile name="mencoder-recording-mpeg-sh" enabled="yes" type="external">
<mimetype>video/mpeg</mimetype>
<accept-url>no</accept-url>
<first-resource>yes</first-resource>
<agent command="mt-mencoder-recording-mpeg.sh" arguments="%in %out"/>
<buffer size="20485760" chunk-size="131072" fill-size="327860"/>
</profile>
</profiles>
</transcoding>
</config>
Display More
zusammengefasst macht die konfiguration das folgende: wenn ein client eine datei mit der erweiterung .sdtv-stream sehen will dann starte mt-mencoder-stream-mpeg.sh und übergebe den namen der gewünschten datei an das skript. bei der erweiterung .vdr-recording mach das gleiche aber nimm mt-mencoder-recording-mpeg.sh.
als zweiten parameter wird der name eines fifos übergeben der in den buffer läuft und dann zum client gestreamt wird.
die beiden skripte sind relativ langweilig
mt-mencoder-stream-mpeg.sh
und
mt-mencoder-recording-mpeg.sh
#!/bin/bash
#
. "$1"
exec cat $files | /usr/local/bin/mencoder $opts -of mpeg -mpegopts format=dvd -o "$2" -
die datei die übergeben wird (siehe oben) ist ebenfalls ein bash skript das ausgeführt wird und die variablen $file/url und $opts setzt, abschliessend wird mencoder mit den entsprechenden optionen gestartet
die dateien für die sender habe ich von hand erstellt, die files für die aufnahmen erzeuge ich über ein skript das über die reccmds des vdr (rote taste in den aufnahmen) gestartet wird
die einträge für die reccmds
Fuer PS3 bereitstellen : /usr/local/bin/addtomt streamcopy
Fuer PS3 bereitstellen (Umwandeln) : /usr/local/bin/addtomt transcode
und das skript (für anregungen wie ich den aufzeichnungsnamen rausbekomme wär ich dankbar)
#!/bin/bash
ORIG_IFS=$IFS
IFS="/"
dir=($2)
# TODO: get recording name
# [0]/[1]var/[2]lib/[3]video/[4]rec/[5]date/
name=${dir[4]}
IFS=$ORIG_IFS
echo \#!/bin/bash > /var/lib/video.00/TV/$name.vdr-recording
echo files=\"$2/0*.vdr\" >> /var/lib/video.00/TV/$name.vdr-recording
case "$1" in
streamcopy)
echo opts=\" -ovc copy -oac copy \" >> /var/lib/video.00/TV/$name.vdr-recording
;;
transcode)
echo opts=\"-ofps 25 -oac lavc -ovc lavc -vf scale=720:576,harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:acodec=ac3:abitrate=192 \" >> /var/lib/video.00/TV/$name.vdr-recording
;;
esac
exit 0
Display More
das verzeichniss in dem die datein landen wird durch mediatomb überwacht und neue dateien importiert so das diese mit kurzer verzögerung dort auftauchen und abspielbar sind
bei aufnahmen die durch remuxen nicht abspielbar sind (z.B. bei schlechtem wetter, vdr neustart oder vollmond aufgenommen) gibt der zweite punkt an das nicht geremuxt werden soll sondern neu codiert. die ps3 ist etwas kleinig was die vdr aufzeichnung anbelangt, einige recording brechen reproduzierbar an einer stelle ab, jeder andere mir verfügbare hard/software player ruckelt an der stelle nicht mal, besonders ulkig wirds wenn man den das live bild streamed, alles funktioniert und die aufnahme der sendung nicht abspielbar will, falls da jemand weitere infos hat immer her damit, solang helf ich mir mit dem transcoding der aufnahmen die nicht so wollen wie ich
falls jemand rausfindet wie man aus dem ts stream eines hdtv kanals etwa baut das die ps3 wiedergibt ist das mit relativ wenig aufwand eingebaut
fragen und anregungen wie immer jederzeit gerne