ffmpeg를 이용해서 여러개로 쪼개어진 촬영한 영상 파일이나 영화파일들을 트랜스코딩 없이 하나로 합칠 수 있는 한 줄의 명령어이다.
macos의 경우 FreeBSD의 find를 사용하기 때문에 -printf 옵션과 같은 다양한 옵션들을 지원하지 않아서 사용할 수 없다.
따라서 먼저 brew를 이용해 GNU findutils를 설치해야 한다.
brew install findutils
터미널에서 원하는 폴더로 이동한 뒤 아래의 명령을 입력하면 폴더 안에 있는 여러개의 동영상들을 하나의 파일로 합칠 수 있으며 결과물의 파일명은 폴더명으로 생성된다.
printf ${PWD##*/}.mp4 | xargs -0 -I {} ffmpeg -safe 0 -f concat -i <(gfind . -type f -name '*.mp4' -printf "file '$PWD/%p'\n" | sort) -c copy {}
macos에서 samba share로 공유된 네트워크 폴더에서 작업할 경우 dotfile로 인해 명령을 실행할 때 오류가 날 수 있으니 아래와 같은 명령으로 dotfile을 제거 후 명령을 실행 할 수 있고 원본파일명의 패턴을 이용해 합친 후 원본파일을 제거할 수 있다.
rm ./._* ; printf ${PWD##*/}.mp4 | xargs -0 -I {} ffmpeg -safe 0 -f concat -i <(gfind . -type f -name '*.mp4' -printf "file '$PWD/%p'\n" | sort) -c copy {} && rm ./*hevc.mp4