반응형
ffmpeg-python은 FFmpeg을 Python에서 사용할 수 있게 하는 파이썬 래퍼(Wrapper) 라이브러리입니다. FFmpeg은 다양한 멀티미디어 작업을 수행할 수 있는 강력한 오픈 소스 멀티미디어 프레임워크로, 오디오 및 비디오 파일의 변환, 편집, 스트리밍 등 다양한 작업을 지원합니다.
ffmpeg-python은 FFmpeg의 기능을 파이썬 코드로 쉽게 사용할 수 있도록 도와줍니다. 이 라이브러리를 사용하면 명령 줄 인터페이스를 직접 사용하지 않고도 Python 코드를 통해 간단하게 멀티미디어 작업을 자동화할 수 있습니다.
https://github.com/kkroening/ffmpeg-python
ffmpeg은 설치되어 있어야 합니다.
https://yongeekd01.tistory.com/29
Python 패키지 관리자 도구인 pip를 사용하여 ffmpeg-python 패키지를 설치합니다.
> pip3 installffmpeg-python
ffmpeg으로 할 수 있는일 은 수도 없이 많지만 여기서는 몇가지 사용 예제만 테스트 해보겠습니다.
물론 filter 들은 동시에 여러개를 사용해도 상관 없습니다.
import ffmpeg
#중앙 크롭
def crop_video(input, output) :
ffmpeg.input(input).output(output, vf='crop=320:240').run()
#확장자로 자동 변경
def format_video(input, output) :
(
ffmpeg
.input(input)
.output(output)
.run()
)
#시작위치 및 시간으로 잘라내기
def trim_video(input, output, start, duration):
(
ffmpeg
.input(input, ss=start, t=duration)
.output(output)
.run()
)
#동일한 이름의 파일이 있으면 엎어쓰기
def overwrite_video(video_path, output, start, duration):
(
ffmpeg
.input(video_path, ss=start, t=duration)
.output(output, y='-y')
.run(overwrite_output=True)
)
#프레임 모두 저장
def extract_frame(input, output_folder):
(
ffmpeg
.input(input)
.output(output_folder + 'frame_%04d.png')
.run()
)
# 새로운 resolution으로 사이즈 변경
def rescale_video(video_path, output, width, height) :
(
ffmpeg
.input(video_path)
.filter('scale', width, height)
.output(output, format='mp4', pix_fmt='rgb24')
.run()
)
# 비디오 1초당 프레임 수 변경
def fps_video(video_path, output, newfps) :
(
ffmpeg
.input(video_path)
.filter('fps', fps=newfps)
.output(output, format='mp4', pix_fmt='rgb24')
.run()
)
#비디오 정보 가져오기
def get_size_info(input) :
probe = ffmpeg.probe(input) # 입력 파일의 정보를 가져옴
video_stream = next((stream for stream in probe['streams']
if stream['codec_type'] == 'video'), None) # 비디오 스트림 정보를 가져옴
width = int(video_stream['width']) # 비디오의 가로 크기를 가져옴
height = int(video_stream['height']) # 비디오의 세로 크기를 가져옴
print(f"video resolution : {width} x {height}")
return height, width
#테스트
if __name__ == '__main__':
crop_video('myVideo.TS', 'myVideo.crop.TS')
format_video('myVideo.TS', 'myVideo.crop.mp4')
trim_video('myVideo.TS', 'myVideo.cut.ts', "00:00:05", "00:00:03")
overwrite_video('myVideo.TS', 'myVideo.cut.ts', "00:00:05", "00:00:03")
extract_frame('myVideo.TS','frames')
get_size_info('myVideo.TS')
rescale_video('myVideo.TS', 'myVideo_rescale.mp4', 1280, 720 )
fps_video('myVideo.TS', 'myVideo_fps10.mp4', 10)
유용하게 사용할 수 있습니다. ^^
반응형
'IT > 개발' 카테고리의 다른 글
youtube 컨텐츠 다운로드 하여 일부분만 저장하기(python, pytube, moviepy) (0) | 2024.03.20 |
---|---|
파이썬으로 날자별로 생성되는 로그 파일 만들기(logging 모듈) (0) | 2024.03.14 |
chatGPT-4를 이용한 이미지 해석(Image Description, gpt-4-vision) (0) | 2023.11.28 |
DALLI-E 모델을 이용한 이미지 수정 및 유사이미지 만들기(chatGPT, OpenAI API) (0) | 2023.11.28 |
chatGPT, OpenAI API, DALLI-E 모델을 이용한 이미지 생성 기초 (0) | 2023.11.28 |