글 순서
** 2024년 4월 : 내용 변경 및 추가함
ffmpeg 프로그램 설치
우선 ffmpeg 프로그램을 설치해야 합니다. 설치 방법은 운영체제에 따라서 다양한 방법이 있습니다.
리눅스
우선 리눅스를 사용한다면 apt-get을 이용해서 설치하면 됩니다.
<span class="line"><span style="color: #88C0D0">vividian@user:~$</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">sudo</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">apt-get</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">install</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">ffmpeg</span></span>
윈도우
윈도우의 경우에는 프로그램을 다운로드 받아 설치하거나, 패키지 매니저를 통해 설치해도 됩니다.
윈도우 패키지 매니저를 이용
윈도우11 에는 winget 이라는 마이크로소프트에서 제공하는 패키지 매니저가 있습니다. 윈도우키 + ‘R’ 키를 눌러 실행창을 띄우거나, 윈도우 검색창에서 “cmd” 를 검색하여 명령 프롬프트를 관리자 권한으로 실행합니다.
winget search ffmpeg 으로 패키지를 검색하고,
winget install Gyan.FFmpeg 으로 패키지를 설치합니다.
<span class="line"><span style="color: #88C0D0">C:\Users\vividian>winget</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">search</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">ffmpeg</span></span>
<span class="line"><span style="color: #88C0D0">이름</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">장치</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">ID</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">버전</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">일치</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">원본</span></span>
<span class="line"><span style="color: #88C0D0">-----------------------------------------------------------------------------------</span></span>
<span class="line"><span style="color: #88C0D0">FFmpeg</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">Gyan.FFmpeg</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #B48EAD">7.0</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">winget</span></span>
<span class="line"><span style="color: #88C0D0">Wav2Bar</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">Picorims.wav2bar</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #B48EAD">0.3</span>
<span style="color: #A3BE8C">.0</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">Tag:</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">ffmpeg</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">winget</span></span>
<span class="line"><span style="color: #88C0D0">y2mp3</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">moshfeu.y2mp3</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #B48EAD">2.5</span>
<span style="color: #A3BE8C">.9</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">Tag:</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">ffmpeg</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">winget</span></span>
<span class="line"><span style="color: #88C0D0">FFmpeg</span>
<span style="color: #D8DEE9FF"> (Shared) Gyan.FFmpeg.Shared 7.0 Tag: ffmpeg winget</span></span>
<span class="line"><span style="color: #88C0D0">FFmpeg</span>
<span style="color: #D8DEE9FF"> (Essentials </span>
<span style="color: #A3BE8C">Build</span>
<span style="color: #D8DEE9FF">) Gyan.FFmpeg.Essentials 7.0 Tag: ffmpeg winget</span></span>
<span class="line"><span style="color: #88C0D0">cyanrip</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">cyanreg.cyanrip</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #B48EAD">0.9</span>
<span style="color: #A3BE8C">.2</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">Tag:</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">ffmpeg</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">winget</span></span>
<span class="line"><span style="color: #88C0D0">FFmpeg</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">Batch</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">AV</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">Converter</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">eibol.FFmpegBatchAVConverter</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #B48EAD">2.8</span>
<span style="color: #A3BE8C">.1</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">winget</span></span>
<span class="line"><span style="color: #88C0D0">Videomass</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">GianlucaPernigotto.Videomass</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #B48EAD">3.5</span>
<span style="color: #A3BE8C">.8</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">Tag:</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">ffmpeg-gui</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">winget</span></span>
<span class="line"></span>
<span class="line"><span style="color: #88C0D0">C:\Users\vividian>winget</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">install</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">Gyan.FFmpeg</span></span>
<span class="line"><span style="color: #88C0D0">찾음</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">FFmpeg</span>
<span style="color: #D8DEE9FF"> [Gyan.FFmpeg] 버전 7.0</span></span>
<span class="line"><span style="color: #88C0D0">이</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">응용</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">프로그램의</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">라이선스는</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">그</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">소유자가</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">사용자에게</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">부여했습니다.</span></span>
<span class="line"><span style="color: #88C0D0">Microsoft는</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">타사</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">패키지에</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">대한</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">책임을</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">지지</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">않고</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">라이선스를</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">부여하지도</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">않습니다.</span></span>
<span class="line"><span style="color: #88C0D0">다운로드</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">중</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">https://github.com/GyanD/codexffmpeg/releases/download/7.0/ffmpeg-7.0-full_build.zip</span></span>
<span class="line"><span style="color: #D8DEE9FF"> </span>
<span style="color: #88C0D0">████████████▏</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #B48EAD">65.3</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">MB</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">/</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #B48EAD">160</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">MB</span></span>
Scoop 패키지 매니저를 사용
scoop을 이용한다면, scoop install ffmpeg 명령어를 입력하여 간단하게 ffmpeg을 설치할 수 있습니다.
<span class="line"><span style="color: #88C0D0">C:\Users\vividian></span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">scoop</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">install</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">ffmpeg</span></span>
<span class="line"><span style="color: #88C0D0">Updating</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">Scoop...</span></span>
<span class="line"><span style="color: #88C0D0">Installing</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #ECEFF4">'</span>
<span style="color: #A3BE8C">ffmpeg</span>
<span style="color: #ECEFF4">'</span>
<span style="color: #D8DEE9FF"> (5.0) </span>
<span style="color: #ECEFF4">[</span>
<span style="color: #B48EAD">64</span>
<span style="color: #D8DEE9FF">bit</span>
<span style="color: #ECEFF4">]</span></span>
<span class="line"><span style="color: #88C0D0">ffmpeg-5.0-full_build.7z</span>
<span style="color: #D8DEE9FF"> (41.7 </span>
<span style="color: #A3BE8C">MB</span>
<span style="color: #D8DEE9FF">) </span>
<span style="color: #ECEFF4">[</span>
<span style="color: #81A1C1">==========================================================================</span>
<span style="color: #ECEFF4">]</span>
<span style="color: #D8DEE9FF"> 100%</span></span>
<span class="line"><span style="color: #88C0D0">Checking</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">hash</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">of</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">ffmpeg-5.0-full_build.7z</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">...</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">ok.</span></span>
<span class="line"><span style="color: #88C0D0">Extracting</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">ffmpeg-5.0-full_build.7z</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">...</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">done.</span></span>
<span class="line"><span style="color: #88C0D0">Linking</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">~</span>
<span style="color: #EBCB8B">\S</span>
<span style="color: #A3BE8C">coop</span>
<span style="color: #EBCB8B">\a</span>
<span style="color: #A3BE8C">pps</span>
<span style="color: #EBCB8B">\f</span>
<span style="color: #A3BE8C">fmpeg</span>
<span style="color: #EBCB8B">\c</span>
<span style="color: #A3BE8C">urrent</span>
<span style="color: #D8DEE9FF"> =</span>
<span style="color: #81A1C1">></span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">~</span>
<span style="color: #EBCB8B">\S</span>
<span style="color: #A3BE8C">coop</span>
<span style="color: #EBCB8B">\a</span>
<span style="color: #A3BE8C">pps</span>
<span style="color: #EBCB8B">\f</span>
<span style="color: #A3BE8C">fmpeg</span>
<span style="color: #EBCB8B">\5</span>
<span style="color: #A3BE8C">.0</span></span>
<span class="line"><span style="color: #88C0D0">Creating</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">shim</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">for</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #ECEFF4">'</span>
<span style="color: #A3BE8C">ffmpeg</span>
<span style="color: #ECEFF4">'</span>
<span style="color: #A3BE8C">.</span></span>
<span class="line"><span style="color: #88C0D0">Creating</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">shim</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">for</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #ECEFF4">'</span>
<span style="color: #A3BE8C">ffplay</span>
<span style="color: #ECEFF4">'</span>
<span style="color: #A3BE8C">.</span></span>
<span class="line"><span style="color: #88C0D0">Creating</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">shim</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">for</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #ECEFF4">'</span>
<span style="color: #A3BE8C">ffprobe</span>
<span style="color: #ECEFF4">'</span>
<span style="color: #A3BE8C">.</span></span>
<span class="line"><span style="color: #88C0D0">Running</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">post-install</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">script...</span></span>
<span class="line"><span style="color: #88C0D0">'ffmpeg'</span>
<span style="color: #D8DEE9FF"> (5.0) was installed successfully</span>
<span style="color: #81A1C1">!</span></span>
직접 사이트에 방문 설치
직접 사이트에 방문하여, ffmpeg 을 빌드한 파일을 통해 설치할 수 있습니다. 아래 링크의 사이트를 방문합니다.
윈도우 버튼을 클릭하면 Windows builds form gyan.dev 를 클릭합니다.
이동한 사이트에서 release builds 메뉴를 선택하고, ffmpeg-release-essentials.zip 파일 다운로드 받습니다.


