-
본문으로 바로가기

예전에 동영상의 일부분을 자르고 쉽게 저장하는 방법을 안내 했다.

이번엔 ffmpeg 라는 프로그램을 가지고 동일한 코덱의 영상 2개를 쉽게 합치는 방법입니다.

ffmpeg는 그 프로그램의 깊이가 너무 심오해서, 한번 깊이 있게 들어가면 빠져나오기 어렵습니다 ㅎㅎ


2개 이상의 영상을 합치는 방법

1. ffmpeg 다운로드 및 압축 해제

2. 고급 시스템 설정 > 환경 변수에 ffmpeg 등록

3. ffmpeg 명령으로 영상 합치기


1. ffmpeg 다운로드 및 압축해제

다운로드 클릭

ffmpeg 다운로드 방법: 1. 버전 선택 > 2. 윈도/맥 비트 선택 > 3. Static 선택 > 4. Download Build 클릭

 

압축을 해제하고 폴더명이 보기 쉽게 변경하고, 설치 없이 바로 실행될 것이기때문에 적절한 곳으로 이동한다.

1 D:\ 에 ffmpeg 라는 폴더로 변경해서 압축을 해제했다.

 

2. 고급 시스템 설정 > 환경 변수에 ffmpeg 등록

① 윈도우키 + x y 클릭 -->  (관련 설정) 시스템 정보 클릭 --> 고급 시스템 설정 클릭 --> [고급] 환경 변수 클릭 --> 새로 만들기 클릭 --> 변수 이름에 FFMPEG, 변수 값에 앞의 경로+\bin 적용, 예: d:\ffmpeg\bin\

Windows 키 누르고 x, y를 순서대로 누르면 시스템 정보 창을 호출한다.
시스템(Y) 창에서 우측 관련 설정 1 시스템 정보를 클릭한다.
1. 고급 시스템 설정을 클릭한다.
1 환경변수 클릭, 사용자 계정의 2. path 클릭 후 3. 편집,
4. 찾아보기 클릭, 5, ffmpeg bin 폴더 선택 후 6 확인 7 목록에 ffmpeg bin 폴더 추가 확인 후 8 확인클릭, 위에 떠있는 창 다 확인해서 닫기 9, 10

 

3. ffmpeg 명령으로 영상 합치기

Windows 키 클릭 후, cmd 입력 엔터

명령 프롬프트 창에서 미디어 파일이 있는 폴더로 이동한다.

cd 입력 후 폴더 주소창을 드래그 드롭하면 쉽게 이동할 수 있다.

(단, C 드라이브가 아닌 D 드라이브 같은 경우 d:를 입력해줘야 한다.)

1 cd 입력 2 폴더 주소창 클릭 3 명령프롬프트 창에 4 드래그 드롭

1 폴더 이동 했는데 드라이브 안 바뀌었으면 2 드라이브 이동 3 dir /b 하여 파일을 조회해보고 4 dir /b > file.txt 라고 입력하여 조회한 내용을 file.txt로 저장함 5. 메모장으로 file.txt를 열고 6. file.txt 파일 내부에 파일명 앞에 file 을 붙여 주고 영상 순서를 정해준다. 7. ffmpeg 합치는 명령어를  예: ffmpeg -f concat -i file.txt -c copy 08_all.mp4 를 사용하면 다음과 같이 영상이 합쳐진다.

1 폴더 이동 했는데 드라이브 안 바뀌었으면 2 드라이브 이동 3 dir /b 하여 파일을 조회해보고 4 dir /b > file.txt 라고 입력하여 조회한 내용을 file.txt로 저장함 5. 메모장으로 file.txt를 열고 6. file.txt 파일 내부에 파일명 앞에 file 을 붙여 주고 영상 순서를 정해준다. 7. ffmpeg 합치는 명령어를 사용하면 다음과 같이 영상이 합쳐진다.

d:\media_files>ffmpeg -f concat -i file.txt -c copy 08_all.mp4
ffmpeg version git-2020-04-26-1128aa8 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 9.3.1 (GCC) 20200328
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
  libavutil      56. 43.100 / 56. 43.100
  libavcodec     58. 82.100 / 58. 82.100
  libavformat    58. 42.101 / 58. 42.101
  libavdevice    58.  9.103 / 58.  9.103
  libavfilter     7. 79.100 /  7. 79.100
  libswscale      5.  6.101 /  5.  6.101
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000023b2bad4f80] st: 0 edit list: 1 Missing key frame while searching for timestamp: 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000023b2bad4f80] st: 0 edit list 1 Cannot find an index entry before timestamp: 0.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000023b2bad4f80] Auto-inserting h264_mp4toannexb bitstream filter
Input #0, concat, from 'file.txt':
  Duration: N/A, start: 0.000000, bitrate: 906 kb/s
    Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv), 800x450 [SAR 1:1 DAR 16:9], 781 kb/s, 29.97 fps, 29.97 tbr, 29970 tbn, 59.94 tbc
    Metadata:
      creation_time   : 2016-08-29T15:41:20.000000Z
      handler_name    : Mainconcept MP4 Video Media Handler
      encoder         : AVC Coding
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s
    Metadata:
      creation_time   : 2016-08-29T15:41:20.000000Z
      handler_name    : Mainconcept MP4 Sound Media Handler
Output #0, mp4, to '08_all.mp4':
  Metadata:
    encoder         : Lavf58.42.101
    Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv), 800x450 [SAR 1:1 DAR 16:9], q=2-31, 781 kb/s, 29.97 fps, 29.97 tbr, 29970 tbn, 29970 tbc
    Metadata:
      creation_time   : 2016-08-29T15:41:20.000000Z
      handler_name    : Mainconcept MP4 Video Media Handler
      encoder         : AVC Coding
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s
    Metadata:
      creation_time   : 2016-08-29T15:41:20.000000Z
      handler_name    : Mainconcept MP4 Sound Media Handler
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000023b2badd800] st: 0 edit list: 1 Missing key frame while searching for timestamp: 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000023b2badd800] st: 0 edit list 1 Cannot find an index entry before timestamp: 0.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000023b2badd800] Auto-inserting h264_mp4toannexb bitstream filter
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000023b2c057400] st: 0 edit list: 1 Missing key frame while searching for timestamp: 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000023b2c057400] st: 0 edit list 1 Cannot find an index entry before timestamp: 0.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000023b2c057400] Auto-inserting h264_mp4toannexb bitstream filter
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000023b2c057400] st: 0 edit list: 1 Missing key frame while searching for timestamp: 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000023b2c057400] st: 0 edit list 1 Cannot find an index entry before timestamp: 0.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000023b2c057400] Auto-inserting h264_mp4toannexb bitstream filter
frame=113941 fps=13711 q=-1.0 Lsize=  427128kB time=01:03:21.96 bitrate= 920.3kbits/s speed= 458x
video:365110kB audio:58285kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.881734%

d:\media_files>

완료 입니다.

 


이상입니다.

퍼가기 하실때는 출처 꼭 같이 남겨주시면 감사하겠습니다.


출처: 코카티비, http://cocatv.tistory.com/262

반응형