Archiv der Kategorie: Batch Allerlei

Hier werden verschiedene Batch Scripte veröffentlicht. Das ganze dient mehr als Nachschlagewerk. Große Beschreibungen wird es eher nicht geben.

AppleScript: Ordner selektieren und an Terminal übergeben

Ausgangspunkt:

In verschiedenen Ordnern liegen MP4 Files. Das AppleScript soll einen Dialog öffnen in dem man die Ordner auswählen kann, ist nur ein Ordner ausgewählt wird geprüft ob sich ein MP4 File in diesem Ordner befindet, wenn ja wird gewarnt dass nur ein Ordner ausgewählt wurde, ist kein MP4 File vorhanden wird darauf hingewiesen und ein neuer Dialog wird geöffnet.

Sind mehrere Ordner ausgewählt werden diese an den Terminal geschickt. Der Terminal führt ein Shell Script aus, welches im AppleScript Verzeichnis (*.app/Contents/Resources/Scripts/) liegt. Das Shell Script soll dann die Ordner weiterverarbeiten.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
set muxer to POSIX path of (path to resource "mxf-muxer" in directory "Scripts")
set foldercount to 0
 
tell application "Finder"
    set FolderPath to (choose folder with prompt "Pick the folders containing the files to process:" with multiple selections allowed)
    
    set foldercount to count FolderPath
    
    if (foldercount = 1) then
        set inPath to POSIX path of FolderPath as text
        set Foldername to name of folder FolderPath as text
        
        set infile to "no"
        tell application "Finder" to if exists inPath & Foldername & ".MP4" as POSIX file then set infile to "yes"
        
        if (infile = "no") then
            display dialog ("There is no file: \"" & inPath & Foldername & ".MP4" as text) & "\". Please select (multiple) folders which contains MP4 files!" buttons {"Cancel", "Select Folders"} default button "Select Folders"
            
            if button returned of result = "Select Folders" then
                set FolderPath to (choose folder with prompt "Pick the folders containing the files to process:" with multiple selections allowed)
            else
                return
            end if
        else
            display dialog "You have only select one folder, are you sure that you only want to process one file?" buttons {"Select Folders", "Continue"} default button "Continue"
            
            if button returned of result = "Select Folders" then
                set FolderPath to (choose folder with prompt "Pick the folders containing the files to process:" with multiple selections allowed)
            end if
        end if
    end if
    
    set filesString to ""
    repeat with file_ in FolderPath
        set filesString to filesString & " " & quoted form of (POSIX path of file_)
    end repeat
    
    tell application "Terminal"
        activate
        do script quoted form of muxer & filesString
    end tell
end tell

 

ffmpeg: 24fps zu 25fps

Möchte man ein 24 fps Clip mittels ffmpeg korrekt umwandeln kann man das in etwa so bewerkstelligen:

ffmpeg -i input.ext -r 25 -vf "setpts=(1/1,04166666666667)*PTS" [codec settings] output.ext

Mit diesem Beispiel würde zusätzlich noch ein Border angefügt:

ffmpeg -i input.ext -r 25 -vf "setpts=(1/1,04166666666667)*PTS" -vf scale=720:436,pad=720:576:0:70 -sws_flags lanczos -c:v mpeg2video -target pal-dvd -aspect:v 16:9 -c:a mp2 -b:a 224k -y output.ext

 

OSX Dateien und Ordner sichtbar/unsichtbar machen

Ein kleines Script mit dem versteckte Dateien in OSX sichtbar bzw. unsichtbar machen kann.

Script mit der Endung .command abspeichern, im Terminal ausführbar machen mit: chmod +x scriptname.command

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
 
stat=`defaults read com.apple.finder AppleShowAllFiles`
 
if [ "$stat" == "NO" ]; then
  defaults write com.apple.finder AppleShowAllFiles YES
  killall Finder /System/Library/CoreServices/Finder.app
 
else
  defaults write com.apple.finder AppleShowAllFiles NO
  killall Finder /System/Library/CoreServices/Finder.app
fi

Batch: media-autobuild_suite v2.0

Von dem Compiler Script media-autobuild_suite gibt es jetzt die Version 2.0.

Die Compiler- Umgebung basiert nun auf MSYS2. Vorteil davon ist, dass sich die Umgebung immer aktuell hält, Updates werden automatisch installiert.

Da nun auch viele Libraries aus MSYS2 genommen werden, bleiben auch diese auf dem neusten Stand. Das System bleibt kleiner und läuft im gesamten schneller.

 

Viel Spaß damit!

https://github.com/jb-alvarado/media-autobuild_suite

Batch: rename

Kommt doch immer wieder mal vor, dass man viele Dateien umbenenne muss.

Auf stackoverflow.com beschreibt jemand eine gute Methode wie man das mit einem Powershell Befehl bewerkstelligen kann:

 

powershell -C "gci | % {rni $_.Name ($_.Name -replace 'oldpart', 'newpart')}"

Bei dem Beispiel wird davon ausgegangen, dass ein Teil des Dateinamens bestehen bleibt und der Rest umbenannt wird.

Quelle:

http://stackoverflow.com/questions/9383032/batch-file-rename

Batch: Handling von .msi Installationspaketen

Es gibt verschiedene Möglichkeiten per Batch mit *.msi Paketen umzugehen.

Eine Möglichkeit wäre die Installation ohne Eingabeaufforderung zu starten, kann den Prozess auch um einiges Beschleunigen:

1
msiexec /program.msi /quiet /l* install.log

Eine Andere Möglichkeit wäre, dass Pakt in einen Ordner entpacken zu lasen:

1
msiexec /a program.msi /qb TARGETDIR=C:\target\folder

ffmpeg: x265 encoding

ffmpeg unterstützt jetzt ja auch x265, was bei gleich Qualität zu x264 die Dateigröße fast um die Hälfte verkleinert. Vorausgesetzt natürlich dass man eine Version hat, in der x265 integriert wurde.

Bei einem Test ist mir aufgefallen dass das Encoding streikt wenn kein „aspect“ angegeben ist.

Daher hier mal ein Beispiel  wie Parameter für ffmpeg sein können:

1
2
ffmpeg -i input_%%04d.png -loglevel repeat+verbose ^
-pix_fmt yuv420p -aspect 16:9 -r 25 -c:v libx265 -x265-params crf=22 -preset slower -y output.mp4

Interessanterweise kann das File vlc nicht abspielen, weil er meint er kennt hev1 nicht.

Andere Möglichkeit ist daher das ganze mit mp4box zu mergen:

1
2
3
4
ffmpeg -i input_%%04d.png -loglevel repeat+verbose ^
-pix_fmt yuv420p -aspect 16:9 -r 25 -c:v libx265 -x265-params crf=22 -preset slower -y output.hevc
 
mp4box -add output.hevc output.mp4