그러면 이제 ffmpeg 을 사용할 준비가 되었습니다.
.m3u8 파일에서 url 확인
m3u8 파일을 mp4로 변환하려면, m3u8 파일에 포함되어 있는 url 주소를 확인해야 합니다.
크롬 브라우저를 실행하고, F12 버튼 누르면, 개발자 모드가 뜹니다.
m3u8 파일을 플레이 시키고, 개발자 모드 화면의 Network > Filter > All 로 이동합니다.
Name 영역에 .m3u8 파일을 선택합니다.
오른쪽 화면에 Header > General > Request URL 에서 URL 을 복사하면 됩니다.
URL 은 http://주소/파일명.m3u8 으로 되어 있습니다.

mp4로 변환
m3u8 의 url 을 확인했으니, 이제 mp4로 변환하면 됩니다.
윈도우에서 cmd를 실행하고, ffmpeg 명령어를 아래와 같이 입력합니다.
scoop 이나 winget 으로 설치한 경우에는 자동으로 경로가 지정되어 있지만, 사이트에서 직접 다운로드 받은 경우에는 ffmpeg 압축을 풀고, 해당 위치에서 실행하셔야 합니다.
<span class="line"><span style="color: #88C0D0">ex</span>
<span style="color: #D8DEE9FF">) ffmpeg -i </span>
<span style="color: #81A1C1"><</span>
<span style="color: #D8DEE9FF">URL입력</span>
<span style="color: #81A1C1">></span>
<span style="color: #D8DEE9FF"> -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 </span>
<span style="color: #81A1C1"><</span>
<span style="color: #D8DEE9FF">저장할 파일명</span>
<span style="color: #81A1C1">></span></span>
<span class="line"><span style="color: #88C0D0">C:\Users\vividian></span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">ffmpeg</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">-i</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">http://test.com/test.m3u8</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">-bsf:a</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">aac_adtstoasc</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">-vcodec</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">copy</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">-c</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">copy</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">-crf</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #B48EAD">50</span>
<span style="color: #D8DEE9FF"> </span>
<span style="color: #A3BE8C">file.mp4</span></span>
위와 같이 입력하면 m3u8에 정의된 조각난 동영상 파일들을 읽어 들여 mp4 파일 하나로 합쳐줍니다.

참고
- ffmepg 다운로드 사이트: http://ffmepg.org/download.html
- ffmepg 옵션 설명: https://ffmpeg.org/ffmpeg.htm