Batch schon bei der Analyse

Begonnen von walterkacirek, Februar 14, 2020, 12:31:18

« vorheriges - nächstes »

Cypheros

Naja, es zählt nicht nur die Anzahl der Wünsche, sondern auch der damit verbundene Aufwand. Manche Dinge sind leicht und schnell zu erledigen, andere passen gar nicht ins Konzept. Das ist nichts persöhnliches, sondern etwas faktisches.

Mam

Zitat von: walterkacirek am Februar 16, 2020, 00:36:21
Sinnvoll wäre es hört dann nach der Analyse einfach auf.
Dann könnte man
3. Nach einer Stunde alle Instanzen die noch offen stehen nacheinander von Hand den Schnitt nachbearbeiten, als neue Datei speichern (batchmodus anhaken) ausführen, die Instanz schließt sich.
4. Doctor neu aufrufen, Batch aufrufen und der zeitaufwendige Prozess der Speicherung mit den Schnitten wird für alle durchgeführt.

Fazit es würde gehen!!
lg
Walter

Och DAS hast Du schon umsonst mitgekauft  ;D

starte einfach "TSDOC <Dateiname>" ohne irgendenein AUTO Argument. Der Doc startet, analysiert und bleibt dann im Hauptfenster stehen. Genauso, als wenn Du es von Hand gemacht hättest.
Schneiden und Speichern musst Du dann auch von Hand.

Aber, wenn man nicht gerade auf diese Videoanalyse angewiesen ist, der ganze Kram dauert doch nicht sooo lange, oder werden eure Festplatten noch mit der Drehorgel angetrieben?
Bei mir ist das "Anpassen der richtigen Schnittpunkte" immer noch die zeitintensivste Aufgabe beim Doc. Laden/Analyse ist um die 10s, das Speichern am Ende dauert auch weniger als 20s.
Das reicht gerade mal zum Nippen an der heißen Kaffeetasse am Morgen.

walterkacirek

