본문 바로가기

프로그래밍/기타

[ffmpeg] 오디오, 비디오 코덱 변환

 

avi를 mp4 로 변경

ffmpeg -i input.avi -c:v copy -c:a copy outpu.mp4

 

avi 파일(mpeg4, mp3) 을 mp4(mp4v, mp4a) 로 변경

ffmpeg -i input.avi -c:v copy -c:a aac output.mp4

 

avi 를 mov로 변경

ffmpeg -i input.avi -c:v libx264 -c:a aac output.mov

 

mov를 gif로 변경

ffmpeg -i input.mov -ss 0 -t 5 -loop 0 -filter_complex "fps=10, scale=1024:-1[s], [s]split[a][b]; [a]palettegen[palette]; [b][palette]paletteuse" output.gif

 

wmv를  mp4로 변경

ffmpeg -i input.wmv -c:v livx264 -preset medium -crf 22 -c:a aac output.mp4

 

x265

ffmpeg -i input.mp4 -c:v libx265 -vtag hvc1 output.mp4

 

비디오 사이즈변경

ffmpeg -i input.mp4 -vf scale=1920:1080 -c:a copy output.mp4

 

메타데이터

ffmpeg -i in.mp4 -c copy -map_metadata 0 -map_metadata:s:v 0:s:v -map_metadata:s:a 0:s:a -f ffmetadata in.txt

 

 

파일변경 및 날짜 처리

ffmpeg으로 x265 포맷으로 트랜스코딩하고, exiftool을 사용해 미디어 생성일을 수정

#!/bin/bash
if [ ! -f "$1" ]; then
    echo "file not exist"
    exit 0
fi

DATE=$(date -r $1 +"%Y:%m:%d %H:%M:%S+09:00")
read -e -p "date($DATE): " input
if [ -z "$input" ]; then
    input=$DATE
fi
DATE=$input
ffmpeg -i ./$1 -c libx265 -vtag hvc1 -c:a aac -filter:v fps=30 ./$2
exiftool -CreateDate="$DATE" -ModifyDate="$DATE" -DateTimeOriginal="$DATE" -overwrite_original ./$2

 

폴더내 특정 파일들 일괄 변환

#!/bin/bash
INDEX=0
PREV_DATE=""

FILES=$(find . -maxdepth 1 -name "*MP4" | sort)

for file in $FILES
do
   echo "file: $file"
    if [ -f $file ]
    then
        DATE=$(date -r $file +"%Y%m%d")
        DATE_TIME=$(date -r $file +"%Y:%m:%d %H:%M:%S+09:00")

        if [ $PREV_DATE = $DATE ]
        then
            INDEX=$(($INDEX+1))
        else
            INDEX=1
        fi

        OUTPUT="$DATE"_"$INDEX".mp4
        PREV_DATE="$DATE"

        echo "Date: $DATE"
        echo "Out: $OUTPUT"
        
        ffmpeg -i $file -c libx265 -vtag hvc1 -c:a aac -filter:v fps=30 ./$OUTPUT
        exiftool -CreateDate="$DATE_TIME" -ModifyDate="$DATE_TIME" -DateTimeOriginal="$DATE_TIME" -overwrite_original ./$OUTPUT
    fi

    echo
done

'프로그래밍 > 기타' 카테고리의 다른 글

github ssh 설정  (0) 2022.09.02
[Python] 직접 실행과 import 시 실행 분리  (0) 2020.05.10
[git] git 주요 명령 목록  (0) 2018.09.20
[git] git 서버 설정 기본사항  (0) 2017.01.23