FFmpeg 파이썬 래퍼를 사용한 간단한 미디어 압축기
FFmpeg를 사용하여 미디어를 인코딩합니다.
느리지만 압축률이 높은 preset을 설정하여 CPU 사용량이 매우 높지만, 높은 압축률로 미디어를 인코딩할 수 있습니다.
해당 프로젝트는 FFmpeg를 잘 알지 못해도 사용할 수 있도록 개발되었습니다.
ubuntu 20.04 서버, windows 11 에서 테스트 되었습니다.
- 퀄리티 값 (crf) (값의 범위 0 ~ 51, 0 = 무손실, 51 = 최악의 품질) (기본값 = [h.264 = 23, h.265 = 28])
- 코덱 (h.264, h.265)
- 세로 픽셀 수 (가로는 비율에 맞게 자동 조절) (기본값 = 1440)
- 하드웨어 가속 디코딩 (cuda만 지원)
미디어의 "video 또는 audio가 아닌 스트림 (자막, 챕터 등)" 또는 "메타데이터"가 제거될 수 있습니다.
썸네일 이미지가 제거됩니다.
미디어의 Comment 메타데이터 마지막 부분에 다음의 정보가 기록됩니다.
- 프로젝트 테그 헤더 (이미 압축 처리가 되었는가 판단용으로 사용됨)
- 해당 프로젝트 메타데이터 버전
- 입력파일의 크기
- 입력파일의 MD5 해시 정보
- 인코딩 날짜
pip install git+https://github.com/Cardroid/PyMediaCompressor.git encode -h usage: encode [-h] -i INPUT [-o OUTPUT] [-r] [-p] [-e{overwrite,skip,numbering}] [--sort_mode] [-s] [-f] [--res_force] [-c{h.264,h.265}] [--crf{-1~51}] [--scan] [--height HEIGHT] [--cuda] [--log-level{debug,info,warning,error,critical}] [--log-mode{c,f,cf,console,file,consolefile}] [--log-path LOG_PATH] 미디어를 압축 인코딩합니다. optional arguments: -h, --help show this help message and exit -i INPUT 하나 이상의 입력 소스 파일 및 디렉토리 경로 또는, .list 파일(파일의 경로 모음, 줄바꿈으로 구분) 경로 -o OUTPUT 출력 디렉토리 경로 -r, --replace 원본 파일보다 작을 경우, 원본 파일을 덮어씁니다. 아닐 경우, 출력파일이 삭제됩니다. -p, --size_skip 빠른 작업을 위해 인코딩 도중 출력파일 크기가 입력파일 크기보다 커지는 순간 즉시 건너뜁니다. -e{overwrite,skip,numbering}, --already_exists_mode{overwrite,skip,numbering} 출력 폴더에 같은 이름의 파일이 있을 경우, 사용할 모드. --sort_mode 파일 사이즈 정렬 옵션 (on = 내림차순, reverse = 오름차순) -s, --save_error_output 오류가 발생한 출력물을 제거하지 않습니다. -f, --force 이미 압축된 미디어 파일을 강제로, 재압축합니다. --res_force 이미 처리된 파일도 해상도가 더 크다면 강제로 재인코딩합니다. (기본값: False, 해상도가 더 작거나 같은 경우에는 재인코딩하지 않음) -c{h.264,h.265}, --codec{h.264,h.265} 인코더에 전달되는 비디오 코덱 옵션 --crf{-1~51} 인코더에 전달되는 crf 값 (-1을 입력하면 코덱에 따라 기본값이 자동으로 계산됩니다.) [h.264 = 23, h.265 = 28] --scan 해당 옵션을 사용하면, 입력 파일을 탐색하고, 실제 압축은 하지 않습니다. --height HEIGHT 출력 비디오 스트림의 최대 세로 픽셀 수를 설정합니다. (가로 픽셀 수는 비율에 맞게 자동으로 계산됨) --cuda CUDA 그래픽카드를 사용하여 소스 파일을 디코드합니다. --log-level{debug,info,warning,error,critical} 로그 레벨 설정 --log-mode{c,f,cf,console,file,consolefile} 로그 출력 모드 --log-path LOG_PATH 로그 출력 경로 - 인코딩 후 스트림 무결성 검사