동영상 편집(점프 컷)을 자동화해 보았다!
13583 단어 Jupyter-notebookYouTube
참고로 한 기사
이 기사를 참고로 했습니다.
htps : // 코 m / 메라 r / ms / 1b7819 d dbae 7 p d3c9b4
했던 일
YouTube 동영상 편집 방법 중 하나인 '점프 컷'을 자동화하기 위해 노력했습니다.
Jupyter Notebook으로 만들어 보았습니다. OS는 Mac입니다.
FFmpeg로 무음 시간을 감지하고 동영상을 잘라냅니다.
이런 식으로 할 수 있습니다. ⇒ htps: //같다. 베 / 2 2 WyXGぉ
코드
import subprocess
import os
def mk_movieList(movie_folder):
files = os.listdir(movie_folder)
files = [x for x in files if x[-4:] == '.mp4'] ### x[-4]'後ろ4文字目以降'
files = [x for x in files if x[0] != '.']
return files
def mk_starts_ends(wk_dir, movie):
os.chdir(wk_dir)
output = subprocess.run(["ffmpeg", "-i", movie, "-af", "silencedetect=noise=-33dB:d=0.6", "-f", "null", "-"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print(output)
s = str(output)
lines = s.split('\\n')
time_list =[]
for line in lines:
if "silencedetect" in line:
words = line.split(" ")
for i in range(len(words)):
if "silence_start" in words[i]:
time_list.append(float(words[i+1]))
if "silence_end" in words[i]:
time_list.append(float(words[i+1]))
print(time_list)
starts_ends = list(zip(*[iter(time_list)]*2))
return starts_ends
def mk_jumpcut(wk_dir, movie, starts_ends):
os.chdir(wk_dir)
for i in range(len(starts_ends)-1):
movie_name = movie.split(".")
splitfile = "./JumpCut/" + movie_name[0] + "_" + str(i) + ".mp4"
print(splitfile)
output = subprocess.run(["ffmpeg", "-i", movie, "-ss", str(starts_ends[i][1]), "-t", str(starts_ends[i+1][0]-starts_ends[i][1]), splitfile], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
movie_folder = "ここに素材動画が入っているフォルダの場所を記載してください。"
os.chdir(movie_folder)
wk_dir = os.path.abspath(".")
try:
os.mkdir("JumpCut")
except:
pass
movie_list = mk_movieList(movie_folder)
for movie in movie_list:
print(movie)
starts_ends = mk_starts_ends(wk_dir, movie)
print(starts_ends)
mk_jumpcut(wk_dir, movie, starts_ends)
이런 느낌이 듭니다.
코드의 "movie_folder"로 지정한 폴더 안에 JumpCut이라는 폴더가 더 있습니다 ...
이런 느낌으로 동영상이 분할됩니다. 이것을 정리하고 동영상 편집 소프트웨어에 부치 넣어 재생하면
점프 컷 동영상이 완성되었습니다! ! ! !
중요한 곳
output = subprocess.run(["ffmpeg", "-i", movie, "-af", "silencedetect=noise=-33dB:d=0.6", "-f", "null", "-"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
이 행이 무음 시간을 검출하는 명령을 subprocess로 돌리고 있습니다.
「silencedetect=noise=-33dB:d=0.6」로 무음 상태의 판정 기준을 결정하고 있습니다.
-33dB의 음량이 0.6초 계속되면 무음이라고 판정되는 것 같습니다.
여기의 파라미터는 동영상마다 조정이 상당히 필요하네요.
여기서, 반환하고 있는 결과를 텍스트 처리해, [무음 개시 시간, 무음 종료 시간]의 리스트를 작성해, 그것을 mk_jumpcut에 건네주어, 동영상을 잘라내고 있습니다.
가장 좋은 느낌의 사용법
무음 상태의 판정 기준을 느슨하게 하고, 장회동의 동영상으로 음성이 있는 부분을 잘라내고 싶을 때라든가,
거친 편집적으로 사용하는 것이 편리할 것 같습니다.
완성된 버전의 점프 컷을 완전히 자동화하려면 파라미터 조정이 필요합니다.
Reference
이 문제에 관하여(동영상 편집(점프 컷)을 자동화해 보았다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/dokugaku-hitori/items/5df7114aaab291bf7c62
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
YouTube 동영상 편집 방법 중 하나인 '점프 컷'을 자동화하기 위해 노력했습니다.
Jupyter Notebook으로 만들어 보았습니다. OS는 Mac입니다.
FFmpeg로 무음 시간을 감지하고 동영상을 잘라냅니다.
이런 식으로 할 수 있습니다. ⇒ htps: //같다. 베 / 2 2 WyXGぉ
코드
import subprocess
import os
def mk_movieList(movie_folder):
files = os.listdir(movie_folder)
files = [x for x in files if x[-4:] == '.mp4'] ### x[-4]'後ろ4文字目以降'
files = [x for x in files if x[0] != '.']
return files
def mk_starts_ends(wk_dir, movie):
os.chdir(wk_dir)
output = subprocess.run(["ffmpeg", "-i", movie, "-af", "silencedetect=noise=-33dB:d=0.6", "-f", "null", "-"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print(output)
s = str(output)
lines = s.split('\\n')
time_list =[]
for line in lines:
if "silencedetect" in line:
words = line.split(" ")
for i in range(len(words)):
if "silence_start" in words[i]:
time_list.append(float(words[i+1]))
if "silence_end" in words[i]:
time_list.append(float(words[i+1]))
print(time_list)
starts_ends = list(zip(*[iter(time_list)]*2))
return starts_ends
def mk_jumpcut(wk_dir, movie, starts_ends):
os.chdir(wk_dir)
for i in range(len(starts_ends)-1):
movie_name = movie.split(".")
splitfile = "./JumpCut/" + movie_name[0] + "_" + str(i) + ".mp4"
print(splitfile)
output = subprocess.run(["ffmpeg", "-i", movie, "-ss", str(starts_ends[i][1]), "-t", str(starts_ends[i+1][0]-starts_ends[i][1]), splitfile], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
movie_folder = "ここに素材動画が入っているフォルダの場所を記載してください。"
os.chdir(movie_folder)
wk_dir = os.path.abspath(".")
try:
os.mkdir("JumpCut")
except:
pass
movie_list = mk_movieList(movie_folder)
for movie in movie_list:
print(movie)
starts_ends = mk_starts_ends(wk_dir, movie)
print(starts_ends)
mk_jumpcut(wk_dir, movie, starts_ends)
이런 느낌이 듭니다.
코드의 "movie_folder"로 지정한 폴더 안에 JumpCut이라는 폴더가 더 있습니다 ...
이런 느낌으로 동영상이 분할됩니다. 이것을 정리하고 동영상 편집 소프트웨어에 부치 넣어 재생하면
점프 컷 동영상이 완성되었습니다! ! ! !
중요한 곳
output = subprocess.run(["ffmpeg", "-i", movie, "-af", "silencedetect=noise=-33dB:d=0.6", "-f", "null", "-"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
이 행이 무음 시간을 검출하는 명령을 subprocess로 돌리고 있습니다.
「silencedetect=noise=-33dB:d=0.6」로 무음 상태의 판정 기준을 결정하고 있습니다.
-33dB의 음량이 0.6초 계속되면 무음이라고 판정되는 것 같습니다.
여기의 파라미터는 동영상마다 조정이 상당히 필요하네요.
여기서, 반환하고 있는 결과를 텍스트 처리해, [무음 개시 시간, 무음 종료 시간]의 리스트를 작성해, 그것을 mk_jumpcut에 건네주어, 동영상을 잘라내고 있습니다.
가장 좋은 느낌의 사용법
무음 상태의 판정 기준을 느슨하게 하고, 장회동의 동영상으로 음성이 있는 부분을 잘라내고 싶을 때라든가,
거친 편집적으로 사용하는 것이 편리할 것 같습니다.
완성된 버전의 점프 컷을 완전히 자동화하려면 파라미터 조정이 필요합니다.
Reference
이 문제에 관하여(동영상 편집(점프 컷)을 자동화해 보았다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/dokugaku-hitori/items/5df7114aaab291bf7c62
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import subprocess
import os
def mk_movieList(movie_folder):
files = os.listdir(movie_folder)
files = [x for x in files if x[-4:] == '.mp4'] ### x[-4]'後ろ4文字目以降'
files = [x for x in files if x[0] != '.']
return files
def mk_starts_ends(wk_dir, movie):
os.chdir(wk_dir)
output = subprocess.run(["ffmpeg", "-i", movie, "-af", "silencedetect=noise=-33dB:d=0.6", "-f", "null", "-"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print(output)
s = str(output)
lines = s.split('\\n')
time_list =[]
for line in lines:
if "silencedetect" in line:
words = line.split(" ")
for i in range(len(words)):
if "silence_start" in words[i]:
time_list.append(float(words[i+1]))
if "silence_end" in words[i]:
time_list.append(float(words[i+1]))
print(time_list)
starts_ends = list(zip(*[iter(time_list)]*2))
return starts_ends
def mk_jumpcut(wk_dir, movie, starts_ends):
os.chdir(wk_dir)
for i in range(len(starts_ends)-1):
movie_name = movie.split(".")
splitfile = "./JumpCut/" + movie_name[0] + "_" + str(i) + ".mp4"
print(splitfile)
output = subprocess.run(["ffmpeg", "-i", movie, "-ss", str(starts_ends[i][1]), "-t", str(starts_ends[i+1][0]-starts_ends[i][1]), splitfile], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
movie_folder = "ここに素材動画が入っているフォルダの場所を記載してください。"
os.chdir(movie_folder)
wk_dir = os.path.abspath(".")
try:
os.mkdir("JumpCut")
except:
pass
movie_list = mk_movieList(movie_folder)
for movie in movie_list:
print(movie)
starts_ends = mk_starts_ends(wk_dir, movie)
print(starts_ends)
mk_jumpcut(wk_dir, movie, starts_ends)
코드의 "movie_folder"로 지정한 폴더 안에 JumpCut이라는 폴더가 더 있습니다 ...
이런 느낌으로 동영상이 분할됩니다. 이것을 정리하고 동영상 편집 소프트웨어에 부치 넣어 재생하면
점프 컷 동영상이 완성되었습니다! ! ! !
중요한 곳
output = subprocess.run(["ffmpeg", "-i", movie, "-af", "silencedetect=noise=-33dB:d=0.6", "-f", "null", "-"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
이 행이 무음 시간을 검출하는 명령을 subprocess로 돌리고 있습니다.
「silencedetect=noise=-33dB:d=0.6」로 무음 상태의 판정 기준을 결정하고 있습니다.
-33dB의 음량이 0.6초 계속되면 무음이라고 판정되는 것 같습니다.
여기의 파라미터는 동영상마다 조정이 상당히 필요하네요.
여기서, 반환하고 있는 결과를 텍스트 처리해, [무음 개시 시간, 무음 종료 시간]의 리스트를 작성해, 그것을 mk_jumpcut에 건네주어, 동영상을 잘라내고 있습니다.
가장 좋은 느낌의 사용법
무음 상태의 판정 기준을 느슨하게 하고, 장회동의 동영상으로 음성이 있는 부분을 잘라내고 싶을 때라든가,
거친 편집적으로 사용하는 것이 편리할 것 같습니다.
완성된 버전의 점프 컷을 완전히 자동화하려면 파라미터 조정이 필요합니다.
Reference
이 문제에 관하여(동영상 편집(점프 컷)을 자동화해 보았다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/dokugaku-hitori/items/5df7114aaab291bf7c62
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
output = subprocess.run(["ffmpeg", "-i", movie, "-af", "silencedetect=noise=-33dB:d=0.6", "-f", "null", "-"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
무음 상태의 판정 기준을 느슨하게 하고, 장회동의 동영상으로 음성이 있는 부분을 잘라내고 싶을 때라든가,
거친 편집적으로 사용하는 것이 편리할 것 같습니다.
완성된 버전의 점프 컷을 완전히 자동화하려면 파라미터 조정이 필요합니다.
Reference
이 문제에 관하여(동영상 편집(점프 컷)을 자동화해 보았다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dokugaku-hitori/items/5df7114aaab291bf7c62텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)