이번에는 shell script(bash) 와 ffmpeg를 이용해 video resampling을 하는 법에 대해서 설명하겠습니다.
shell script의 경우 명령어로 한 폴더에 있는 모든 비디오에 대해 ffmpeg를 적용 시키기 위해 사용했으며, 명령어를 모아서 실행시킬 수 있는 파일이라고 생각하면 됩니다.
ffmpeg의 경우 간단한 video 편집기 입니다. 물론 영상을 자르거나 할 수 있지만 저는 fps 수정을 위해서 사용한거라 거기에 대해서는 설명하지 않겠습니다.
#!/bin/sh
INPUT_DIR=INPUT_VIDEOs_FOLDER_PATH
BASE_DIR=SAVE_VIDEOS_FOLDEL_PATH
OUTPUT_DIR=$BASE_DIR/Resampling_24
OUTPUT_DIR2=$BASE_DIR/Resampling_16
FILES=$(ls $INPUT_DIR | grep .mp4)
for FILE in $FILES
do
name='basename $FILE'
FILENAME="${FILE%.*}"
ffmpeg -i $INPUT_DIR/$FILE -r 24 -c:v libx264 -b:v 3M -strict -2 $OUTPUT_DIR/$FILENAME.mp4
ffmpeg -i $INPUT_DIR/$FILE -r 16 -c:v libx264 -b:v 3M -strict -2 $OUTPUT_DIR2/$FILENAME.mp4
done
실행방법
위의 내용을 복붙해서 xxx.sh로 저장하고 chmod 777 xxx.sh로 할당해주고 ./xxx.sh
명령어를 입력하면 됩니다.
설명
차근 차근 설명하겠습니다.
INPUT_DIR=INPUT_VIDEOs_FOLDER_PATH
위의 명령어는 동영상들이 모여있는 폴더의 PATH를 설정합니다.
BASE_DIR=SAVE_VIDEOS_FOLDEL_PATH
OUTPUT_DIR=$BASE_DIR/Resampling_24
OUTPUT_DIR2=$BASE_DIR/Resampling_16
위의 명령어 또한 PATH를 설정하는 명령어 입니다. 저 같은 경우 기존의 동영상을 24 FPS와 16 FPS로 설정하고 싶어 이렇게 했습니다.
FILES=$(ls $INPUT_DIR | grep .mp4)
위의 명령어는 동영상들이 모여있는 폴더에서 MP4 형식의 동영상을 찾고 경로를 저장하는 것입니다. 즉, FILES 안에는
A.mp4
b.mp4 ...
처럼 저장되어 있습니다.
for FILE in $FILES
do
done
위의 명령어는 프로그래밍 언어에서 for 반복문과 같다고 생각하시면 됩니다. (python의 for i in list
)
name='basename $FILE'
FILENAME="${FILE%.*}"
위의 명령어는 파일 이름으로 파일을 설정해주는 부분입니다.
마지막으로...ffmpeg -i $INPUT_DIR/$FILE -r 24 -c:v libx264 -b:v 3M $OUTPUT_DIR/$FILENAME.mp4
ffmpeg -i $INPUT_DIR/$FILE -r 16 -c:v libx264 -b:v 3M $OUTPUT_DIR2/$FILENAME.mp4
위의 명령어는 ffmpeg를 사용하는 부분입니다.
-i : 입력 파일
-r : fps 설정
-c:v : 코덱 설정. 저는 H.264 코덱으로 설정했습니다.
-b:v : bitrate 설정.
OUTPUT.. : 저장할 장소 및 파일 이름 설정.
ffmpeg에서는 자신에게 맡게 customizing 하면 됩니다.
참고 자료
'공부 > Linux' 카테고리의 다른 글
[Linux] 압축 풀기 (0) | 2019.08.21 |
---|---|
[Linux] 디스크 용량 확인 방법 (0) | 2019.07.31 |
[Linux] 특정 파일 개수 세기 (0) | 2019.07.31 |