Kann ein Win10-GURU diese Lösung zum Teilen von Videos bei Änderungen der Auflösung automatisieren?
Kann ein Windows10-Guru helfen, dies zu automatisieren?
Ich habe die Lösung von Lord Neckbeard im folgenden Beitrag nicht automatisieren können: Wie werden Videodateien bei festgestellter Änderung der Auflösung aufgeteilt? (dh aufgezeichnete Streams mit mehreren Breiten)
Idealerweise sollte ich die Batchdatei entweder für ein gesamtes Videoverzeichnis ausführen oder das Video zumindest in einer Batchdatei im Datei-Explorer ablegen.
Beispieldatei (temporarily available)
: Example.flv
Fehler:
Ich habe mich als letzter Ausweg auf Powershell zurückgezogen, was jedoch zu Problemen bei der Code-Signatur führt.
Ich habe versucht, die eindeutigen Änderungen mithilfe einer Batchdatei zu extrahieren, aber ich konnte die Variablen nicht dazu bringen, ihre Werte innerhalb von Schleifen oder Subroutinen beizubehalten. Einer von vielen Versuchen:
SETLOCAL ENABLEDELAYEDEXPANSION SET lastres=none FOR /F "eol=; tokens=1,2,3 delims=, " %%i in (allkeyframes.txt) do ( if %j == %lastres% (echo "ignore") ELSE ( set lastres=%%j echo %%j %%i %%k echo !lastres! ) )
Ich habe versucht, den Inhalt von resolutionchanges.txt zu extrahieren, SET /P segs=<resolutionchanges.txt
aber alles, was ich bekam, waren Sonderzeichen und Nullen.
SET /P segs=<resolutionchanges.txt set filenam=%1 echo %segs% echo %filenam% echo S:\_sys\ffmpeg\bin\ffmpeg -i %1 -map 0 -c copy -segment_times %segs% -reset_timestamps 1 -f segment %filenam%_%%03d.flv ) pause
Hier ist der aktuell laufende "manuelle" Prozess:
Ziehen Sie das Video in eine Batchdatei, die Folgendes enthält:
ffprobe -v error -show_entries frame = pkt_pts_time, width, height -elect_streams v -of csv = p = 0% 1> allkeyframes.txt
(allkeyframes.txt-Beispiel ...)
13.652000,640,480 13.755000,640,480 13.597000,480,360 13.652000,480,360
Diesen Text in POWERSHELL einfügen:
$o="" $n=0 foreach($line in (Get-Content allkeyframes.txt)){ $nline = $line.Split(",") $nline2=($nline[1]+$nline[2]) if ($nline2 -ne $preventry) { $n0=$nline[0] $o="$o,$n0" $n=$n0 } $preventry = $nline2 } if ($o.length -gt 1){ echo $o.Remove(0,1) > resolutionchanges.txt } else { Write-Host "No resolution changes found" -ForegroundColor Red }
(resolutionchanges.txt :)
13.597000,25.618000,33.628000,45.598000
Geben Sie im Befehlsfenster Folgendes ein, nachdem Sie den Inhalt von resolutionchanges.txt eingefügt und "input.flv" in den Videonamen geändert haben (Win10 lehnte meine Versuche ab, dies zu stapeln):
ffmpeg -i input.flv -map 0 -c kopiert -segment_times 13.597000,25.618000,33.628000,45.598000 -reset_timestamps 1 -f Segmentausgabe_% 03d.flv
0 Antworten auf die Frage
Verwandte Probleme
-
12
Warum wird der Ordner / winsxs so groß und kann er verkleinert werden?
-
2
Erhöhte Berechtigungen für Startanwendungen in Windows?
-
14
PDF Viewer unter Windows
-
7
Welche Windows-Dienste kann ich sicher deaktivieren?
-
8
Firefox PDF-Plugin zum Anzeigen von PDF-Dateien im Browser unter Windows
-
1
Windows verliert das Bildschirmlayout
-
1
Gibt es eine Möglichkeit, Installationen / Updates zu verhindern, die meine Festplatte mit kryptisch...
-
1
Wie kann ich von Ubuntu aus über das Netzwerk auf Windows Vista-Drucker zugreifen?
-
6
Log Viewer unter Windows
-
3
Windows-Hintergrundproblem mit zwei Bildschirmen