Hat jemand Interesse, die command line Version von markad als mingw64 (Windows) Binary zu bauen?
[markad] überarbeiteter Decoder
-
-
Kannst du raus lassen.
OK, den Rest habe ich jetzt im Branch V03 drin.
Nochmals sorry für übersehen von deinem Post.
-
Hat jemand Interesse, die command line Version von markad als mingw64 (Windows) Binary zu bauen?
markad braucht einige ffmpeg Libs, ob sich die unter Windows bauen lassen ???
Edit:
Scheint möglich zu sein: Anleitung
-
Die Libs gibt es alle in mingw64. Und ja - die Liste der nötigen DLLs (libs) ist lang.
Kompilieren und Linken klappt ja mittlerweile mit einem extra Makefile.mingw64, einer extra README.mingw64, so einigen #ifdefs und einem subfolder win32 in command.
Es ist eher die Frage nach OS-abhängigen Benutzer-Pfaden für icons (wohin), Schreibrechten etc. und ob das außer mir irgendwann jmd braucht.
Und klar ist auch, dass nicht alles von Posix zu Win32 portiert werden kann: kein background, nice, chown, ..
Aber könnte man ne minimale GUI drüber stülpen und damit einige per samba/NFS gemountete Verzeichnisse im Loop abarbeiten lassen.
Mein win Rechner hat meist weniger zu tun.
Ich überlege, ob überhaupt/was man daraus macht - der Weg bis zu einem funktionierenden Binary wäre jetzt nicht mehr so sehr weit.
Nur sehe ich auch, dass ein separater Fork absolut doof wäre. Nie aktuell, immer von Hand die letzten Änderungen nachziehen.
-
Aber könnte man ne minimale GUI drüber stülpen und damit einige per samba/NFS gemountete Verzeichnisse im Loop abarbeiten lassen.
Mein win Rechner hat meist weniger zu tun.
Das würde mir auch sehr gefallen und ich würde es nutzen.
-
Wenn wir schon bei Wünschen sind:
markad standalone auf einem Linux-Server, um Videos zu bearbeiten. Im *.ts-Format, aber von z.B. Enigma2-Boxen. Idealerweise inkl. Erstellung der *.cuts-Datei, die bei Enigma2 verwendet wird...
-
Das würde mir auch sehr gefallen und ich würde es nutzen.
Als GUI würde ich ein vorhandenes Lazarus Projekt abwandeln, das wäre kein großer Aufwand.
-
Wenn wir schon bei Wünschen sind:
markad standalone auf einem Linux-Server, um Videos zu bearbeiten.
Mach doch. Eine command line Version ist doch per default dabei.
ZitatIm *.ts-Format, aber von z.B. Enigma2-Boxen.
Was ist an dem Format anders? Beides ist ts, die Daten müssten sich ähnlich bis identisch sein.
Wo liegt der Unterschied, bzw. welche Features verhindern mit dem aktuellen Code und einer ts Datei der enigma2 die Erstellung von VDR-kompatiblen marks?
Wenn das schon klappt, wäre die Erweiterung um eine weitere Ausgabedatei mit Schnittmarken in einem anderen Format kein großes Problem. Vorausgesetzt man weiß den Dateinamen etc.
ZitatIdealerweise inkl. Erstellung der *.cuts-Datei, die bei Enigma2 verwendet wird...
VDR verwendet Zeitstempel hh:mm:ss.ff, enigma2 64bit PTS timestamps.
Solange keine größeren Stücke der TS Daten fehlen, sollte das eine in das andere direkt umrechenbar sein:
Wobei ich PTS_per_sec als Vielfaches von 90000 annehmen würde.
-
Solange keine größeren Stücke der TS Daten fehlen
Sogar das kann man lösen: markad hat einen undokumentierten Parameter "--pts", den ich mal für mich zur Fehlersuche eingebaut habe. Damit wird zusätzlich zu den VDR kompatiblen Zeitstempeln auch PTS kompatible Zeitstempel in die marks geschrieben. Diese können dann wie von wirbel beschrieben exakt rückgerechnet werden.
-
Damit reduziert sich die Frage nach dieser Möglichkeit auf eventuelle Unterschiede in den ts Dateien bzw. woran es aktuell hakt VDR marks zu erstellen. Und natürlich Dateinamen.
-
Bei E2 nennen sich Videos so wie der Timer und alle anderen haben einfach eine extra Erweiterung...
Code'20220922 0530 - ORF1 HD - Mr_ Griffin - Kein Bock auf Schule - Durbins Absturz (S01E10).eit' '20220922 0530 - ORF1 HD - Mr_ Griffin - Kein Bock auf Schule - Durbins Absturz (S01E10).ts' '20220922 0530 - ORF1 HD - Mr_ Griffin - Kein Bock auf Schule - Durbins Absturz (S01E10).ts.ap' '20220922 0530 - ORF1 HD - Mr_ Griffin - Kein Bock auf Schule - Durbins Absturz (S01E10).ts.cuts' '20220922 0530 - ORF1 HD - Mr_ Griffin - Kein Bock auf Schule - Durbins Absturz (S01E10).ts.meta' '20220922 0530 - ORF1 HD - Mr_ Griffin - Kein Bock auf Schule - Durbins Absturz (S01E10).ts.sc'
Im Reciever wird nur das. ts angezeigt:
Die .ap und .sc sind wohl index-Daten.
.eit das entsprechende eÉPG glaube ich.
.meta ähnelt der info vom VDR:
Code1:0:19:132F:3EF:1:C00000:0:0:0::ORF1 HD Mr. Griffin - Kein Bock auf Schule - Durbins Absturz (S01E10) Durbins Absturz (S01E10) 1663817400 SerienRecorder 242641501 2797549792 f:1000 188 0
Alle Videos liegen im /movie/ Verzeichnis. Mit dem Serienrecorder kann man Serien in Unterverzeichnisse mit dem Seriennamen packen
-
Auf meinem Ubuntu-VDR gibt es /usr/bin/markad und /usr/local/bin/markad. Ersteres ist wohl eine ältere Version aus einem Ubuntu-repository, letztere die aus Deinem Plugin.
Ich habe nie einen Parameter für
vorgegeben, also hat das Plugin bei mir wohl noch nie Deine Version benutzt.
Wäre es nicht besser, wenn das markad-binary standardmäßig von der Lokation verwandt würde, wie es auf dem jeweiligen System in der $PATH-Variable geregelt ist? Standardmäßig bevorzugt Ubuntu lokale Installationen, so dass /usr/local/bin verwandt worden wäre.
Darüber gestolpert bin ich auf dem Odroid, wo es eine Fehlermeldung gab:
Das Plugin hatte den Start abgebrochen und vdr kam nicht hoch. Gewundert habe ich mich zunächst, weshalb das Plugin eine Datei, die es selbst (entsprechend der Standard-Werte für PREFIX und BINDIR aus vdr's Makefile) installiert hat, dort nicht zuerst sucht und findet.... und dann habe ich mich gefragt, warum ich das Problem auf dem anderen VDR nicht auch hatte...
-
Wäre es nicht besser, wenn das markad-binary standardmäßig von der Lokation verwandt würde, wie es auf dem jeweiligen System in der $PATH-Variable geregelt ist?
Nein, weil ich mich nicht darauf verlassen, wie beim Start von VDR die $PATH Variable gesetzt ist. Das ist je nach Distribution oder selbst gebauten Start Script anders.
Standardmäßig bevorzugt Ubuntu lokale Installationen, so dass /usr/local/bin verwandt worden wäre.
Das hängt davon ab, ob selber gebaut (dann /usr/local/bin) oder aus einer Distribution installiert (dann /usr/bin).
Es ist auch durchaus möglich, dann man produktiv in /usr/bin das markad aus der Distribution hat und zu Testzwecken ein selbst gebautes in /usr/local/bin.
Es ist Aufgabe der Distribution die Parameter korrekt zu setzen, bzw. von jedem selbst, wenn er selbst baut.
-
OK, den Rest habe ich jetzt im Branch V03 drin.
Nochmals sorry für übersehen von deinem Post.
Hab die neue Version aus Branch V03 jetzt einige Tage getestet. Funktioniert einwandfrei. Danke für die Übernahme des Patch.
-
Die Version 3.0.27 ist auf vdr-plugin-markad verfügbar. Sie enthält o.g. Patch.
-
Normalerweise wollte ich zum 30.11., so wie immer, wieder eine Geburtstagsversion dieses Threads veröffentlichen.
Das hat diesmal leider nichts funktioniert, weil die Tests noch nicht erfolgreich waren.
Dann eben ein paar Tage verspätet: Die Version 3.0.28 ist auf vdr-plugin-markad verfügbar. Sie enthält vor allem Verbessrungen beim Erkennen von senkrechten Balken für alle, die gerne auch alte Serien/Filme schauen.
-
Hi,
Mein compiler mosert ... :
Code
Alles anzeigenlogo.cpp:1512:21: warning: format '%d' expects argument of type 'int', but argument 5 has type 'std::vector<sLogoInfo>::size_type' {aka 'long unsigned int'} [-Wformat=] 1512 | dsyslog("cExtractLogo::SearchLogo(): best guess found at frame %6d with %3d similars out of %3d valid frames at %s", actLogoInfo[corner].iFrameNumber, actLogoInfo[corner].hits, logoInfoVector[corner].size(), aCorner[corner]); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | std::vector<sLogoInfo>::size_type {aka long unsigned int} debug.h:88:76: note: in definition of macro 'dsyslog' 88 | #define dsyslog(a...) void( (SysLogLevel > 2) ? syslog_with_tid(LOG_DEBUG, a) : void() ) | ^ logo.cpp:1512:107: note: format string is defined here 1512 | dsyslog("cExtractLogo::SearchLogo(): best guess found at frame %6d with %3d similars out of %3d valid frames at %s", actLogoInfo[corner].iFrameNumber, actLogoInfo[corner].hits, logoInfoVector[corner].size(), aCorner[corner]); | ~~^ | | | int | %3ld
Also, das Format für size_t sollte %zu oder %zd sein.
Die Zahlen hier sind wohl nicht so lang, dann kannst du auch (z.B.)
(int)logoInfoVector[corner].size()
schreiben
~ Markus
-
Vielen Dank für den Hinweis, dein Compiler ist ja noch empfindlicher als meiner
-
-
Hi kfb77,
Tatsächlich hatte mein Compiler auf arm64 gemosert. Der ist jetzt zufrieden.
Mein Compiler auf arm32 mosert noch:
Code
Alles anzeigenIn file included from index.cpp:10: index.cpp: In member function 'void cIndex::Add(int, int, int, int)': index.cpp:56:21: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'std::vector<cIndex::sIndexElement>::size_type' {aka 'unsigned int'} [-Wformat=] 56 | dsyslog("cIndex::Add(): indexVector size %ld, reserve memory for 1000 more elements", indexVector.size()); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ | | | std::vector<cIndex::sIndexElement>::size_type {aka unsigned int} debug.h:88:76: note: in definition of macro 'dsyslog' 88 | (a...) void( (SysLogLevel > 2) ? syslog_with_tid(LOG_DEBUG, a) : void() ) | ^ index.cpp:56:56: note: format string is defined here 56 | dsyslog("cIndex::Add(): indexVector size %ld, reserve memory for 1000 more elements", indexVector.size()); | ~~^ | | | long int | %d In file included from /usr/include/c++/10/vector:72, from index.h:14, from index.cpp:8: /usr/include/c++/10/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const cIndex::sPTS_RingbufferElement&}; _Tp = cIndex::sPTS_RingbufferElement; _Alloc = std::allocato r<cIndex::sPTS_RingbufferElement>]': /usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<cIndex::sPTS_RingbufferElement>::iterator' changed in GCC 7.1 426 | vector<_Tp, _Alloc>:: | ^~~~~~~~~~~~~~~~~~~ /usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type 'std::vector<cIndex::sPTS_RingbufferElement>::iterator' changed in GCC 7.1 In file included from /usr/include/c++/10/vector:67, from index.h:14, from index.cpp:8: /usr/include/c++/10/bits/stl_vector.h: In member function 'void cIndex::AddPTS(int, int64_t)': /usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<cIndex::sPTS_RingbufferElement*, std::vector<cIndex::sPTS_RingbufferElement> >' changed in GCC 7.1 1198 | _M_realloc_insert(end(), __x); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!