Skip to content
Jürgen Schneider edited this page Sep 7, 2024 · 51 revisions

Welcome to the vdr-transcode wiki!

swiss knife for transcoding

VDR Aufnahme mit ffmpeg in h264 oder hevc umwandeln. Der Script ist dafür gedacht, einzelne oder mehrere Aufnahmen so nach h264 zu wandeln, dass sie kompatibel zum vdr bleiben. Platzersparnis: bei Aufzeichnungen von ÖRs mit großen Bitraten Faktor 3 und mehr (mpeg2 -> h264).

Export und Import möglich.

Bearbeitung von Video-Dateien ist ebenfalls möglich.

Aufgerufen wird der Script auf der cli im Aufnahmeverzeichnis der jeweiligen Aufnahme, genauer gesagt im .rec Verzeichnis. Sollen eine größere Menge von Aufnahmen gewandelt werden siehe Automation.

Modularer Aufbau

4 Eingabe-Module vdr, Video-Datei (z.B. mkv mp4 avi), dvd, AVCHD

1 zentrales Verarbeitung Modul

2 Ausgabe-Module vdr, Video-Datei mkv mp4

Folgende Parameter sind implementiert: must be updated

gentoo vdr-2.4.5 # vt -h
vt parameter
 -h [-v|-a] # this
Input
 -i <file>|vdr|dvd[:<track>]|<http> # default vdr
 -dvd <path>
 -BD <path>    # AVCHD
 -tr <track>   # DVD or AVCHD track
 -va <seconds> # add video at end, only ts
 -ia <file>|<http> # second audio source
 -ic           # copy chapters from an other file
Output
 -o vdr|mp4|mkv|ts|mp3 # default vdr
 -t <n>       # length in seconds
 -ss <position>
 -to <position>
 --streams
 --inf
 --stat       # status
 --p          # streams preview
 --diag
Video
 -vc|-vcodec <codec> # Video Codec copy|h264|hevc|vp8|vp9|mpeg2
 -r <n>           # fps, only when needed
 -vf <filter>     # video filter
 -maxr <fps>      # max bitrate
 -crop <w:h>
 --LB             # -vf crop=iw:ih/4*3 -aspect 16:9
 -zoom <factor>   # crop=iw/<factor>:ih/<factor>
 -scale <w:h>|hd720|hd1080|qhd
 -aspect <aspect> # 16:9|4:3
 --nohw           # no hardwaredecoding
 -vb <n>          # constant bitrate for h264_omx
Audio
 -ac|-acodec [<str>=]<codec>   # Audio Codec copy|eac3|aac|aac_he|aac_he_v2|opus
 -sel [<file>:]<n[-n][,n]>     # audio, subtitle stream select
 --selb           # select best audio track
 -vol <factor>|<stream>=<factor> # Volume
 -ab <n>          # constant bitrate for mp3, aac_stereo
 -lang <str>=<lang>[,<str>=<lang>]
 -stro <str>=<ostr>[,<str>=<ostr>] # Streamorder
       Sample: -stro 1=2,2=1 this should be a seperate step
 -disp =default|0[,...]       # -disposition 
 -ch 2                             # 5.1 -> stereo
 -skip  # default 10, inf() and analyze(): skip first  seconds
Automation
 --as &             # server start, search pathes in /etc/vdr-transcode-s.conf
 --ak               # server stop
 --conf <parameter> # mark for processing
 --confr            # mark recursiv gt min_br
 -min_br <min_br>
 -confr <min_br>    # mark recursiv gt min_br
 -confsz <min_size>[M|G] # find recursiv gt min_size for marking
 --alog             # process log
 --aq               # process queue
 --ac               # check processed
 --rmdel            # deletes processed records, marked to delete, use on your own risk
 --astat            # show status like out_stat
 --aplay            # like --ac with play
Configuration /etc/vdr-transcode.conf
 video configuration
 -h264 copy|h264|hevc|vp8|vp9|mpeg2
 -h264_HD <codec> # HD only
 -hevc copy|h264|hevc|vp8|vp9|mpeg2
 -mpeg2 copy|h264|hevc|vp8|vp9|mpeg2
 -mpeg4 copy|h264|hevc|vp8|vp9|mpeg2
 -vc1 copy|h264|hevc|vp8|vp9|mpeg2
 -vp8 copy|h264|hevc|vp8|vp9|mpeg2
 -vp9 copy|h264|hevc|vp8|vp9|mpeg2
 -g <n>           # goplength default 50
 -h264_q|-crf <n> # quality h264 default 21, < better > smaller
                    for h264_nvenc default 32
 -quality <n>     # vaapi h264 quality
 -hevc_q|-cq <n>  # quality hevc default 28, < better > smaller
                    for hevc_nvenc default 36
 -vp9_q|-gq <n>   # quality vp8/9 default 30, < better > smaller
                    for vp9_vaapi try 120
 -h264enc libx264|h264_nvenc|h264_vaapi|h264_omx
 -h264_level <level> # default 4.1
 -h264_br         # bitrate for h264_omx, -b works too
 -hevcenc hevc_nvenc|hevc_vaapi|libx265|libkvazaar
 -hevc_level <level>
 -hevc_profile <profile>     # main|main10
 -nvenc_preset <preset>      # if you know, what you are doing
 -pix_fmt <pix_fmt>          # e.g. yuv420p
 -hwaccel cuvid|vaapi|vdpau|-
 -libva i965|iHD
 audio configuration
 -ac3 copy|eac3|aac|aac_he|aac_he_v2|opus
 -ac3_stereo aac|aac_he|eac3|-
 -eac3 copy|aac|aac_he|aac_he_v2|opus
 -dts copy|ac3|eac3|aac|opus
 -mp2 copy|aac|aac_he|aac_he_v2|opus
 -mp3 copy|aac
 -aac_stereo_br|-aac_br <br> # default 96k
 -aac_6ch_br <br>    # default 256k
 -aac_vbr <1-5>      # experimental
 -opus_br <kbit>     # 2ch br in kbit default 64
 -chan_sel <chan_id>=<str>[,<str>]
 -aaclib aac|libfdk_aac|libfaac # default aac
 other 
 -o vdr|mp4|mkv|ts|mp3 # default vdr
 --out_stat            # alternate output on screen
 -out_stat log|stat    # alternate output on screen
 -dvdvideo 1           # -f dvdvideo
 -vdr <path_to_vdr>
 -ffmpeg <path_to_ffmpeg>
 -ffprobe <path_to_ffprobe>
 -mark <mark>     # mark at the end of transcoded recordings
 -odir <path>     # output directory
 -probesize <n>   # probesize
 No longer needed:
 -server_pid <pid_file>      # default /var/run/vt_server.pid
                             # for run as user use e.g. ~/vt_server.pid
                             # deprecated, use -pid_dir
 -pid_dir <pid_path>         # default /var/run
                             # for run as user use e.g. ~
 -server_log <log_file>      # default /var/log/vdr-transcode.log
                             # for run as user use e.g. ~/vdr-transcode.log

