Achtung: der Parameter --fulldecode hat bei mir zu segfaults geführt.
[markad] überarbeiteter Decoder
-
-
Danke für den Hinweis, dafür sind Beta Versionen da.
Bitte poste mal das markad.log dazu.
-
Es ist so weit, die Version 4.0.0 von vdr-plugin-markad ist verfügbar.
Bei Probleme bitte immer die markad.log posten.
Code
Display More2024-07-14: Version 4.0.0 - new feature: decoder with hardware acceleration support - new libavcodec minimum version: 58.54.100 (FFmpeg 4.2.7) - remove parameter: --saveinfo - remove parameter: --pass1only - remove parameter: --pass2only - remove parameter: --astopoffs - remove parameter: --posttimer - new parameter:: --hwaccel=<hardware acceleration method> use hardware acceleration for decoding <hardware acceleration method> all methods supported by FFmpeg (ffmpeg -hide_banner -hwaccels) e.g.: vdpau, cuda, vaapi, vulkan, ... - new parameter: --perftest>\n" run decoder performance test and compare software and hardware decoder
-
Da muss ich gleich noch einen Update hinterher schieben.
Die Version 4.0.1 von vdr-plugin-markad ist verfügbar.
Bei Probleme bitte immer die markad.log posten.
-
Die Version 4.0.2 von vdr-plugin-markad ist verfügbar.
Bei Probleme bitte immer die markad.log posten.
Code2024-07-21: Version 4.0.2 - allow H.264 progressive without full decode - fix decoding of H.264 interlaced video with 25 frames per second - improve video cut performance - fix video cut with AAC LATM audio (thx to jsffm@www.vdr-portal.de for the idea on how to solve it) - some minor bug fixes and optimizations, see git
-
Die Version 4.0.3 von vdr-plugin-markad ist verfügbar.
Bei Probleme bitte immer die vollständige markad.log posten.
-
Die Version 4.0.4 von vdr-plugin-markad ist verfügbar.
Bei Probleme bitte immer die vollständige markad.log posten.
-
Die Version 4.1 mit hwaccel für den Encoder ist gerade am entstehen.
Ich würde dazu wieder gerne Tests auf anderer Hardware sehen. Gerne auch wieder jsffm und seahawk1986, da kenne ich schon die Hardware, aber gerne andere, die die --cut Funktion nutzen.
Video Codec ist egal, ist alles von Interesse. Code von Branch V04 bauen, besser aber nicht installieren, sondern direkt aus dem Build Verzeichnis aufrufen. Zwei Test mit der gleichen Aufnahme, möglichst eine kurze Sendung:
1. Test ohne hwaccel:
markad --fulldecode --fullencode=all --cut --pts --autologo=2 --loglevel=3 --vps --log2rec --threads=4 --logocachedir=/tmp nice <Pfad zur Aufnahme>
2. Test mit hwaccel:
markad --fulldecode --fullencode=all --hwaccel=<Methode>,force --cut --pts --autologo=2 --loglevel=3 --vps --log2rec --threads=4 --logocachedir=/tmp nice <Pfad zur Aufnahme>
Falls im markad.log "ERROR:" vorkommt, bitte das ganze Log File posten, sonst reicht der Statistik Block am Ende des Log Files. Meine Beispiele dazu:
Hardware: i3-9100 mit UHD Graphics 630
H265 ohne hwaccel:
CodeThu Aug 1 17:30:15 [5718] DEBUG: processing statistics: ------------------------------------------------------------- Thu Aug 1 17:30:15 [5718] DEBUG: pass 1 (initial logosearch): time 26s -> 0:00:26h Thu Aug 1 17:30:15 [5718] DEBUG: pass 2 (mark detection): time 836s -> 0:13:56h Thu Aug 1 17:30:15 [5718] DEBUG: pass 3 (mark optimization): time 0s -> 0:00:00h Thu Aug 1 17:30:15 [5718] DEBUG: pass 4 (overlap detection): time 0s -> 0:00:00h Thu Aug 1 17:30:15 [5718] DEBUG: pass 5 (cut recording): time 2219s -> 0:36:59h Thu Aug 1 17:30:15 [5718] DEBUG: global statistics: ----------------------------------------------------------------- Thu Aug 1 17:30:15 [5718] DEBUG: decoding: time 71s -> 0:01:11h Thu Aug 1 17:30:15 [5718] INFO: duration: time 3082s -> 0:51:22h Thu Aug 1 17:30:15 [5718] DEBUG: ------------------------------------------------------------------------------------
H265 mit vaapi:
CodeThu Aug 1 17:58:38 [7540] DEBUG: processing statistics: ------------------------------------------------------------- Thu Aug 1 17:58:38 [7540] DEBUG: pass 1 (initial logosearch): time 23s -> 0:00:23h Thu Aug 1 17:58:38 [7540] DEBUG: pass 2 (mark detection): time 986s -> 0:16:26h Thu Aug 1 17:58:38 [7540] DEBUG: pass 3 (mark optimization): time 0s -> 0:00:00h Thu Aug 1 17:58:38 [7540] DEBUG: pass 4 (overlap detection): time 0s -> 0:00:00h Thu Aug 1 17:58:38 [7540] DEBUG: pass 5 (cut recording): time 540s -> 0:09:00h Thu Aug 1 17:58:38 [7540] DEBUG: global statistics: ----------------------------------------------------------------- Thu Aug 1 17:58:38 [7540] DEBUG: decoding: time 177s -> 0:02:57h Thu Aug 1 17:58:38 [7540] INFO: duration: time 1551s -> 0:25:51h Thu Aug 1 17:58:38 [7540] DEBUG: ------------------------------------------------------------------------------------
Interessant ist, dass bei mir das Decoding auf der GPU langsamer ist als das Decoding in der CPU mit 4 Threads. Erst beim Schneiden ist das Decodieren/Encodieren in der GPU deutlich schneller.
-
Ich habe wieder das Problem auf Pro7 und TV Total. Wurde ja schon öfter gemeldet. Im Log sehe ich, das er das Logo rechts oben nicht erkennt. Anfangs und Endzeit werden erkannt. Die Werbung dazwischen nicht.
Getestet mit 3.6.8 und 4.0.4.
-
Bei Probleme bitte immer die vollständige markad.log posten.
Da zitiere ich mich mal selber.
-
Da zitiere ich mich mal selber.
Hab es im vorherigen Post hinzugefügt!
-
Laut Log File kann ich nicht mal annähernd ein Logo erkennen. Da stört der laufend eingeblendete Fernseher Rahmen über dem Logo. Das ist genauso ein statisches Bild wie das Logo und ich erkenne das Logo am Unterschied zwischen sich verändernden Teile des Bildes und dem gleichbleibenden Teil des Bildes. Und genau das geht bei dieser Sendung nicht.
Workaround Lösungen stehen hier.
-
Laut Log File kann ich nicht mal annähernd ein Logo erkennen. Da stört der laufend eingeblendete Fernseher Rahmen über dem Logo. Das ist genauso ein statisches Bild wie das Logo und ich erkenne das Logo am Unterschied zwischen sich verändernden Teile des Bildes und dem gleichbleibenden Teil des Bildes. Und genau das geht bei dieser Sendung nicht.
Workaround Lösungen stehen hier.
Oh danke für den Link, hatte ich doch glatt übersehen, obwohl ich fleissig mitlese.
-
Hi, ich habe mit der 4.1 und cuda als hwaccel die ERRORs:
CodeFri Aug 2 12:44:24 [23930] ERROR: cEncoder::InitEncoderCodec(): hwaccel encoder name: h264_cuda not found Fri Aug 2 12:44:24 [23930] ERROR: cEncoder::OpenFile(): init encoder with hwaccel failed, fallback to software encoder Fri Aug 2 12:54:00 [23930] ERROR: cEncoder::InitEncoderCodec(): hwaccel encoder name: h264_cuda not found Fri Aug 2 12:54:00 [23930] ERROR: cEncoder::OpenFile(): init encoder with hwaccel failed, fallback to software encode
Der Aufruf:
/usr/bin/markad --fulldecode --fullencode=all --hwaccel=cuda,force --cut --pts --autologo=2 --loglevel=3 --vps --log2rec --threads=3 --logocachedir=/tmp nice `pwd`
Hardware: Intel(R) Core(TM) i5-4670S CPU @ 3.10GHz
Die Fehlermeldungen erhalte ich auch mit mp2-Material.
CodeFri Aug 2 14:54:48 [24373] ERROR: cEncoder::InitEncoderCodec(): hwaccel encoder name: mpeg2_cuda not found Fri Aug 2 14:54:48 [24373] ERROR: cEncoder::OpenFile(): init encoder with hwaccel failed, fallback to software encoder Fri Aug 2 14:57:48 [24373] ERROR: cEncoder::InitEncoderCodec(): hwaccel encoder name: mpeg2_cuda not found Fri Aug 2 14:57:48 [24373] ERROR: cEncoder::OpenFile(): init encoder with hwaccel failed, fallback to software encoder
Code
Display More+-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 555.42.02 Driver Version: 555.42.02 CUDA Version: 12.5 | |-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA GeForce GTX 1050 Ti Off | 00000000:01:00.0 On | N/A | | 0% 56C P0 N/A / 75W | 468MiB / 4096MiB | 20% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | 0 N/A N/A 1089 G /usr/lib/xorg/Xorg 174MiB | | 0 N/A N/A 1897 C+G /usr/bin/vdr 195MiB | | 0 N/A N/A 24373 C /usr/bin/markad 60MiB | +-----------------------------------------------------------------------------------------+
-
Vielen Dank für den Test.
Das wird wohl nichts mit cuda, da gibt es keinen Encoder in FFmpeg. Oder weiß jemand, wie man den bekommt ?
"ffmpeg -encoders | grep h264" zeigt dir, welche Encoder es in deinem FFmpeg gibt.
Versuche es mal mit nvenc, den gibt es zumindest bei mir. Testen kann ich es mangels NVIDA Karte nicht.
Mit vaapi geht Encoding auch nur mit "intel-media-va-driver-non-free".
Edit: die falsche Start Marke in deinem Log wird in der nächsten Version auch gefixed.
-
Die Version 4.1.0 von vdr-plugin-markad ist verfügbar.
Bei Probleme bitte immer die vollständige markad.log posten.
Code2024-08-07: Version 4.1.0 - new feature: hwaccel for encoder - some minor bug fixes and optimizations, see git
Getestet ist das GPU Encoding nur mit VAAPI, aber grundsätzlich müsste alles gehen, was die verwendete Hardware und das verwendete FFmpeg unterstützt. Bekannte Einschränkungen stehen im Wiki.
-
Beim bauen unter arch bekomme ich diese Info:
CodeIn Funktion »copy«, eingefügt von »_S_copy« bei /usr/include/c++/14.1.1/bits/basic_string.h:435:21, eingefügt von »_M_mutate.constprop« bei /usr/include/c++/14.1.1/bits/basic_string.tcc:337:15: /usr/include/c++/14.1.1/bits/char_traits.h:427:56: Warnung: »__builtin_memcpy« liest zwischen 2 und 9223372036854775805 Bytes aus einer Region der Größe 1 [-Wstringop-overread] 427 | return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n)); |
-
Da steht nichts von markad drin, haben da gerade die Standard Libs in Arch ein Problem ?
Kann jemand, der Arch besser kennt als ich (also praktisch jeder) was dazu sagen ?
Edit: Ich habe mal kurz ein Arch aufgesetzt, bei mir baut das ohne Fehler.
-
Edit: Ich habe mal kurz ein Arch aufgesetzt, bei mir baut das ohne Fehler.
OK, dann weiß ich auch erstmal nicht weiter. Meine VM nutze ich schon ewig für's bauen der Pakete für meine VDR's, trotzdem Danke für den Gegentest - bist auf zack
Hier das ganze Log vom Bau:
Code
Display More==> Erstelle Paket: vdr-markad 1:4.0.4-1 (Mi 07 Aug 2024 18:21:36 CEST) ==> Prüfe Laufzeit-Abhängigkeiten... ==> Prüfe Buildtime-Abhängigkeiten... ==> Empfange Quellen... -> Aktualisiere das vdr-plugin-markad git Repo... remote: Enumerating objects: 131, done. remote: Counting objects: 100% (131/131), done. remote: Compressing objects: 100% (35/35), done. remote: Total 131 (delta 96), reused 131 (delta 96), pack-reused 0 Empfange Objekte: 100% (131/131), 52.57 KiB | 3.50 MiB/s, fertig. Löse Unterschiede auf: 100% (96/96), abgeschlossen mit 14 lokalen Objekten. Von https://github.com/kfb77/vdr-plugin-markad 8920c13..25fd320 V04 -> V04 8920c13..25fd320 master -> master * [neues Tag] V4.1.0 -> V4.1.0 -> 50-markad.conf gefunden ==> Überprüfe source Dateien mit md5sums... vdr-plugin-markad ... Übersprungen 50-markad.conf ... Erfolg ==> Entferne existierendes $srcdir/ Verzeichnis... ==> Entpacke Quellen... -> Erstelle Arbeitskopie des vdr-plugin-markad git Repos... Klone nach 'vdr-plugin-markad'... Fertig. Zu neuem Branch 'makepkg' gewechselt ==> Beginne prepare()... ==> Beginne pkgver()... ==> Aktualisierte Version: vdr-markad 1:4.1.0-1 ==> Entferne existierendes $pkgdir/ Verzeichnis... ==> Beginne build()... make[1]: Verzeichnis „/usr/local/src/vdr-markad/src/vdr-plugin-markad/command“ wird betreten compiler: g++ version: 14 compiler: g++ version: 14 CC evaluate.o CC debug.o CC index.o CC logo.o CC encoder.o CC decoder.o CC audio.o CC video.o CC marks.o CC markad-standalone.o CC osd.o CC criteria.o CC vps.o CC tools.o CC overlap.o CC sobel.o CC test.o CC markad In Funktion »copy«, eingefügt von »_S_copy« bei /usr/include/c++/14.1.1/bits/basic_string.h:435:21, eingefügt von »_M_mutate.constprop« bei /usr/include/c++/14.1.1/bits/basic_string.tcc:337:15: /usr/include/c++/14.1.1/bits/char_traits.h:427:56: Warnung: »__builtin_memcpy« liest zwischen 2 und 9223372036854775805 Bytes aus einer Region der Größe 1 [-Wstringop-overread] 427 | return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n)); | ^ GT po/markad.pot make[1]: Verzeichnis „/usr/local/src/vdr-markad/src/vdr-plugin-markad/command“ wird verlassen make[1]: Verzeichnis „/usr/local/src/vdr-markad/src/vdr-plugin-markad/plugin“ wird betreten version: 14 VDR plugin API version is 2.6.9 version: 14 VDR plugin API version is 2.6.9 CC markad.o CC status.o CC menu.o CC setup.o CC debug.o LD libvdr-markad.so GT po/markad.pot PO po/de_DE.po MO po/de_DE.mo PO po/es_ES.po MO po/es_ES.mo PO po/fi_FI.po MO po/fi_FI.mo PO po/it_IT.po MO po/it_IT.mo PO po/sk_SK.po MO po/sk_SK.mo make[1]: Verzeichnis „/usr/local/src/vdr-markad/src/vdr-plugin-markad/plugin“ wird verlassen ==> Betrete fakeroot Umgebung... ==> Beginne package()... for i in command plugin; do make -C $i install; done make[1]: Verzeichnis „/usr/local/src/vdr-markad/src/vdr-plugin-markad/command“ wird betreten compiler: g++ version: 14 CC markad-standalone.o CC markad In Funktion »copy«, eingefügt von »_S_copy« bei /usr/include/c++/14.1.1/bits/basic_string.h:435:21, eingefügt von »_M_mutate.constprop« bei /usr/include/c++/14.1.1/bits/basic_string.tcc:337:15: /usr/include/c++/14.1.1/bits/char_traits.h:427:56: Warnung: »__builtin_memcpy« liest zwischen 2 und 9223372036854775805 Bytes aus einer Region der Größe 1 [-Wstringop-overread] 427 | return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n)); | ^ GT po/markad.pot PO po/cs_CZ.po MO po/cs_CZ.mo IN /usr/local/src/vdr-markad/pkg/vdr-markad/usr/share/locale/cs_CZ/LC_MESSAGES/markad.mo PO po/de_DE.po MO po/de_DE.mo IN /usr/local/src/vdr-markad/pkg/vdr-markad/usr/share/locale/de_DE/LC_MESSAGES/markad.mo PO po/fi_FI.po MO po/fi_FI.mo IN /usr/local/src/vdr-markad/pkg/vdr-markad/usr/share/locale/fi_FI/LC_MESSAGES/markad.mo PO po/it_IT.po MO po/it_IT.mo IN /usr/local/src/vdr-markad/pkg/vdr-markad/usr/share/locale/it_IT/LC_MESSAGES/markad.mo PO po/sk_SK.po MO po/sk_SK.mo IN /usr/local/src/vdr-markad/pkg/vdr-markad/usr/share/locale/sk_SK/LC_MESSAGES/markad.mo install -D markad /usr/local/src/vdr-markad/pkg/vdr-markad/usr/bin/markad install -D logos/* /usr/local/src/vdr-markad/pkg/vdr-markad/var/lib/markad markad installed make[1]: Verzeichnis „/usr/local/src/vdr-markad/src/vdr-plugin-markad/command“ wird verlassen make[1]: Verzeichnis „/usr/local/src/vdr-markad/src/vdr-plugin-markad/plugin“ wird betreten version: 14 VDR plugin API version is 2.6.9 CC markad.o LD libvdr-markad.so IN install-lib GT po/markad.pot PO po/de_DE.po MO po/de_DE.mo IN /usr/local/src/vdr-markad/pkg/vdr-markad/usr/share/locale/de_DE/LC_MESSAGES/vdr-markad.mo PO po/es_ES.po MO po/es_ES.mo IN /usr/local/src/vdr-markad/pkg/vdr-markad/usr/share/locale/es_ES/LC_MESSAGES/vdr-markad.mo PO po/fi_FI.po MO po/fi_FI.mo IN /usr/local/src/vdr-markad/pkg/vdr-markad/usr/share/locale/fi_FI/LC_MESSAGES/vdr-markad.mo PO po/it_IT.po MO po/it_IT.mo IN /usr/local/src/vdr-markad/pkg/vdr-markad/usr/share/locale/it_IT/LC_MESSAGES/vdr-markad.mo PO po/sk_SK.po MO po/sk_SK.mo IN /usr/local/src/vdr-markad/pkg/vdr-markad/usr/share/locale/sk_SK/LC_MESSAGES/vdr-markad.mo make[1]: Verzeichnis „/usr/local/src/vdr-markad/src/vdr-plugin-markad/plugin“ wird verlassen ==> Säubere Installation... -> Entferne libtool Dateien... -> Bereinige ungewollte Dateien... -> Entferne statische Bibliotheken... -> Entferne unnötige Symbole aus Binär-Dateien und Bibliotheken... -> Komprimiere Man-Pages und Info-Seiten... ==> Prüfe auf Paketierungsprobleme... ==> Erstelle Paket "vdr-markad"... -> Erstelle .PKGINFO Datei... -> Erstelle .BUILDINFO Datei... -> Erstelle .MTREE-Datei... -> Komprimiere Paket... ==> Verlasse fakeroot Umgebung. ==> Beendete Erstellung: vdr-markad 1:4.1.0-1 (Mi 07 Aug 2024 18:22:02 CEST)
-
bist auf zack
Wenn man im Container lebt, ist das nicht so aufwendig:
lxc launch images:archlinux testarch
15s warten und man hat ein neues Arch Linux.
FFmpeg installieren und markad bauen, der Rest ist ja alles bei Arch eh dabei.
-
Participate now!
Don’t have an account yet? Register yourself now and be a part of our community!