폴더 내 video의 frame을 잘라내는 방법

폴더 내의 video(.mp4)들을 읽어와서
총 프레임을 계산하고 특정 프레임 이상으로 카운트되면
그 이상부터는 잘라버리고, 불러온 Video를 새로 저장하는 방법이 있을까요?

저는 CV 작업을 거의 해보지는 않았는데, 어쩌다보니 최근에 비슷한걸 진행해봤습니다 ㅎㅎ

OpenCV의 Python wrapper를 사용했고요,
OpenCV로 영상을 불러오면 전체 프레임이나 FPS 등도 바로 가져올 수 있더라고요! :smiley:

pip install opencv-python
>>> import cv2
>>>
>>> video = cv2.VideoCapture('./001e0f4d661ef6c069c2b7163f56e676.mp4')
>>> if not video.isOpened():
...   print("Cannot open video")
...
>>> print('Video resolution [width x height]: [{}x{}]'.format(
...     video.get(cv2.CAP_PROP_FRAME_WIDTH), video.get(cv2.CAP_PROP_FRAME_HEIGHT)
...     ))
Video resolution [width x height]: [168.0x300.0]
>>> print('Frame per second(FPS): {}, Total frames: {}, Duration: {}sec'.format(
...     video.get(cv2.CAP_PROP_FPS), video.get(cv2.CAP_PROP_FRAME_COUNT),
...     video.get(cv2.CAP_PROP_FRAME_COUNT) / video.get(cv2.CAP_PROP_FPS)
... ))
Frame per second(FPS): 14.285714285714286, Total frames: 124.0, Duration: 8.68sec
>>>
>>> res, frame = video.read()
>>> if not res:
...   print("Cannot read video")
...
>>> print(frame.shape) # [h, w, c]
(300, 168, 3)
>>>
>>> # cv2.imshow(frame)

다만 저는 영상에서 프레임을 일정 단위로만 추출하는 것만 해보고, 특정 프레임 이상은 잘라버리는 것은 안해봤는데요 :sweat_smile:

원하시는만큼 해당 프레임들을 불러와서 새로 영상을 만드셔도 될 것 같고, 아니면 다른 library를 사용하시는 것도 방법 일 것 같습니다!

python trim video by frame 같은 키워드로 검색해보니까, OpenCV를 쓰는 방법도 나오고 다른 방법도 많이 나오네요 ㅎㅎ

대략 참고하실만한 링크를 몇 개 줏어왔습니다! ㅎㅎ

성공하시면 후기 부탁드립니다~ :smiley:

2개의 좋아요

아, 위 영상은 요거였습니다. 귀여운 댕댕이 보고 가세요!!

1개의 좋아요

아직 배움이 많이 부족한 학생인데, 늘 이렇게 정성스레 코멘트 주셔서 정말 감사드립니다.
많은 도움이 되었습니다.

말씀 주신대로 성공하면 후기로 돌아오겠습니다 ! ㅎ
좋은 하루 되시길 바랍니다. :slight_smile:

1개의 좋아요

네네, 저보다 더 잘하시는 분들이 많아서 가끔은 뭔가 부끄럽지만;;

그래도 제가 먼저 경험해봤던걸 나누고, 또 제가 경험해보지 못한걸 도움 받으면서 함께 성장하는게 재밌을 것 같습니다! :wink:

앞으로도 종종 들려서 질문도 경험도 나눠주세요~

1개의 좋아요

이 글은 마지막 댓글이 달린지 오래(7일)되어 자동으로 닫혔습니다. 댓글 대신 새로운 글을 작성해주세요! :slight_smile: