Frage von beulehome:Hallo liebes Forum,
ich habe folgendes Problem:
Ich habe wöchentliche Inhalte die für verschiedene Partner gebrandet werden müssen.
Folgendes Problem ist zu lösen:
1. In einem Ordner A sind 100 verschiedene Intros.
2. In einem Ordner B sind 100 verschiedener Outros.
3. in einem Ordner C liegt ein einzelnes Video.
4. Die Nummerierungen in A Und B sind identisch. D.h. bspw. Intro_1.mov in Ordner A und Outro_1.mov in Ordner B gehören zusammen.
5. Nun sollen aus diesen 3 Ordner Videos in der Kombination:
Intro_x.mov + Video in Ordner B.mov + Outro_x.mov zusammengeführt werden. Es findet als eine Stapelverarbeitung statt.
Nun meine Frage: Gibt es für so etwas fertige Software oder ein Script.
Es stehen Final Cut Studio Pro 7 sowie die gesamte Adobe CC Palette zur Verfügung. Wir wären aber auch bereit (falls es Drittanbieter-Lösungen gibt) dafür auch zu investieren. Wie gesagt wir haben diese Anforderung jede Woche da lohnt sich die Autmation wirklich.
Besten Dank für Eure Hilfe
christian
Antwort von kundesbanzler:
Was meinst du mit "fertiges Script"? Das Skript was die Videos für deinen speziellen Fall zusammen sucht, wirst du selbst schreiben müssen. Kommandozeilenbasiert Videos hintereinanderhängen kannst du ziemlich einfach mit ffmpeg und dessen Flag -f concat
http://trac.ffmpeg.org/wiki/Howto ... iafiles
Antwort von studiolondon:
Ja, FFMPEG bzw X264 sind dafür genau richtig.
Wir haben das tausendfach für die Webverwertung(Werbeinserts). Wenn du die gleichen Quellformate hast, geht das zudem ohne re-encoding per streamcopy.
Wenn das ganze dynamisch laufen muss (also bspw. unterschiedliche Insert je nach Demoskopie & Region) wirds anspruchsvoller, da kommst du um Frameserver nicht umhin.
FFMPG selber ist opensource. Wenn ihr einen Etat habt - wir kaufen uns meist pro Anwendungszweck ein Frontend, das genau auf die Aufgabe zugeschneidert ist bei einem der guten FFMPEG-Cracks in der EU.
Antwort von beulehome:
Hi,
danke schon Mal für die Antworten:
Ich habe leider vom Script schreiben NULL-Ahnung.
Könnt Ihr mir sagen, wir mir so etwas gegen Endgeld programmieren könnte?
Beste Grüße
c.,
Antwort von kundesbanzler:
Könnt Ihr mir sagen, wir mir so etwas gegen Endgeld programmieren könnte?
Ach, lass mal, für die paar Zeilen lohnt sich das Rechnungschreiben nicht.
Benutzung:
1. Python (2.7) muss installiert sein
2a. unter OSX muss ffmpeg installiert sein
2b. unter Windows muss der pfad zu ffmpeg angepasst werden
3. code als concat.py irgendwohin abspeichern
4. Videos, die mit Intro und Outro umbettet werden sollen, müssen im gleichen Ordner wie die concat.py liegen; es können beliebig viele sein, allerdings nur movs
5. intros und outros müssen im unterordner namens "video" liegen, nach deinem Benennungsschema, aber mit dreierpadding (also beginnend bei Intro_001.mov), es können beliebig viele sein allerdings ohne lücken
6. dann das ding starten, die neuen videos landen in einem ordner "output", so viele wie es halt intros und outros gibt
Wenn noch mehr Funktionsumfang gewünscht ist, kannst du mir gern eine Anfrage mit paar mehr Infos schicken:
kb_slcam@gmx.de
import os
import sys
import subprocess
if sys.platform == 'darwin':
ffmpeg = 'ffmpeg'
else:
ffmpeg = 'D:/Tools/ffmpeg/bin/ffmpeg.exe'
currentdir = os.path.dirname( os.path.realpath(__file__) )
inoutvids = os.path.join ( currentdir , "video" )
concatlist = os.path.join( os.getenv('TEMP') , 'concatlist.txt')
for f in os.listdir(currentdir):
if os.path.isfile(f) and '.' in f:
i = 1
if f.rsplit('.',1)[1] == 'mov':
videopath = os.path.join(currentdir,f)
while os.path.isfile ( os.path.join( currentdir ,"video/Intro_%03d.mov" % i ) ):
if os.path.isfile(concatlist):
os.remove(concatlist)
f = open ( concatlist , 'a+')
f.write("file '%s/Intro_%03d.mov'\n" % ( inoutvids , i ) )
f.write("file '" + videopath +"'\n")
f.write("file '%s/Outro_%03d.mov'\n" % ( inoutvids, i ) )
f.close()
dirname, basename = os.path.split(videopath)
if not os.path.isdir(os.path.join (dirname, 'output')):
os.mkdir ( os.path.join (dirname, 'output'))
outputpath = os.path.join (dirname, 'output' , basename.rsplit('.',1)[0] + '_%03d.mov' % i )
cmdline = '%s -f concat -i %s -c copy %s' % ( ffmpeg , concatlist, outputpath )
subprocess.call(cmdline)
os.remove(concatlist)
i += 1
 |