[1] MLD-5.x / General / VDR-Aufnahme aus mp4 erzeugen
 

Offline linuxdxs

  • Member
  • **
  • Posts: 68
    • View Profile
VDR-Aufnahme aus mp4 erzeugen
« on: September 01, 2024, 11:22:59 »
Hallo Forum, dieses Thema ist schon gefühlte 1000 Mal behandelt worden und es gibt immer weider einen der es nicht schafft. Jetzt halt ich. Ich habe von der ZDF Mediathek eine mp4-Datei heruntergeladen und diese mit

"ffmpeg -i Mein_Leben_ohne_Gestern.mp4 -c:v libx264 -c:a aac -b:a 160k -bsf:v h264_mp4toannexb -f mpegts -crf 32 Mein_Leben_ohne_Gestern.ts"

umgewandelt. Dann im Aufnahmeverzeichnis ein Unterverzeichnis erstellt usw. Eine vorhanden Aufzeichnung versucht nachzubilden. Mein VDR zeigt diese Aufnahme nicht an. An was könnte das liegen?

Offline clausmuus

  • Administrator
  • Expert Member
  • ********
  • Posts: 20531
    • View Profile
    • ClausMuus.de
VDR-Aufnahme aus mp4 erzeugen
« Reply #1 on: September 01, 2024, 11:54:35 »
Hi,
soweit ich mich erinnere gibt es ein Tool bzw. Script, dass die benötigten Metadaten Datei, die der VDR benötigt, zu erstellen. Den Namen weiß ich aber nicht mehr. Könnte auch sein, dass dies sogar in den VDR Sourcen enthalten ist. das müsste ich erst raussuchen.
Außerdem ist zu beachten, dass nach dem händischen Ändern von Aufnahmen das Verzeichnis neu eingelesen werden muss, z.B. durch einen Neustart des VDRs oder einem "touch /data/tv/.update".
Ich selbe verwende immer das mpv Plugin um die externen Aufnahmen direkt wiederzugeben.
« Last Edit: September 01, 2024, 13:10:55 by clausmuus »
MLD 5.5 - Raspberry PI - 7" Touch TFT - Squeeze Play
MLD 6.5 - lirc yaUsbIR - OctopusNet - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - 22TB HDD - Lian Li PC-C37B - Samsung LE40A559

Offline linuxdxs

  • Member
  • **
  • Posts: 68
    • View Profile
VDR-Aufnahme aus mp4 erzeugen
« Reply #2 on: September 01, 2024, 13:14:07 »
Ich verwende auch verschiedene Plugins. Meine Eltern würden es bevorzugen, wenn ich die Filme direkt dort ablege, wo sie alles Andere auch finden.

Offline Dumpfbacke

  • Newbie
  • *
  • Posts: 42
    • View Profile
VDR-Aufnahme aus mp4 erzeugen
« Reply #3 on: September 03, 2024, 15:43:15 »
Meinst du genindex?

Offline clausmuus

  • Administrator
  • Expert Member
  • ********
  • Posts: 20531
    • View Profile
    • ClausMuus.de
VDR-Aufnahme aus mp4 erzeugen
« Reply #4 on: September 03, 2024, 17:08:52 »
Ne, das ist nur für alte Aufnahmen im PES Format. Bei TS Aufnahmen geht das so:
Code: [Select]
vdr --genindex=/path/to/recording/2013-11-06.04.18.50-0.rec/
« Last Edit: September 03, 2024, 17:16:18 by clausmuus »
MLD 5.5 - Raspberry PI - 7" Touch TFT - Squeeze Play
MLD 6.5 - lirc yaUsbIR - OctopusNet - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - 22TB HDD - Lian Li PC-C37B - Samsung LE40A559

Offline clausmuus

  • Administrator
  • Expert Member
  • ********
  • Posts: 20531
    • View Profile
    • ClausMuus.de
VDR-Aufnahme aus mp4 erzeugen
« Reply #5 on: September 03, 2024, 17:20:41 »
MLD 5.5 - Raspberry PI - 7" Touch TFT - Squeeze Play
MLD 6.5 - lirc yaUsbIR - OctopusNet - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - 22TB HDD - Lian Li PC-C37B - Samsung LE40A559

Offline linuxdxs

  • Member
  • **
  • Posts: 68
    • View Profile
VDR-Aufnahme aus mp4 erzeugen
« Reply #6 on: December 02, 2024, 16:41:51 »
Hallo Forum,
ich habe etwas Code zusammengeschrieben, um MP4-Dateien von den Mediatheken der ÖRR in .ts Dateien umzuwandeln und diese dann in das Aufnahmeverzeichnis des VDR zu kopieren. Ich starte das Skript über cron alle 15 Minuten. Das Verschieben der gewandelten Dateien, in das Aufnahmeverzeichnis,  übernimmt ebenfalls ein Cronjob der nur während bestimmten Zeiten läuft. Über Rückmeldungen würde ich mich freuen.

Code: [Select]
#-----------------------------------------------------------------------
#------------------------ Verzeichnisse --------------------------------
#Verzeichnis fuer die downgeloadeten mp4 Dateien
QUELLVERZEICHNIS="/ext/lw_1/filme"
#Aufnahmeverzeichnis des VDR
ZIELVERZEICHNIS="/ext_lw/tvaufnahmen/Mediathek"
#Hier werden die Original hierhin verschoben
SICHER_QUELLE="/ext/lw_1/sicher_quelle"
#Hier werden die konvertierten Datein zwischengespeichert
KONVERT_FERTIG="/ext/lw_1/fert_konv"
#Dieses Verzeichnis wird zum konvertieren benoetigt
KONVERT_TMP="/ext/lw_1/temp_konvert"
#Lockdatei
LOCKFILE="/var/lock/konvert"
#Logdatei
LOG_DATEI="/var/log/konvert"
#-----------------------------------------------------------------------
#-----------------------  Variablen ------------------------------------
SENDER_OERR="3Sat ARD ARD-ALPHA BR DW FUNK.NET KIKA ONE ORF PHOENIX ARTE.DE RBTV SRF SWR WDR ZDF-TIVI ARD.DE ZDF MDR NDR RBB SR HR"
SORT_VAR="Sender Thema Titel Datum Zeit Dauer Groesse Website http Url"
#Index      1       2     3     4    5    6       7      8      9   10
#-----------------------------------------------------------------------
#-----------------------  Funktionen -----------------------------------
#Log schreiben mit automatischem Datum
function LOG(){
echo "$(date '+%Y-%m-%d %H:%M') ${1}" >> ${LOG_DATEI}
}
#-----------------------------------------------------------------------
#-----------------------  Programmstart --------------------------------
#-----------------------------------------------------------------------
#Skript darf nur als root ausgefuehrt werden"
if [ ! "$(whoami)" = "root" ]; then
   LOG "Skript laeuft nicht als root"
   exit 0
fi
#-----------------------------------------------------------------------
#Skript darf nur einmal ausgefuehrt werden
if [ -f ${LOCKFILE} ]; then
   exit 0
fi
touch ${LOCKFILE}
#-----------------------------------------------------------------------
#Erstellen der Log-Datei
if [ ! -f ${LOG_DATEI} ]; then
   touch ${LOG_DATEI}
   LOG "Erstelle ${LOG_DATEI}"
