시놀로지 동영상 H.264 인코딩 스크립트 (일부 수정 / 원본 화정큐삼님)
화정큐삼님께서 올려주신 HEVC 동영상을 H264로 변환하는 스크립트를 chatGPT에게 수정을 받았습니다.
원본 코드를 올리고 필요한 기능을 물어보니 정말 잘 수정해주더라구요.
- 원본 글
수정사항은 다음과 같습니다.
1. 메타데이터 유지 (촬영일자 등 시놀로지 포토 타임라인 유지)
2. 비트레이트 10K로 (갤럭시 S22 촬영 동영상 샘플들을 보고.. 대강 정했습니다)
3. 파일명은 뒤에 코덱명이 들어갔는데, 변환일자로 변경하였습니다.
notepad++에서 배쉬파일로 저장해서 업로드하고 터미널에서 실행해봤는데 잘 되는것 같습니다 :)
(EOL 옵션으로 UNIX 적용해주셔야 오류나지 않고 실행됩니다. 혹시 저처럼 모르는 분들 계실까 싶어서;;)
실행시 중간에 종료하는 방법이 없으므로 감안하여 실행하시고
코딩에는 까막눈이라 답변 받으면 실행해보고, GPT한테 다시 물어보고 한거라
틀린 부분이 있을 수 있습니다;;
코드 내 편집이 필요한 부분은 아래 작성해두었으니 참고 부탁드립니다.
저는 이걸 작업 스캐줄러에 등록해볼까 합니다만.. 잘 될지 모르겠네요;;ㅎㅎ
한가지 주의할 점은 hdr 영상은 hdr 정보가 제대로 적용 되는지 모르겠습니다;;
ffprobe? 라는 걸로 hdr 정보를 불러와야 하는데 오류가 나서 멈춰버리네요..
이걸 설정 안하면 hdr 영상이 있다면 sdr로 바뀌는 것 같습니다. 아마도..?
(s22 기준으로는 auto hdr 이 있어서 적용이 된 영상, 안된 영상이 있는 것 같습니다)
-----------------
#!/bin/bash
# 변환 대상 동영상이 있는 디렉토리 설정 - 변환할 폴더 경로로 수정하세요.
VIDEO_DIR="/volume1/homes/admin/Photos/test"
# 추출 및 변환 설정
#CODEC_IN="flac"
CODEC_OUT="libx264"
# 변환 작업 시작
echo "Start video conversion..."
# 공백을 기준으로 문자열을 분리하기 위해 IFS 설정
IFS=$'\n'
# 모든 동영상 파일에 대해서 반복
for file in $(find "$VIDEO_DIR" -type f \( -name "*.mkv" -o -name "*.mp4" -o -name "*.avi" \)); do
# Use the variables in the ffmpeg command
echo "Converting video of $file"
# ffmpeg 설치 볼륨 확인해주세요. (혹시 패키지를 볼륨2나 다른 볼륨에 저장하시면..)
# b:v 부분이 비트레이트입니다. 원하는 값으로 수정하세요.
/volume1/@appstore/ffmpeg/bin/ffmpeg -i "$file" \
-threads 3 \
-vcodec libx264 \
-vsync 2 \
-preset superfast \
-vprofile main \
-level 40 \
-pix_fmt yuv420p \
-b:v 8000k \
-acodec aac \
-ab 320k \
-ac 2 \
-ar 48000 \
-progress - \
-f mp4 \
-map_metadata 0 \
-map 0:0 \
-map 0:1 \
-y "${file%.*}"_"$(date +%y%m%d)".mp4 || { echo "Failed to convert video of $file"; continue; }
# 파일명 부분입니다. 필요한 형태로 변경해주세요.
# 원본 파일 삭제 및 교체 - 혹시 모르니 원본까지 삭제하실 분만 아래 두 줄을 주석 해제 해주세요.
# rm -f "$file"
# mv -f "${file%.*}"_"$(date +%y%m%d)".mp4 "$file"
echo
echo
sleep 2
done
echo "Video conversion finished."
cmt alert