타임랩스 동영상을 ffmpeg로 만들기

4339 단어 도커ffmpeg

TL;DR


  • 타임랩스 동영상(특정 시간 간격으로 꺼낸 이미지로 만드는 컷 떨어지는 동영상)을 ffmpeg로 만드는 방법을 소개합니다.
  • ffmpeg는 GPU(NVEnc) 대응 FFmpeg의 휴대용 Dockerfile로 만든 컨테이너 기반 명령으로 실행됩니다 (GPU가 없어도 움직입니다)


  • 작성 절차


  • 동영상을 일정 시간마다 잘라낸 이미지 그룹을 생성합니다
  • 이미지 그룹을 결합하여 새로운 동영상 (타임랩스 동영상) 만들기

  • 실행


  • 샘플 동영상은 Pixabay의 동영상을 사용했습니다 (Coverr-Free-Footage님 감사)

  • 사람-상거래-가게-바쁜-6387 720p (60fps) 동영상을 People6387.mp4로 다운로드했습니다.


  • 동영상에서 프레임 삭제 이미지를 만듭니다.


  • 입력 동영상에서 컷 떨어진 이미지 그룹을 생성합니다
  • mkdir out
    docker run --rm \
        -v ${PWD}:/tmp/ \
        ffmpeg-docker:latest \
        -r 60 -stats -i /tmp/People6387.mp4 \
        -r 15 /tmp/out/out_%04d.png
    
  • 명령 설명
  • ffmpeg-docker:latest : GPU(NVEnc) 대응 FFmpeg의 휴대용 Dockerfile로 만든 ffmpeg 컨테이너
  • -r 60 : 입력 파일을 60fps로 취급
  • -r 15 /tmp/out/out_%04d.jpg :
  • 동영상에서 이미지를 15 프레임마다 잘라냅니다
  • 일련 번호 파일 out_0001.jpg 등의 이름으로 out 디렉토리 이하에 출력합니다


  • 실행이 완료되면 다음과 같이 많은 프레임 이미지가 생성됩니다.



  • 컷 드롭 이미지를 결합하여 타임랩스 동영상 생성


  • 컷 이미지를 결합하여 타임랩스 동영상을 생성합니다.
  • 이전 섹션의 뒤에 out 디렉토리에 일련 번호 파일이 작성되었다고 가정합니다
  • .

    docker run --rm \
        -v ${PWD}:/tmp/ \
        ffmpeg-docker:latest \
        -i /tmp/out/out_%04d.png \
        -vcodec libx264 -pix_fmt yuv420p \
        -r 60 /tmp/output.mp4
    
  • 명령 설명
  • -i /tmp/out/out_%04d.png : 입력 파일을 60fps로 취급
  • -r 15 /tmp/out/out_%04d.jpg : 프레임 삭제 이미지의 파일 이름 패턴 지정
  • -vcodec libx264 -pix_fmt yuv420p : H.264 동영상 생성
  • -r 60 /tmp/output.mp4 : output.mp4 파일 이름으로 60fps 동영상 만들기

  • 실행이 완료되면 실행 디렉토리에 output.mp4가 만들어집니다.
  • 이 output.mp4가 원래 People6387.mp4의 동영상을 4컷 떨어진 동영상이 되고 있습니다.



  • 위의 컷 떨어지는 동영상은 FFmpeg로 동영상을 GIF로 변환을 참고로 작성한 mp4 파일을 애니메이션 gif로 변환한 것입니다.

  • 참고


  • GPU(NVEnc) 대응 FFmpeg의 휴대용 Dockerfile

  • Pixabay
  • 사람-상거래-가게-바쁜-6387

  • FFmpeg로 동영상을 GIF로 변환
  • 좋은 웹페이지 즐겨찾기