Atalantia
Aktives Mitglied
Thread Starter
- Dabei seit
- 26.11.2009
- Beiträge
- 1.894
- Reaktionspunkte
- 432
Hallo,
ich stand vor dem Problem, dass ich Video Filme schneiden wollte ohne sie neu zu codieren. Ausserdem war, je weiter hinten im Film, Bild und Ton out of sync. Ich musste also zusätzlich Bild und Ton neu synchronisieren. ffmpeg bietet sich dazu an. Ich schenke Euch dieses Script als dankeschön an das Forum für die vielen Male welche Ihr geholfen habt.
- Das ffmpeg binarie kann man hier runterladen und muss in die Resourcen der Script application gelegt werden.
http://www.osxexperts.net/ffmpeg/ffmpegexperts.html
- "set mark..." sind die Zeiten bei welchen der Schnitt erfolgt. Wenn es weniger als 14 sind, kann man die überflüssigen "do shell script POSIX path of (path to resource "ffmpeg")..." auskommentieren oder löschen. Wenn es mehr sind einfach noch mehr "do shell script...", "set mark..." und "set offset1..." hinzufügen. Es wird bei jedem Schnitt ein neues File erzeugt.
- "set offset1..." ist zusammen mit "set map..." der Wert um den Video und Audio zueinander verschoben werden. Die hier vorgestellte Konfiguration ist gedacht wenn der Ton zu früh kommt. In anderen Fällen muss der Wert in "set map..." geändert werden. (ffmpg man nachschauen)
Die Werte die hier eingetragen sind, sind natürlich nur Beispiele. Selbstverständlich müsst Ihr die TimeCodes von Euerem Video (z.B. mit MpegStreamclip) selber herauslesen und dann in das Script einsetzen um den korrekten Schnitt zu erlangen. Auch die offset Daten muss man anschauen indem man die Filmschnipsel anschaut und dann den Wert ändert bis Bild und Ton synchron sind. Bei mir haben Werte zwischen 0.1 - 4 genügt.
Das Script ist so konfiguriert, dass es bei jedem Durchgang die alten Schnipsel überschreibt. Man kann also korrigieren, ausgeben, nochmal korrigeren, wieder ausgeben... solange bis alles stimmt.
Ach ja, zu guter letzt... wenn der Namen des zu bearbeitenden Videos oder dessen Überordner zu exotisch ist (viele Leerschläge, Sonderzeichen oder zu lang) funktioniert das Script nicht.
Ein anderes Problem welches ich noch nicht gelöst habe ist das Ding mit dem reference frame. Die Schnipsel starten weiss, bis sie an einen ref.Frame geraten der dann das vollständige Bild generiert. Falls jemand dafür die Lösung hat... welcome to share.
ich stand vor dem Problem, dass ich Video Filme schneiden wollte ohne sie neu zu codieren. Ausserdem war, je weiter hinten im Film, Bild und Ton out of sync. Ich musste also zusätzlich Bild und Ton neu synchronisieren. ffmpeg bietet sich dazu an. Ich schenke Euch dieses Script als dankeschön an das Forum für die vielen Male welche Ihr geholfen habt.
- Das ffmpeg binarie kann man hier runterladen und muss in die Resourcen der Script application gelegt werden.
http://www.osxexperts.net/ffmpeg/ffmpegexperts.html
- "set mark..." sind die Zeiten bei welchen der Schnitt erfolgt. Wenn es weniger als 14 sind, kann man die überflüssigen "do shell script POSIX path of (path to resource "ffmpeg")..." auskommentieren oder löschen. Wenn es mehr sind einfach noch mehr "do shell script...", "set mark..." und "set offset1..." hinzufügen. Es wird bei jedem Schnitt ein neues File erzeugt.
- "set offset1..." ist zusammen mit "set map..." der Wert um den Video und Audio zueinander verschoben werden. Die hier vorgestellte Konfiguration ist gedacht wenn der Ton zu früh kommt. In anderen Fällen muss der Wert in "set map..." geändert werden. (ffmpg man nachschauen)
Die Werte die hier eingetragen sind, sind natürlich nur Beispiele. Selbstverständlich müsst Ihr die TimeCodes von Euerem Video (z.B. mit MpegStreamclip) selber herauslesen und dann in das Script einsetzen um den korrekten Schnitt zu erlangen. Auch die offset Daten muss man anschauen indem man die Filmschnipsel anschaut und dann den Wert ändert bis Bild und Ton synchron sind. Bei mir haben Werte zwischen 0.1 - 4 genügt.
Das Script ist so konfiguriert, dass es bei jedem Durchgang die alten Schnipsel überschreibt. Man kann also korrigieren, ausgeben, nochmal korrigeren, wieder ausgeben... solange bis alles stimmt.
Ach ja, zu guter letzt... wenn der Namen des zu bearbeitenden Videos oder dessen Überordner zu exotisch ist (viele Leerschläge, Sonderzeichen oder zu lang) funktioniert das Script nicht.
Ein anderes Problem welches ich noch nicht gelöst habe ist das Ding mit dem reference frame. Die Schnipsel starten weiss, bis sie an einen ref.Frame geraten der dann das vollständige Bild generiert. Falls jemand dafür die Lösung hat... welcome to share.
Code:
set var to choose file
tell application "System Events"
set {nameInfo, extInfo} to {name, name extension} of var
end tell
set {output, var1} to {POSIX path of (choose folder with prompt "Choose destination to split " & quoted form of nameInfo), POSIX path of var}
set mark1 to "00:00:00"
set mark2 to "00:07:29"
set mark3 to "00:15:32"
set mark4 to "00:23:04"
set mark5 to "00:30:23"
set mark6 to "00:38:01"
set mark7 to "00:46:49"
set mark8 to "00:53:48"
set mark9 to "01:00:21"
set mark10 to "01:04:32"
set mark11 to "01:08:36"
set mark12 to "01:15:37"
set mark13 to "01:24:14"
set mark14 to "01:31:38"
set offset1 to " -itsoffset 0 "
set offset2 to " -itsoffset 0.8 "
set offset3 to " -itsoffset 0.8 "
set offset4 to " -itsoffset 0.9 "
set offset5 to " -itsoffset 0.9 "
set offset6 to " -itsoffset 0.9 "
set offset7 to " -itsoffset 0.9 "
set offset8 to " -itsoffset 1 "
set offset9 to " -itsoffset 0 "
set offset10 to " -itsoffset 0 "
set offset11 to " -itsoffset 0 "
set offset12 to " -itsoffset 0 "
set offset13 to " -itsoffset 0 "
set map1 to " -map 0:0"
set map2 to " -map 1:1 "
do shell script POSIX path of (path to resource "ffmpeg") & " -i " & quoted form of var1 & offset1 & " -y -i " & quoted form of var1 & " -vcodec copy -acodec copy -ss " & mark1 & " -to " & mark2 & map1 & map2 & quoted form of (output & "Part1." & extInfo)
do shell script POSIX path of (path to resource "ffmpeg") & " -i " & quoted form of var1 & offset2 & "-y -i " & quoted form of var1 & " -vcodec copy -acodec copy -ss " & mark2 & " -to " & mark3 & map1 & map2 & quoted form of (output & "Part2." & extInfo)
do shell script POSIX path of (path to resource "ffmpeg") & " -i " & quoted form of var1 & offset3 & "-y -i " & quoted form of var1 & " -vcodec copy -acodec copy -ss " & mark3 & " -to " & mark4 & map1 & map2 & quoted form of (output & "Part3." & extInfo)
do shell script POSIX path of (path to resource "ffmpeg") & " -i " & quoted form of var1 & offset4 & "-y -i " & quoted form of var1 & " -vcodec copy -acodec copy -ss " & mark4 & " -to " & mark5 & map1 & map2 & quoted form of (output & "Part4." & extInfo)
do shell script POSIX path of (path to resource "ffmpeg") & " -i " & quoted form of var1 & offset5 & "-y -i " & quoted form of var1 & " -vcodec copy -acodec copy -ss " & mark5 & " -to " & mark6 & map1 & map2 & quoted form of (output & "Part5." & extInfo)
do shell script POSIX path of (path to resource "ffmpeg") & " -i " & quoted form of var1 & offset6 & "-y -i " & quoted form of var1 & " -vcodec copy -acodec copy -ss " & mark6 & " -to " & mark7 & map1 & map2 & quoted form of (output & "Part6." & extInfo)
do shell script POSIX path of (path to resource "ffmpeg") & " -i " & quoted form of var1 & offset7 & "-y -i " & quoted form of var1 & " -vcodec copy -acodec copy -ss " & mark7 & " -to " & mark8 & map1 & map2 & quoted form of (output & "Part7." & extInfo)
do shell script POSIX path of (path to resource "ffmpeg") & " -i " & quoted form of var1 & offset8 & "-y -i " & quoted form of var1 & " -vcodec copy -acodec copy -ss " & mark8 & " -to " & mark9 & map1 & map2 & quoted form of (output & "Part8." & extInfo)
do shell script POSIX path of (path to resource "ffmpeg") & " -i " & quoted form of var1 & offset9 & "-y -i " & quoted form of var1 & " -vcodec copy -acodec copy -ss " & mark9 & " -to " & mark10 & map1 & map2 & quoted form of (output & "Part9." & extInfo)
do shell script POSIX path of (path to resource "ffmpeg") & " -i " & quoted form of var1 & offset10 & "-y -i " & quoted form of var1 & " -vcodec copy -acodec copy -ss " & mark10 & " -to " & mark11 & map1 & map2 & quoted form of (output & "Part10." & extInfo)
do shell script POSIX path of (path to resource "ffmpeg") & " -i " & quoted form of var1 & offset11 & "-y -i " & quoted form of var1 & " -vcodec copy -acodec copy -ss " & mark11 & " -to " & mark12 & map1 & map2 & quoted form of (output & "Part11." & extInfo)
do shell script POSIX path of (path to resource "ffmpeg") & " -i " & quoted form of var1 & offset12 & "-y -i " & quoted form of var1 & " -vcodec copy -acodec copy -ss " & mark12 & " -to " & mark13 & map1 & map2 & quoted form of (output & "Part12." & extInfo)
do shell script POSIX path of (path to resource "ffmpeg") & " -i " & quoted form of var1 & offset13 & "-y -i " & quoted form of var1 & " -vcodec copy -acodec copy -ss " & mark13 & " -to " & mark14 & map1 & map2 & quoted form of (output & "Part13." & extInfo)
Zuletzt bearbeitet: