Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - linuxdxs

1
Allgemein [ General ] / VDR-Aufnahme aus mp4 erzeugen
« 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}

2
Allgemein [ General ] / VDR-Aufnahme aus mp4 erzeugen
« 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.

3
Allgemein [ General ] / 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?

4
Allgemein [ General ] / Gezackter Rand
« on: July 17, 2024, 16:19:25 »
Ok. Schade.

5
Allgemein [ General ] / Gezackter Rand
« on: July 17, 2024, 10:26:21 »
Geschafft

6
Allgemein [ General ] / Gezackter Rand
« on: July 16, 2024, 23:24:50 »
Ich habe Bilder gemacht. Wie sieht es mit dem Copyright aus, wenn ich das eine oder andere Bild hochladen? Gibt es eine private Adresse?

7
Allgemein [ General ] / Gezackter Rand
« on: July 16, 2024, 20:24:25 »
Ich benutze einen Raspi 3 Modell B+, Version 5.4 (MLD-5.4_customized_2024.07.16-182+5.4-64KNJt_armhf-rpi3.img), einen LG 47lk950s.
Jetzt, 20:22, habe ich mal gezappt. VOX ohne Problem z.B. DMAX und RTL2 mit Zacken.

8
Allgemein [ General ] / Gezackter Rand
« on: July 16, 2024, 08:57:08 »
Habe wieder ein kleines Problem, auf VOX fiel mir gestern auf, daß das Bild währen der Werbung einwandfrei ist, aber während der Doku, die gerade lief, der Rand gezackt ist. Kann mir jmd bei diesem Problem weiterhelfen?

9
Allgemein [ General ] / Bildschirm schwarz nach umschalten
« on: July 14, 2024, 12:30:46 »
Ich habe das System nochmal installiert, jetzt funktionierts. Komisch

10
Allgemein [ General ] / Bildschirm schwarz nach umschalten
« on: July 14, 2024, 11:03:49 »
Ich habe gestern die 5.5 testing heruntergeladen (MLD-5.5_customized_2024.07.13-183+5.5-cwb5cI_armhf-rpi3.img). Nach dem erstmaligen Umschalten bleibt der Bildschirm schwarz. Ich habe den Fehler im Forum gefunden (
Allgemein [ General ] / [MLD-5.5 testing] Start vdr failed SVDRP MLD < 127.0.0.1:35070 server destroyed). Wollte nur mal nachfragen ob dies jetzt ein anderer Fehler ist oder ob ich einen Fehler gemacht habe.

11
Allgemein [ General ] / ACPI Wakeup / Nächste Timerzeit
« on: January 13, 2024, 20:26:21 »
Ich habe folgendes Bashskript mit -s an den Programmaufruf angehängt

#! /bin/bash

DEV=/sys/class/rtc/rtc0/wakealarm
#DEV=/proc/acpi/alarm              # Fuer Kernel < 2.6.22

#ACPI
echo "Arguments:  $*"
#echo "Next timer: $1 seconds from 1970/01/01, UTC"  >> /home/test
#echo "Next timer: $2 seconds from now" >> /home/test

naechsterTimer=$(/bin/date --date "now +$2 seconds" "+%s")
#naechsterTimer=$(/bin/date --date "now +$2 seconds" "+%Y-%m-%d %H:%M:%S")# Fuer Kernel < 2.6.22
echo $naechsterTimer
sudo chmod a+wr  $DEV

# wakealarm löschen (wenn schon gesetzt, muss er gelöscht werden)
echo 0 >  $DEV
#alarm setzen
echo $naechsterTimer > $DEV
#echo $naechsterTimer > $DEV

sudo /sbin/shutdown -h now
EXITSTATUS=0
exit $EXITSTATUS


12
Allgemein [ General ] / Direktaufnahmeauf dem Server
« on: December 31, 2023, 13:42:06 »
Ich habe in die Datei folgenden Code eingefügt. Es scheint zu funktionieren. Sollte es jmd interessieren, wäre eine Rückmeldung schön. Ich wünsche allen einen guten Rutsch ins neuer Jahr und im neuen Jahr Gesundheit, Glück und viel Geld.

Code: [Select]
#!/bin/bash

SERVER="10.1.1.15"

if [ "$1" == "started" ]; then
        while read ZEILE; do
                if [ $(echo $ZEILE|cut -d" " -f1) == "250" ]; then
                        TIMER=$(echo $ZEILE|cut -d" " -f3-)
                        TIMER_NR=$(echo $ZEILE|cut -d" " -f2)
                        svdrpsend localhost 6419 "DELT $TIMER_NR"
                        svdrpsend $SERVER 6419 "NEWT $TIMER"
                fi
        done < <(svdrpsend localhost 6419 "LSTT")
fi

13
Allgemein [ General ] / Direktaufnahmeauf dem Server
« on: December 30, 2023, 18:31:55 »
Ist es möglich inotify auf der MLD zu installieren? Man könnte die timers.conf damit überwachen und bei einer Änderung den akt Timer auf dem Klient löschen und per SVDRP einen Timer auf dem Server installieren,

14
Allgemein [ General ] / Direktaufnahmeauf dem Server
« on: December 30, 2023, 10:15:31 »
Hallo Forum, noch ein kleines Problem. Kann man den VDR-Klient so einstellen, daß Direktaufnahmen auf dem Sever gestartet werden?

15
Allgemein [ General ] / Aufnahme auf dem Server
« on: December 30, 2023, 09:47:44 »
Hallo Forum, jetzt habe ich es geschafft und meinen Fehler erkannt. Meine Erkenntnisse würde ich hier schnell nochmal für die die es Interessiert zusammen fassen:
Der Server auf dem alle Timer landen soll, muß natürlich mit allen VDR's im Netz in Verbindung treten, daher folgende Konfig:
SVDRPDefaultHost =
SVDRPHostName =
SVDRPPeering = 1
SVDRPTimeout = 300

Zu beachten wäre hier die 1 in Peering, die gibt an, daß der Server mit jedem anderen VDR eine Verbindung eingeht.

Für die Klients hab ich folgende Konifugration:
SVDRPDefaultHost = satempfaenger1
SVDRPHostName =                 
SVDRPPeering = 2             
SVDRPTimeout = 300 

Hier steht die 2 bei Peering, welche den Klient anweist, nur mit dem Default Host, dem Server, eine Verbindung aufzubauen.