Das sieht erst mal kompliziert aus, ist aber ganz einfach (Eingabe für vdr-Aufnahmen im Aufnahmeverzeichnis):

Eine vdr-Aufzeichnung nach mp4 exportieren: (Standard-Eingabe ist vdr)

vt -o mp4

Ein mp4 oder mkv nach vdr konvertieren: (Standard-Ausgabe ist vdr)

vt -i <datei>

Aufzeichnung in mpeg2 nach h264 konvertieren um Platz zu sparen (mpeg2 -> h264 ist Standard)

vt kein Parameter notwendig.

Aufzeichnung nach hevc konvertieren um Platz zu sparen, derzeit nur mit NVIDIA-Karte mit encoder oder vaapi sinnvoll, per CPU sehr zeitaufwändig. Sinnvoll bei HD.

vt -h264 hevc oder vt -vc hevc

Preview

--p

vdr3-2 2024-05-06.20.00.21-0.rec # vt --p -sel 4
Size: 1.9G
Duration: 00:16:45.02, start: 62263.117500, bitrate: 15900 kb/s
Stream #0:0[0x65]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn
Stream #0:1[0x66](deu): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 192 kb/s
Stream #0:2[0x67](mis): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 128 kb/s
Stream #0:3[0x68](qks): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 192 kb/s
Stream #0:4[0x69](deu): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 448 kb/s
Stream #0:5[0x6a](deu): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006) (hearing impaired)
hwaccel=cuvid
0: h264 -> 0: hevc hevc_nvenc
4: deu ac3 -> 1: aac
==> ../2024-05-06.20.00.21-1.rec

Alternative Ausgabe

Eintrag in die Konfiguration.

--out_stat oder -out_stat stat Start mit Status-Anzeige statt Protokoll

-out_stat log Start mit Protokoll

es kann jederzeit mit zwischen Status und Protokoll umgeschaltet werden.

../2024-05-06.20.00.21-1.rec/logfile
Duration: 00:16:45, fps=50 WDR HD Köln (S)
fps=464 time=00:09:01 53% 9.29x
Size: 1.9G -> 152.5M 7%
Est: 00:00:50

Avail
  65G

s=stat, l=log, q=quiet, h=halt, p=suspend, r=resume

Ausgabe über dialog

-dialog 1

dialog3

Mit d kann zwischen Ausgabe über dialog und Textausgabe umgeschaltet werden.

Channel select

-chan_sel <chan_id>=<str>[,<str>]

Select Audiostream für bestimmte Sender

z.B.

-chan_sel S19.2E-1-1007-4914=1,3 # ServusTV HD Deutschland
-chan_sel S19.2E-1-1021-28332=4 # WDR HD Köln

Standard Vorgaben können in einer Datei /etc/vdr-transcode.conf eingetragen werden.

Installation:

vdr-transcode.gz herunterladen und in /usr/local/bin speichern.

Wenn notwendig, Endung .gz, entpacken mit gzip -d

vdr-transcode.conf.gz herunterladen, in /etc speichern und entpacken.

Für die verkürzte Eingabe muss ein symb. link angelegt werden:

ln -s vdr-transcode vt

Debiannutzer finden hier eine passende ffmpeg-Version, die auch libfdk_aac enthält

Automation:

Aufzeichnungen werden durch eine Datei vt.conf gekennzeichnet, dort können Parameter zur Bearbeitung enthalten sein. Parameter können mit vt --conf angelegt werden.

Der Prozess wird mit vt --as & gestartet und kann mit vt --ak beendet werden.

vt --astat Permanente Anzeige wie bei --out_stat

Suchpfade werden in /etc/vdr-transcode-s.conf angelegt.

Aufzeichnungen markieren über Menü:

reccmds.conf

vdr-transcode {
    touch : x() { /usr/bin/touch $1/vt.conf; }; x
    hevc : x() { /bin/echo -vc hevc > $1/vt.conf; }; x
    inf : x() { /usr/local/bin/vt -i $1 --inf; }; x
    }

postproc

-postproc <myscript>

Es werden zwei Parameter übergeben:

p1 = destpath

p2 = newcodec

Links

https://www.vdr-portal.de/forum/index.php?thread/133225-vdr-transcode-swiss-knife-for-transcoding/

Clone this wiki locally