Der Zweck dieses Artikels besteht darin, die Videos mit Seriennummern, die durch Überspringen der Videos mithilfe des Artikels (https://qiita.com/merarli/items/1b7819adbae7fad3c9b4) erstellt wurden, automatisch in Aviutl zu importieren. Ich werde. __ Daher wird davon ausgegangen, dass die folgenden Videos mit Seriennummern vorhanden sind.
Es ist mir gelungen, mit dem großen Anführer __ (https://qiita.com/merarli/items/1b7819adbae7fad3c9b4/)__ automatisch zu springen, aber das nächste, worauf ich warte, ist Aviutl Es war auf die erweiterte Zeitachse von zu ziehen. Wenn Sie gerne Videos veröffentlichen und Geld verdienen möchten, macht es keinen Sinn, den Sprungschnitt zu automatisieren ... Nun, was machen Sie? !! Ich habe es mit dem Motiv von geschaffen.
Ich werde den zuvor erstellten Code einfügen.
import glob#Liste abrufen
import pathlib#Es scheint, dass dieser ähnlich wie Glob bequemer ist
import subprocess
from re import sub
from os import path#Pfadverbindung
import sys
m_path=r"D:\movie\JumpCut_note_DT"#Videopfad
file_exo=open(path.join(m_path,"make_exo.exo"),mode='w')
#Videodatenimport pathlib
l_movie = pathlib.Path(m_path).glob(r'**\*.mp4')
movie_name=[]#Zum Speichern von Dateinamen
for p in l_movie:
movie_name.append(p.name)#Elemente hinzufügen
print(p.name)
num= lambda val : int(sub('\\D','', val))#Zahlen aus Dateinamen extrahieren
movie_name=sorted(movie_name,key = num)#Sortieren
print(movie_name)
#Ausgang der Grundeinstellung Mit ffmpeg lesen
movie_size=subprocess.run(["ffprobe","-v","error","-select_streams","v:0","-show_entries","stream=width,height,r_frame_rate","-of","default=nokey=1:noprint_wrappers=1",path.join(m_path,movie_name[1])],stdout=subprocess.PIPE, stderr=subprocess.PIPE)
movie_size = movie_size.stdout.decode("utf8")
movie_size = movie_size.splitlines()#Listenspeicher getrennt durch Zeilenvorschubzeichen
print(movie_name[0])
print("movie_size\n"+ movie_size[0])
print(path.join(m_path,movie_name[0]))
print("[exedit]",file=file_exo)
print("width=",movie_size[0],sep="",file=file_exo)
print("hight=",movie_size[1],sep="",file=file_exo)
print("rate=",eval(movie_size[2]),sep="",file =file_exo)#Zeichenfolgenberechnungsfunktion eval
print("scale=",1,sep="",file =file_exo)
print("langh=",1,sep="",file=file_exo)
print("audio_rate=",44100,sep="",file=file_exo)
print("audio_ch=",2,sep="",file=file_exo)
#exo Schöpfung
flame_all = []#Anzahl der Videobilder
n=0#Anzahl der Wiederholungen
s_flame=1#Anfangsrahmen
e_flame=0#Rahmen beenden
#Videodaten
for m_num in movie_name:
n=movie_name.index(m_num)#Anzahl der Wiederholungen
#[]Videobestellung
print('[',n,']',sep="",file=file_exo)#Sep-Trennzeichen Standardraum mit halber Breite
#Videostart-end
flame =subprocess.run(["ffprobe","-v","error","-select_streams","v:0","-show_entries","stream=nb_frames","-of","default=nokey=1:noprint_wrappers=1",path.join(m_path,m_num)],stdout=subprocess.PIPE, stderr=subprocess.PIPE)
flame_all.append(flame.stdout.decode("utf8"))#Der Rückgabewert des Unterprozesses ist Byte?Also konvertiere zu utf8
flame_all[n]=flame_all[n].rstrip('\r\n')#Löschen Sie das Zeilenvorschubzeichen am Ende
e_flame = int(flame_all[n])+int(e_flame)#Aktuelle Anzahl der Flammen+Anzahl der Frames am Ende des letzten Males
print('start=',s_flame,sep="",file=file_exo)
s_flame=int(e_flame)+1#Anzahl der nächsten Startrahmen=Anzahl der Frames am Ende des letzten Males+1
print('end=',e_flame,sep="",file=file_exo)
print('layer=',1,sep="",file=file_exo)#Videodatei 1,Audiodatei 2
print('group=',n+1,sep="",file=file_exo)
print('overlay=',1,sep="",file=file_exo)
print('camera=',0,sep="",file=file_exo)
print('[''{:.1f}'']'.format(n),sep="",file=file_exo)
print('_name=Videodatei',sep="",file=file_exo)#Verwenden Sie für Audiodateien Audiodateien
print('Wiedergabeposition=',1,sep="",file=file_exo)
print('Wiedergabegeschwindigkeit=',100.0,sep="",file=file_exo)
print('Loop-Wiedergabe=',0,sep="",file=file_exo)
print('Alphakanal laden=',0,sep="",file=file_exo)
print('file=',path.join(m_path,m_num),sep="",file=file_exo)
print('[',n+0.1,']',sep="",file=file_exo)
print('_name=Standardzeichnung',sep="",file=file_exo)
print('X=',0.0,sep="",file=file_exo)#Koordinate X.,Y,Z
print('Y=',0.0,sep="",file=file_exo)
print('Z=',0.0,sep="",file=file_exo)
print('Expansionsrate=',100.00,sep="",file=file_exo)
print('Transparenz=',0.0,sep="",file=file_exo)
print('Drehung=''{:.2f}'.format(0.00),sep="",file=file_exo)
print('blend=',0,sep="",file=file_exo)
#Sprachdaten
s_flame=1#Anfangsrahmen
e_flame=0#Rahmen beenden
for m_num in movie_name:
n=movie_name.index(m_num)#Anzahl der Wiederholungen
n_v=movie_name.index(m_num)+len(movie_name)#Anzahl der sequentiellen Datenwiederholungen+movie_Anzahl der Elemente im Namen
#[]Videobestellung
print('[',n_v,']',sep="",file=file_exo)#Sep-Trennzeichen Standardraum mit halber Breite
#Videostart-Ich brauchte end ffmpeg nicht, weil ich es im Video gemacht habe
e_flame = int(flame_all[n])+int(e_flame)#Aktuelle Anzahl der Flammen+Anzahl der Frames am Ende des letzten Males
print('start=',s_flame,sep="",file=file_exo)
s_flame=int(e_flame)+1#Anzahl der nächsten Startrahmen=Anzahl der Frames am Ende des letzten Males+1
print('end=',e_flame,sep="",file=file_exo)
print('layer=',2,sep="",file=file_exo)#Audiodatei 2
print('group=',n+1,sep="",file=file_exo)#Bleib n
print('overlay=',1,sep="",file=file_exo)
print('audio=',1,sep="",file=file_exo)#Stattdessen Kamera gelöscht, die hier nicht im Video war
print('[''{:.1f}'']'.format(n_v),sep="",file=file_exo)
print('_name=Audiodatei',sep="",file=file_exo)#AudiodateiではAudiodateiにする
print('Wiedergabeposition=''{:.2f}'.format(0.00),sep="",file=file_exo)#Es war 1 im Video
print('Wiedergabegeschwindigkeit=',100.0,sep="",file=file_exo)
print('Loop-Wiedergabe=',0,sep="",file=file_exo)
print('Funktioniert mit Videodateien=',1,sep="",file=file_exo)
if n==0 :#So war es in sample1
print('file=',path.join(m_path,m_num),sep="",file=file_exo)
else:
print('file=',sep="",file=file_exo)
#print('file=',path.join(m_path,m_num),sep="",file=file_exo)
print('[',n_v+0.1,']',sep="",file=file_exo)#n->n_v
print('_name=Standardwiedergabe',sep="",file=file_exo)#動画では標準描画 音声 Standardwiedergabe
print('Volumen=',100.0,sep="",file=file_exo)
print('Links und rechts=',0.0,sep="",file=file_exo)
print(flame_all)
file_exo.close()
Legen Sie den Pfad fest, in dem das Video in der Variablen platziert wird (m_path). Wenn Sie es anschließend mit einer Eingabeaufforderung oder anaconda ausführen, wird eine Bearbeitungsdatendatei (make_exo.exo) für aviutl direkt unter m_path erstellt. Wenn Sie make_exo.exo auf die erweiterte Timeline von aviutl ziehen, werden die Videos mit der Seriennummer in die Timeline geladen.
Die Erläuterung der exo-Datei der Beispieldaten wird unten beschrieben. Da es sich möglicherweise um eine Seriennummer handelt, erstellen Sie ein Programm, das Informationen gemäß den Regeln dieser Datei ausgibt. Ich kann nicht jeden Parameter bestätigen, da ich ihn im Grunde nur aus der Exo-Datei gelesen habe.
[exedit]
width=908//Video Größe
height=512//
rate=30//Bildrate
scale=1
length=129//Gesamtendrahmen
audio_rate=44100
audio_ch=2
[0]//Videodateistart 0->1->2
start=1 //Rahmen starten
end=79 //Rahmen beenden
layer=1
group=1
overlay=1
camera=0
[0.0] //0.0->1.0->2.0
_name=Videodatei
Wiedergabeposition=1
Wiedergabegeschwindigkeit=100.0
Loop-Wiedergabe=0
Alphakanal laden=0
file=D:\movie\JumpCut_note_DT\0_out_.mp4
[0.1] //0.1->1.1->2.1
_name=Standardzeichnung
X=0.0
Y=0.0
Z=0.0
Expansionsrate=100.00
Transparenz=0.0
Drehung=0.00
blend=0
[1]
start=80
end=100
layer=1
group=2
overlay=1
camera=0
[1.0]
_name=Videodatei
Wiedergabeposition=1
Wiedergabegeschwindigkeit=100.0
Loop-Wiedergabe=0
Alphakanal laden=0
file=D:\movie\JumpCut_note_DT\1_out_.mp4
[1.1]
_name=Standardzeichnung
X=0.0
Y=0.0
Z=0.0
Expansionsrate=100.00
Transparenz=0.0
Drehung=0.00
blend=0
[2]//Audiodatei starten
start=1
end=79
layer=2
group=1
overlay=1
audio=1
[2.0]
_name=Audiodatei
Wiedergabeposition=0.00
Wiedergabegeschwindigkeit=100.0
Loop-Wiedergabe=0
Funktioniert mit Videodateien=1
file=
[2.1]
_name=Standardwiedergabe
Volumen=100.0
Links und rechts=0.0
[3]
start=80
end=100
layer=2
group=2
overlay=1
audio=1
[3.0]
_name=Audiodatei
Wiedergabeposition=0.00
Wiedergabegeschwindigkeit=100.0
Loop-Wiedergabe=0
Funktioniert mit Videodateien=1
file=
[3.1]
_name=Standardwiedergabe
Volumen=100.0
Links und rechts=0.0
Ich kann es zu einem späteren Zeitpunkt schreiben. Es wird in der Reihenfolge der exo-Basisdatei in eine Textdatei ausgegeben.
Dieses Programm wurde von einem Amateur des Programms erstellt, um es einfacher zu machen. Daher denke ich, dass es viele Fälle gibt, in denen der Weg zum Schreiben eines Programms nicht erreicht ist. In diesem Fall würde ich mich freuen, wenn Sie mich in den Kommentaren informieren könnten. Habt ein gutes Video-Posting-Leben! !!
Recommended Posts