#17
@ Mam
Das wäre ja ideal aber erbleibt nicht stehen sondern
führt danach ein "säubere den Transportstream" aus und speichert die Datei (mit den "falschen" nicht editierten Schnitten) in eine ....-fixed.ts im selben Verzeichnis.
Vermutlich habe ich irgendwo in den Optionen einen Haken falsch gesetzt -den finde ich aber nicht  :-[
ps.
zudem sagt er hier: "C:\Program Files (x86)\Cypheros\TSDoctor3\TSDoctor.exe" "J:\Vorstadtweiber 28-10-2019.trp" File not found.
und hier:
"C:\Program Files (x86)\Cypheros\TSDoctor3\TSDoctor.exe" "J:\Vorstadtweiber 28-10-2019\*.trp"
geht es - weiß der geier

walterkacirek

@Cypheros
Das wäre ja ideal aber erbleibt nicht stehen sondern führt danach ein "säubere den Transportstream" aus und speichert die Datei (mit den "falschen" nicht editierten Schnitten) in eine ....-fixed.ts im selben Verzeichnis.
Der Haken in Optionen, Allgemein, öffne Schnittfenster..... hat auf dieses Verhalten keinerlei Auswirkung!
ist das ein Bug oder was steht da dahinter?

Mam

#19
Zitat von: walterkacirek am Februar 16, 2020, 12:28:55
@ Mam
Das wäre ja ideal aber erbleibt nicht stehen sondern

Nee nee, das geht schon völlig unproblematisch, siehe:


Von der Kommandozeile aus gestartet, er analysiert, macht die Werbeerkennung und wartet dann auf Dich, damit Du schnibbelst und abspeicherst.

Oder meinst Du, dass der Kommandoprompt sofort zurückkommt und nicht wartet, bis er fertig analysiert hat?
Wenn Du das willst, musst Du "start /waits tsdoctor...." schreiben. Dann wartet die Shell, bis der Doc Prozess beendet wurde.

Wenn Du irgendwo allerdings ein "*" mit im Dateinamen hast, dann meint der Doc, Du wolltest doch wieder eine Batchlauf wie mit AUTOxxx machen!
Du darfst also immer nur eine EINZELNE Datei und OHNE JOKER übergeben!

MiVaFo

#20
Zitat von: Cypheros am Februar 16, 2020, 01:39:00
Naja, es zählt nicht nur die Anzahl der Wünsche, sondern auch der damit verbundene Aufwand. Manche Dinge sind leicht und schnell zu erledigen, andere passen gar nicht ins Konzept. Das ist nichts persönliches, sondern etwas faktisches.

Und das heisst jetzt konkret in Bezug auf den Wunsch der "Batch-Analyse"? Zuviel Aufwand, oder passt es deiner Meinung nach nichts ins Konzept?

Aber wenn du wirklich den Aufwand scheust, bemüh dich nicht weiter, ich kann mit dem folgenden Workaround gut arbeiten - vielleicht ist er ja auch für andere hier von Nutzen.

Um mehrere TSDoctor-Instanzen parallel mit der Analyse aller ts-Dateien in einem Verzeichnis zu starten (um den Schnitt dann später ohne große Wartezeiten  durchführen zu können), habe ich gerade eben ein Batch-File gebaut, welches das macht:


Setlocal
Set SOURCE=K:
Set TSDOC=C:\Program Files (x86)\Cypheros\TSDoctor3\TSDoctor.exe

cd /d %SOURCE%
for %%i IN (*.ts) do start "" /b "%TSDOC%" "%SOURCE%\%%i"


Das ganze in eine Datei mit den Endung ".bat" legen, für "Source" und "TSDOC" die Pfade eintragen, die eurer Umgebung entsprechen, und dann per Doppelklick starten. Wenn der "Doc" dann irgendwann später mit der Analyse durch ist, geht man die geöffneten Instanzen der Reihe nach durch, korrigiert die gefundenen Schnittmarken und fügt am Ende das Ergebnis der Batch-Verarbeitung hinzu. Am Ende noch den Batch-Modus starten und abwarten.

Ich hab das gerade mit 7 ts-Dateien auf meinem Vier-Kern-System getestet, funktioniert bei mir ganz gut. Das hat aber sicher Grenzen, bei wievielen ts-Dateien im Verzeichnis das noch gut klappt. Müsst ihr halt ausprobieren, was bei euch noch geht. Jedenfall war der "Doc" mit der Analyse eher durch als ich mit dem Schreiben und Verbessern dieser Antwort.

Für nicht ganz-so Kommandozeilen-affine Anwender wäre sicher trotzdem eine "eingebaute" Lösung nicht schlecht.




Cypheros

#21
Hey, bin ich der Feind hier?

Ich versuche zu helfen, so gut es geht. Schade, dass das nicht anerkannt wird.
Finde ich nicht gerade sozial aber das scheint ja Dein Karma zu sein.

walterkacirek

@  MiVaFo
mir würde das genau entsprechen, leider gehts bei mir nicht
mein Batch:
Setlocal
Set SOURCE=J:\00Test
Set TSDOC=C:\Program Files (x86)\Cypheros\TSDoctor3\TSDoctor.exe

cd /d %SOURCE%
for %%i IN (*.ts) do start "" /b "%TSDOC%" "%SOURCE%\%%i"

führt zur Fehlermeldung:
J:\00Test>cd /d %SOURCE%

J:\00Test>for %%i IN (*.ts) do start "" /b "%TSDOC%" "%SOURCE%\%%i"
"%%i" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

J:\00Test>

Lösung Hilfe? danke

Mam

#23
Zitat von: walterkacirek am Februar 17, 2020, 12:14:29
@  MiVaFo
mir würde das genau entsprechen, leider gehts bei mir nicht
mein Batch:
Setlocal
Set SOURCE=J:\00Test
Set TSDOC=C:\Program Files (x86)\Cypheros\TSDoctor3\TSDoctor.exe

cd /d %SOURCE%
for %%i IN (*.ts) do start "" /b "%TSDOC%" "%SOURCE%\%%i"

führt zur Fehlermeldung:
J:\00Test>cd /d %SOURCE%

J:\00Test>for %%i IN (*.ts) do start "" /b "%TSDOC%" "%SOURCE%\%%i"
"%%i" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

J:\00Test>

Lösung Hilfe? danke

Du hast die Anführungszeichen vergessen
               Set SOURCE="J:\00Test"
               Set TSDOC="C:\Program Files (x86)\Cypheros\TSDoctor3\TSDoctor.exe"

               cd /d "%SOURCE%"

usw.
Allerdings würde ich für sowas eher Powershell einsetzen, CMD-Batch is out  ;D

Ausserdem kannst Du diese Batch Schleife nicht manuell von Hand eingeben. %%i ist nur innerhalb einer Batchdatei gültig (Wenn Du direkt tippst, darfst Du nur %i nehmen)

walterkacirek

@ Mam
auch das würde mich fein sein, funktioniert auch.

danke

@ Cypherus
von mir aus ist das soweit in Ordnung. Ich kann die Prioritäten nicht beurteilen.
Ich habe nun workarounds, mit denen ich leben kann, wenn so etwas irgendwann einmal eingebaut wird würde ich mich freuen.

lg Walter und Danke

walterkacirek

@mam
upps jetzt hat es mich noch mehr, muss aber leider weg, schreibe am Abend ausführlich
Danke bis Jetzt

walterkacirek

#26
@Mam und
@ MivaFo

Also die Batchdatei funktioniert (der Fehler war das \*.trp), das editieren der Datei  ist halt immer etwas mühsam – aber es geht.
"C:\Program Files (x86)\Cypheros\TSDoctor3\TSDoctor.exe" "J:\Die Pferdeprofis 28-12-2019\Die Pferdeprofis 28-12-2019.trp
"C:\Program Files (x86)\Cypheros\TSDoctor3\TSDoctor.exe" "J:\Kommissar Wisting  Eisige Sch 29-12-2019\Kommissar Wisting  Eisige Sch 29-12-2019.trp

Mit powershell wäre das allerdings eleganter, habe ich mich damit ein wenig beschäftigt.
Ich bin allerdings nicht in der Lage so ein skript zu schreiben und kriege auch Fehlermeldungen (sowohl das %% wie auch for i%% übersteigen meine nicht vorhandenen Fähigkeiten.

Die Verzeichnisstrukturen  sind auch speziell. Ich haben einen Vantage Recorder der schreibt je Aufnahme ein Unterverzeichnis ,,Filmname" und im Verzeichnis ist dann die ,,Filmname.trp" und etliche andere Dateien 001 bis 00x für die Teile etc.

Wie so ein ,,elegantes" Skript dafür aussehen könnte wäre noch hilfreich
Danke nochmals
Walter

Mam

Also, ich hatte das angehängte Skript schon mal im Januar hier verbreitet, aber was solls  ;D

####################################################################
# Fingerübung, die alle TS Dateien in einem Verzeichnis (rekursiv!)
# einmal durch den TSDoc jagt und überprüfen lässt
# 05.01.2020 MAM
####################################################################

### Aufruf:
### powershell Skriptname [[-Pfad] Verzeichnis]
### (ohne Angabe wird das Verzeichnis durchsucht, wo das Script
### gespeichert ist)

param (
    [string]$Pfad=""
  )

### Wo versteckt sich der Doctor?

$TSDoc="${env:ProgramFiles(x86)}\Cypheros\TSDoctor3\TSdoctor.exe"

# wurde beim Start kein Verzeichnis angegeben?
if ($Pfad)
{
}
else
{
     # ok, dann nehmen wir eben unser eigenes
     $Pfad=$(Split-Path -Path $MyInvocation.MyCommand.Path)
     #
     # Alternativ kann man hier auch
     # $Pfad="."
     # reinmachen, um das aktuelle Verzeichnis zu wählen
     #
}

# Alle TS Dateien im Suchpfad ermitteln
Write-Host "Durchsuche $Pfad nach TS Dateien"

$Alle=Get-ChildItem $Pfad -Filter "*.ts" -recurse -Name

#
# und nun jede davon durch den Doc jagen mit den entsprechenden Parametern
# als kleine Kür messen wir noch die jeweilige Laufzeit und geben sie
# hinterher aus (auf Nanosekunden genau! :-) )
#
$Beginn=Get-Date
foreach ($i in $Alle){
    $Param=$i,"autocheck","/log"
    $StartZeit=Get-Date
    Write-Host $StartZeit.ToLongTimeString() "bearbeite" $Param
    & $TSDoc $Param | Out-Null
    $EndZeit=Get-Date
    Write-Host "Bearbeitungsdauer " ($Endzeit-$Startzeit) "Sekunden"
}
$Ende=Get-Date
Write-Host "--------------------------------------------------"
Write-Host "Gesamtdauer " ($Ende-$Beginn) "Sekunden"


Du musst für Dich ein paar kleine Änderungen vornehmen:
a) der Suchpfad für die Filme ist entweder der Speicherort des Skriptes, oder wird als Kommandozeilenparameter übergeben. Wenn Du immer denselben Pfad willst, ändere Zeile 27 und setze $Path$ auf Dein Verzeichnis
b) Zeile 38: hier wird nach "*.ts" gesucht, Du willst da sicherlich "*.trp" eintragen.
c) Zeile 47 enthält die Aufrufparameter für den Doc. Ich nehme an, Du willst kein "Autocheck", also lösch es raus
d) Zeile 50 ist "etwas trickreich". Durch das Ende "| Out-Null" wartet das Skript, bis der Doc geschlossen wurde. Lässt Du es weg, läuft es weiter und Du hast dann ganz viele (soviel wie Filme da sind und der Speicher noch nicht voll ist) Docs laufen, jeder mit einem anderen Film. Geschmackssache

