ffmpeg-python을 사용하여 동영상의 한 구획을 잘라냅니다 (자르기 자르기).

소개



파이썬으로 동영상을 괴롭히고 싶을 때, 한 구획을 잘라 (크롭핑 트리밍) 하는데 어려웠습니다만,
ffmpeg-python을 사용하여 잘 작동했기 때문에 메모입니다.

환경



OS:MacOS Mojave 10.14.4
파이썬 : 3.6
ffmpeg-python:0.2.0

준비



ffmpeg-python을 설치합니다.
$ pip install ffmpeg-python

코드



cropvideo.py
import ffmpeg

upper_left_x = XX
# 切り取りたい区画のx座標(px)
upper_left_y = XX
# 切り取りたい区画のy座標(px)
width = XX
# 切り取りたい区画の幅(px)
height = XX
# 切り取りたい区画の高さ(px)

stream = ffmpeg.input('sample.mp4')
# sample.mp4に切り取りたい動画を入れる

stream = ffmpeg.crop(stream, upper_left_x, upper_left_y, width, height)

stream = ffmpeg.output(stream, 'cropoutput.mp4')
# cropoutput.mp4が切り取った動画で出てきます。

ffmpeg.run(stream, overwrite_output=True)
# overwrite_output=Trueとすることで同じファイル名の動画がすでにあっても上書きします。

upper_left_x, upper_left_y, width, height는 각각 잘라내고 싶은 곳을 스스로 px로 지정할 필요가 있습니다.

「px의 위치 왠지 모르겠어!」라고 하는 경우



동영상에서 정지영상을 꺼내 김프로 표시하여 육안으로 확인할 수 있습니다.

먼저 동영상에서 정지영상을 1프레임 꺼냅니다.

getimage.py
import ffmpeg

tpoint = XX
# 取り出したい静止画の時間(tpoint = 10 なら動画の10秒時点の静止画が取れる)

imagename = 'hogehoge.jpg'
#取り出したい静止画のファイル名を指定

stream = ffmpeg.input('sample.mp4')
# sample.mp4に切り取りたい動画を入れる

stream = ffmpeg.output(stream, imagename, ss=tpoint, vframes=1, f='image2')
ffmpeg.run(stream)

꺼낸 정지영상을 김프로 엽니다.


그리고 먼저 잘라내고 싶은 부분의 왼쪽 상단에 마우스 커서를 맞춥니다. (이미지에 커서가 표시되지 않지만 대략 적색 원이 붙어 있으면 고라엔을 가리키고 있습니다.)
그러면 김프 화면 왼쪽 하단에 "x 좌표, y 좌표"가 px로 표시됩니다.
이 좌표는 upper_left_x, upper_left_y에 해당합니다.


그런 다음 잘라내려는 부분의 오른쪽 하단에 마우스 커서를 놓습니다.
마찬가지로 김프 화면 왼쪽 하단의 좌표를 확인하고,
width = 오른쪽 하단의 x 좌표 - 왼쪽 상단의 x 좌표
height = 오른쪽 하단의 y 좌표 - 왼쪽 상단의 y 좌표
그렇다면 OK입니다.

결론



상기의 순서를 밟는 것으로 동영상의 한 구획의 잘라낼 수 있었습니다만,
잘라낸 동영상의 화질이 원래의 화질보다 낮다고 생각하는 것이 현재 난점입니다.

「더 잘 할 수 있겠지!」라고 하는 것이 있으면, 가르쳐 주실 수 있으면 기쁩니다.

좋은 웹페이지 즐겨찾기