fi
#-----------------------------------------------------------------------
#Auslesen der mp4 Dateien, $i Kompletter Pfad und Dateiname .mp4
for i in $(ls ${QUELLVERZEICHNIS}/*.mp4); do
   LOG "Bearbeite $i"
   TXT_DATEI=$(echo ${i%.*}.txt)
#-----------------------------------------------------------------------
#Erstellen der INFO-Datei fuer Oeffentlich Rechtlichen wenn
#die mp4- und die dazugehoerige txt-Datei vorhaden   
   if [ -f "${i}" ] && [ -f "${TXT_DATEI}" ]; then
      LOG "mp4 und txt Dateien vorhanden"
#Filter den Sendernamen aus der akt. txt Datei
      SENDER=$(grep -i "sender" ${TXT_DATEI}|cut -d":" -f2|sed 's/^[[:space:]]*//')
      LOG "Erkannter Sender in TXT-Datei = $SENDER"
      for j in ${SENDER_OERR}; do
#Wenn Sendername in Datei und Variable gleich
         if [ "${SENDER}" = "${j}" ]; then
            LOG "OER Sender $SENDER erkannt"
#-----------------------------------------------------------------------
            TEXT=""
            while read line; do
               if [ ! -z "${line}" ];then
                  ERKANNT=0
#Es werden von jeder Zeile, die eigelesen wird, die Sonderzeichen umgewandelt
                  line=$(echo ${line} | sed -e 's/\ö/oe/g' -e 's/\Ä/Ae/g' -e 's/\ä/ae/g' -e 's/\Ö/Oe/g' -e 's/\Ü/Ue/g' -e 's/\ü/ue/g' -e 's/\ß/ss/g')
#Wenn ein : in der Zeile dann Teilung und Zuordnung
                  if [ "$(echo ${line}|grep :)" ];then
                     TEIL1=$(echo ${line}|cut -d":" -f1|sed 's/^[[:space:]]*//')
                     TEIL2=$(echo ${line}|cut -d":" -f2-|sed 's/^[[:space:]]*//')
#Stringinhalt zuordnen
                     ZAEHLER=0
                     for k in ${SORT_VAR}; do
                        if [[ $TEIL1 =~ $k ]]; then
                           INFO[${ZAEHLER}]=$TEIL2
                           ERKANNT=1
                        fi
                        ZAEHLER=$(($ZAEHLER+1))
                     done
                  fi
                  if [[ ! $line =~ "Url" ]] && [ ${ERKANNT} -eq 0 ] ; then
                     TEXT=$(echo "$TEXT|${line}")
                     #Leerzeichen am Ende und am Anfang abschneiden
                     TEXT=$(echo ${TEXT}|sed 's/^[[:space:]]*//')
                  fi
               fi
            done < ${TXT_DATEI}
            LOG "TXT Datei bearbeitet"       
#-----------------------------------------------------------------------
#-----------------------------------------------------------------------         
            ZUFALL=$(( RANDOM % 4294967292 + 1 ))
            TITEL=$(echo ${INFO[2]}|sed 's/ /_/g'|sed 's/[^0-9a-zA-Z\_\]*//g')
            THEMA=$(echo ${INFO[1]}|sed 's/ /_/g'|sed 's/[^0-9a-zA-Z\_\]*//g')
            DATUM="$(echo ${INFO[3]}|cut -d'.' -f3)-$(echo ${INFO[3]}|cut -d'.' -f2)-$(echo ${INFO[3]}|cut -d'.' -f1)"
            ZEIT="$(echo ${INFO[4]}|cut -d':' -f2).$(echo ${INFO[4]}|cut -d':' -f1).5-0"
            UNIX_TIME=$(date -d "${DATUM} 20:15" +%s)

            KONV_VERZ="${KONVERT_TMP}/${TITEL}_${THEMA}/${DATUM}.${ZEIT}.rec"
            if [ -d ${KONV_VERZ} ]; then
               rm -R ${KONV_VERZ}
               LOG "Verzeichnis ${KONV_VERZ}, Verz wird geloescht"
            fi
            VERSCH_VERZ="${KONVERT_TMP}/${TITEL}_${THEMA}"
            LOG "Erstelle Verzeichnis ${KONV_VERZ}"
            mkdir -p ${KONV_VERZ}
            LOG "Erstelle Datei ${KONV_VERZ}/info"
            touch ${KONV_VERZ}/info
#-----------------------------------------------------------------------
            LOG "Kovertiere ${i} nach ${KONV_VERZ}/00001.ts"
            ffmpeg -i ${i} -c copy ${KONV_VERZ}/00001.ts
#-----------------------------------------------------------------------           
            if [ $? = "0" ]; then
               LOG "Konvertierung erfolgreich"
               DAUER_GE=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 $i)
               DAUER_GE=(${DAUER_GE%.*})
               LOG "Dauer gesamt = ${DAUER_GE}"
           
               GROESSE=$(ls -lh ${KONV_VERZ}/00001.ts | awk '{print  $5}')
               LOG "GROESSE= ${GROESSE}"
               BILDWF=$(ffprobe -v error -select_streams v:0 -show_entries stream=avg_frame_rate -of default=noprint_wrappers=1:nokey=1 ${i})
               BILDWF=(${BILDWF%/*})
               LOG "FRAMES = ${BILDWF}"
#-----------------------------------------------------------------------
# INFO Datei erstellen             
               echo "C ${INFO[0]}" > ${KONV_VERZ}/info
               echo "E ${ZUFALL} ${UNIX_TIME} ${DAUER_GE}" >> ${KONV_VERZ}/info
               echo "T ${INFO[2]}" >> ${KONV_VERZ}/info
               echo "S ${INFO[3]}" >> ${KONV_VERZ}/info
               echo "D ${TEXT}" >> ${KONV_VERZ}/info
               echo "F ${BILDWF}" >> ${KONV_VERZ}/info
               echo "P 99" >> ${KONV_VERZ}/info
               echo "L 99" >> ${KONV_VERZ}/info
#-----------------------------------------------------------------------
               LOG "Fuehre genindex aus"
               vdr --genindex=${KONV_VERZ}
#-----------------------------------------------------------------------
               LOG "Verschiebe Dateien ${i} nach ${SICHER_QUELLE}"
               mv ${i} ${SICHER_QUELLE}
               mv ${TXT_DATEI} ${SICHER_QUELLE}
               LOG "Verschiebe Datei ${VERSCH_VERZ} nach ${KONVERT_FERTIG}"
               mv ${VERSCH_VERZ} ${KONVERT_FERTIG}
               LOG "---------------------------------------------"
               LOG " "
            else
               LOG "Konvertierung NICHT erfolgreich"
            fi   
         fi
      done   
   fi
done
#-----------------------------------------------------------------------
rm ${LOCKFILE}
« Last Edit: December 02, 2024, 19:06:38 by linuxdxs »

[1] MLD-5.x / General / VDR-Aufnahme aus mp4 erzeugen
 



Users Online Users Online

0 Members and 1 Guest are viewing this topic.