Der Rest ist "Kür", es wird noch jeweils die Bearbeitungszeit des einzelnen Docs gemessen und eine Gesamtzeit für alle Jobs errechnet. Das brauchst Du sicherlich nicht, also ignorier es einfach :-)


MiVaFo

#28
Zitat von: Cypheros am Februar 17, 2020, 00:32:52
Hey, bin ich der Feind hier?

Ich versuche zu helfen, so gut es geht. Schade, dass das nicht anerkannt wird.
Finde ich nicht gerade sozial aber das scheint ja Dein Karma zu sein.

Sorry, wenn du dich angegriffen gefühlt hast, war sicher nicht meine Absicht. Außerdem ist doch ein Workaround per Command-Line wohl ein konstruktiver Vorschlag, der es dir erleichern sollte, bei weiteren Anfragen nach der Batch-Analyse hierauf zu verweisen.

Wenn es dir um ein wenig Anerkennung geht: habe mir gestern abend das Update auf Version 3 gekauft, weil ich das Programm auch ohne die Batch-Analyse wirklich gut finde - "mit" wäre es aber meiner Meinung nach eben noch besser.

Allerdings hatte ich gehofft, nach dem da ein Vorschlag immerhin mindestens 3,5 Jahre sieben Jahre auf der Warteliste steht (https://cypheros.de/forum_ger2/index.php?topic=1843.msg9645#msg9645), dass du mal konkret zu diesem speziellen Wunsch Stellung nimmst, ob das noch Chancen hat, irgendwann umgesetzt zu werden.

MiVaFo

#29
Zitat von: walterkacirek am Februar 17, 2020, 18:43:54
(der Fehler war das \*.trp)

"\*.trp" kann ich in deiner Frage davor nicht finden, daher für mich schwer nachzuvollziehen. Aber klar kannst du das *.ts durch *.trp ersetzen - wird aber in deinem Fall nicht reichen (s.u.)

Zusätzliche Anführungszeichen sind auch nicht notwendig, die Anführungszeichen waren in meinem Originalscript schon genau da, wo sie hingehören.

Zitat von: walterkacirek am Februar 17, 2020, 18:43:54
Das editieren der Datei  ist halt immer etwas mühsam

Ist es das? Ich nehm dafür Notepad++. Empfinde ich nicht als mühsam

Zitat von: walterkacirek am Februar 17, 2020, 18:43:54
Mit powershell wäre das allerdings eleganter, habe ich mich damit ein wenig beschäftigt.

Powershell ist sicher mächtiger, moderner und kann sicher noch sehr viel mehr. Aber ob man 5 Zeilen Batch-Script, die tun, was sie sollen, oder 50 Zeilen Powershell als eleganter empfindet, muss jeder für sich selber entscheiden.

Zitat von: walterkacirek am Februar 17, 2020, 18:43:54
Ich haben einen Vantage Recorder der schreibt je Aufnahme ein Unterverzeichnis ,,Filmname" und im Verzeichnis ist dann die ,,Filmname.trp" und etliche andere Dateien 001 bis 00x für die Teile etc.

Dafür probier mal folgendes:


Setlocal
Set SOURCE=j:
Set TSDOC=C:\Program Files (x86)\Cypheros\TSDoctor3\TSDoctor.exe
for /D %%i in (%SOURCE%\*.*) do start "" /b "%TSDOC%" "%%i\%%~ni.trp"


Das sollte es im Wesentlichen lösen. Bitte auch diesmal (wie ich bereits oben schrieb) in eine Textdatei mit Endung ".bat" packen, und nicht versuchen, das direkt einzutippen und auszuführen.


www.cypheros.de