avi in rec umwandeln per batch-Script: avi2rec.bat
Verfasst: Sa 6. Dez 2008, 12:42
Um meinen Toppi als Jukebox für avi's zu nutzen, habe ich mal begonnen, ein batch-Script zu schreiben, das alle avi's aus einem Verzeichnis in Topfield-kompatible rec-Dateien umwandelt.
Vorbereitung:
Das funktioniert für normale Dateinamen, aber nicht bei Dateinamen mit Sonderzeichen (space, "&" und "-"). Das Problem liegt bei den Dateien "Filename.mpg.in_progress", die ich erzeuge, um nach einem Programmabbruch erkennen zu können, welche Dateien unvollständig bearbeitet wurden. Kann mir hier jemand sagen, wie man den Dateinamen auch mit Sonderzeichen korrekt erzeugen kann ?
Dies ist meine erste Version von "avi2rec.bat" (Anwendung auf eigenes Risiko):
Und diese "X.ini"-Datei sagt ProjectX, dass eine Topfield-kompatible TS-Datei mit rec-Header erzeugt werden soll:
Meine Versuche, die X.ini-Datei aus dem avi2rec.bat -Script heraus zu erzeugen - etwa so:
- sind bisher am "echo" Befehl gescheitert. Ich bekomme einfach die Leerzeichen an den Zeilenenden nicht weg; diese stören ProjectX. Unter Linux kann man ja einfach "Anführungszeichen" um den Text setzen, in einem bat-Script würden diese mit in die Datei gedruckt. Wenn ich die >>-Symbole direkt hinter den Text setze, ohne Leerzeichen, wird das völlig anders interpretiert. Weiß jemand, wie man das lösen kann ?
Für weitere Anregungen, Kritik und Verbesserungsvorschläge bin ich immer dankbar. Als Linux-Mensch fällt mir die DOS-batch-Programmierung etwas schwer...
Vorbereitung:
- ProjectX installieren
- ffmpeg installieren
- in avi2rec.bat die Pfade zu diesen 2 Programmen anpassen
- alle Dateien in ein Verzeichnis legen:
- avi2rec.bat
- X.ini (EDIT: bei der Version aus post #5 nicht nötig)
- alle avi's, die transcodiert werden sollen
- avi2rec.bat starten
- die entstandenen rec-Dateien auf den Toppi übertragen.
Das funktioniert für normale Dateinamen, aber nicht bei Dateinamen mit Sonderzeichen (space, "&" und "-"). Das Problem liegt bei den Dateien "Filename.mpg.in_progress", die ich erzeuge, um nach einem Programmabbruch erkennen zu können, welche Dateien unvollständig bearbeitet wurden. Kann mir hier jemand sagen, wie man den Dateinamen auch mit Sonderzeichen korrekt erzeugen kann ?
Dies ist meine erste Version von "avi2rec.bat" (Anwendung auf eigenes Risiko):
Code: Alles auswählen
:avi2rec.bat by kiss_me
set ffmpeg="C:\Dokumente und Einstellungen\.......\FFmpeg-svn-15666\ffmpeg.exe"
set proj_x="C:\Dokumente und Einstellungen\.......\ProjectX_Source_0.90.4\ProjectX.jar"
set resolution=720x576
set frame_rate=25
set aspect_rat=16:9
set audio_samp=48000
set audio_rate=192000
set video_rate=4000000
for %%a in (*.avi) do (
:set current_dir=%~dp0
:set name=%%~na
:set ext=%%~xa
if exist "%%~na.mpg.in_progress" (
rm "%%~na.mpg"
rm "%%~na.mpg.in_progress"
)
if not exist "%%~na.mpg" (
touch "%%~na.mpg.in_progress"
%ffmpeg% -i "%%a" -s %resolution% -r %frame_rate% -vcodec mpeg2video -acodec mp2 -ab %audio_rate% -ar %audio_samp% -b %video_rate% -aspect %aspect_rat% "%%~na.mpg"
rm "%%~na.mpg.in_progress"
)
)
for %%a in (*.mpg) do (
if exist "%%~na.rec.in_progress" (
rm "%%~na.rec"
rm "%%~na.rec.in_progress"
)
if not exist "%%~na.rec" (
touch "%%~na.rec.in_progress"
java -jar %proj_x% -tots -out %~dp0 "%%~fa"
rm "%%~na.rec.in_progress"
rm "%%~na_log.txt"
)
)
Code: Alles auswählen
# Project-X INI
# ProjectX 0.90.4.00 / 30.03.2006
# Application
Application.Agreement=1
Application.Language=en
# CollectionPanel
CollectionPanel.CutMode=0
# MainPanel
MainPanel.ConversionMode=4
# SpecialPanel
SpecialPanel.Input.concatenateForeignRecords=1
SpecialPanel.TS.HeaderMode=2
# WindowPosition
WindowPosition.Main.Height=652
WindowPosition.Main.Width=906
WindowPosition.Main.X=151
WindowPosition.Main.Y=284
Code: Alles auswählen
: funktioniert nicht, selbst nur ein Leerzeichen am Zeilenende stört ProjectX:
echo # Project-X INI > X.ini
echo # ProjectX 0.90.4.00 / 30.03.2006 >> X.ini
echo # >> X.ini
echo # Application >> X.ini
echo Application.Agreement=1 >> X.ini
echo Application.Language=en >> X.ini
echo # >> X.ini
echo # CollectionPanel >> X.ini
echo CollectionPanel.CutMode=0 >> X.ini
echo # >> X.ini
echo # MainPanel >> X.ini
echo MainPanel.ConversionMode=4 >> X.ini
echo # >> X.ini
echo # SpecialPanel >> X.ini
echo SpecialPanel.Input.concatenateForeignRecords=1 >> X.ini
echo SpecialPanel.TS.HeaderMode=2 >> X.ini
Für weitere Anregungen, Kritik und Verbesserungsvorschläge bin ich immer dankbar. Als Linux-Mensch fällt mir die DOS-batch-Programmierung etwas schwer...