|
|||||||
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|
#1 |
|
Oldie
Registriert seit: 23.04.2001
Beiträge: 1.029
|
Ich habe in einem Ordner "G:\Video\ " hunderte kurzer Videosequenzen vom AVCHD-Camcorder (00000.MTS .... 99999.MTS). Für jede MTS-Datei soll eine AviSynth-Scriptdatei mit der Endung .AVS mit folgendem Inhalt in den gleichen Ordner erstellt werden, also 00000.AVS :
Videoclip=DirectShowSource("G:\Video\00000.MTS",Audio=true) return(Videoclip) bis 99999.AVS : Videoclip=DirectShowSource("G:\Video\99999.MTS",Audio=true) return(Videoclip) wobei gleichzeitig auch im Script der Dateiname der MTS-Datei geändert werden soll. Nun gut, ich könnte es mir einfach machen, und 10000 Scripte im Voraus erstellen, doch es gibt auch schon Ordner neueren Datums, wo ich mittels HD-Writer meine Aufnahmen auf den Rechner gezogen habe. Dabei wurden sie automatisch umgewandelt in .M2TS und die Datein erhalten als Filenamen das Datum, also z.B. 20090704_100946.m2ts für 2009 4.Juli 10.09 Uhr 46Sekunden. Ich suche nun nach einer Batch-Lösung oder auch VBS-Datei, da sich mein Scriptwissen nur sehr rudimentär auf Autoexec.bat u.d.Gl. aus früheren Win3.11-Zeiten beschränkt. Danke schon mal für die Hilfe. |
|
|
|
|
|
#2 |
|
Oldie
Registriert seit: 22.04.2001
Beiträge: 830
|
Wenn du Perl installiert hast oder installieren willst:
Code:
use warnings;
use strict;
use File::stat;
use File::Find;
use File::Basename;
use Time::localtime;
my $basedir = "c:/temp/mts";
find(\&process_file, ($basedir));
sub process_file{
#print $File::Find::name;
return if (-d $File::Find::name);
return if ($File::Find::name !~ /.mts$/i);
parse_file($File::Find::name);
}
sub parse_file{
my $file = shift;
my($filename, $directories, $suffix) = fileparse($file, '\..*');
my $avsdatei = $directories . $filename . ".avs";
print "Schreibe $avsdatei...\n";
open OUT, ">$avsdatei";
print OUT 'Videoclip=DirectShowSource("';
print OUT $file;
print OUT '",Audio=true)';
print OUT "\nreturn(Videoclip)";
close OUT;
}
|
|
|
|
|
|
#3 |
|
Master of Tools
Registriert seit: 21.05.2001
Beiträge: 3.894
|
Das geht wunderbar mit ner BATCH.
Genauer gesagt mit einer FOR DO WHILE Schleife. Leider bin ich darin nicht so 100%ig fit. Frag mal bei RAGNAR nach. Am besten hier: http://www.cc-community.net/rags-bat...ad-t45518.html Gruß |
|
|
|
|
|
#4 |
|
Oldie
Registriert seit: 23.04.2001
Beiträge: 1.029
|
Danke Euch Beiden
|
|
|
|
|
|
#5 |
|
alter Oldie
Registriert seit: 26.04.2001
Ort: Berlin
Beiträge: 3.248
|
@Elektrospeedy
Willst du das nur für die *.mts oder auch für die *.m2ts ? |
|
|
|
|
|
#6 |
|
Oldie
Registriert seit: 23.04.2001
Beiträge: 1.029
|
Eigentlich für die m2ts, da nach dem letzten Update von Panasonic die Software HDWritwerAE funktioniert. Diese ordnet, was mir lieber ist, die Aufnahmen in nach Datum geordnete Ordner ein und benennt zusätzlich die Files von mts in m2ts um. Datenmäßig ist der Inhalt aber gleich.
|
|
|
|
|
|
#7 |
|
Oldie
Registriert seit: 23.04.2001
Beiträge: 1.029
|
Danke an Euch Alle, besonders für den Tip von SkAvEnGeR
Hier nun meine Batchdatei: @echo off set path=G:\Video for /R %path% %%x in (*.mts) do ( echo.Videoclip=DirectShowSource^("%%x",Audio=true^) echo.return^(Videoclip^) ) >"%%~dpnx.avs" Damit brauche ich nur die Path-Variable und die Dateiendung .MTS auszutauschen. Zusätzlich kann ich per echo noch weitere Funktionen für AVISynth übergeben, wichtig ist in der Batch dabei das Zeichen ^ , sonst kommt ein Syntaxfehler. |
|
|
|
|
|
#8 |
|
Master of Tools
Registriert seit: 21.05.2001
Beiträge: 3.894
|
Hehe,
freut mich, das du eine praktikable Lösung gefunden hast. Es ist doch immer wieder erstaunlich, was man mit Batch-Scripten alles so bewerkstelligen kann. Ich wette, DAMIT hättest du nicht gerechnet Leider gibt es aber noch viele andere User, die noch nie was von "Eingabeaufforderung" gehört haben. MSDOS incl. Batch-Scripting is simple, fast and cool. rock on |
|
|
|
| Folgender Benutzer sagt Danke zu SkAvEnGeR für den nützlichen Beitrag: |
|
|
#9 |
|
Oldie
Registriert seit: 23.04.2001
Beiträge: 1.029
|
So, der Urlaub ist vorbei und ich habe noch etwas rumexperimentiert. In meiner erweiterten Variante kann sich die Batchdatei in irgend einem anderen Verzeichnis befinden, ich brauche nur noch den Ordner mit den Videofiles auf die Batch zu ziehen, der Rest geschieht automatisch:
Code:
@echo off
set path=%1%
color 9e
set endung=0
Echo 0=wenn keine gültigen Datein vorhanden sind
if exist "%path%/*.mts" Echo 1=MTS, MTS-Stream
if exist "%path%/*.m2ts" Echo 2=M2TS, M2TS-Stream
if exist "%path%/*.mpg" Echo 3=MPG, MPG-Video
if exist "%path%/*.mpeg" Echo 4=MPEG, MPEG-Video
Echo.
set /p endung= Dateiendung auswählen:
:Bedingung
if %endung%==1 set file=MTS
if %endung%==2 set file=M2TS
if %endung%==3 set file=MPG
if %endung%==4 set file=MPEG
if %endung%==0 Exit
if not exist "%path%/*.%file%" goto fehler
goto script
:fehler
set /p endung=keine gültige Datei vorhanden, neu eingeben:
goto Bedingung
:Script
for /R %path% %%x in (*.%file%) do (
echo.Videoclip=DirectShowSource^("%%x",Audio=true^)
echo.return^(Videoclip^)
) >>"%%~dpnx.avs"
exit
|
|
|
|
| Folgender Benutzer sagt Danke zu Elektrospeedy für den nützlichen Beitrag: |
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|