-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Welcome to the vdr-transcode wiki!
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
--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
answer n=cancel, a=add vt.conf incl. paramters
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
Mit d kann zwischen Ausgabe über dialog und Textausgabe umgeschaltet werden.
-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.
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
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 <myscript>
Es werden zwei Parameter übergeben:
p1 = destpath
p2 = newcodec
https://www.vdr-portal.de/forum/index.php?thread/133225-vdr-transcode-swiss-knife-for-transcoding/