본문 바로가기
공부공부/2023 쌓여가는 나의 지식~

ffmpeg를 이용한 영상 전송/ 변환 (windows/Linux)

by Lee_story_.. 2023. 9. 18.
728x90

 

 

 

FFmpeg

Converting video and audio has never been so easy. $ ffmpeg -i input.mp4 output.avi     News May 31st, 2023, Vulkan decoding A few days ago, Vulkan-powered decoding hardware acceleration code was merged into the codebase. This is the first vendor-generic

ffmpeg.org

 

 

FFmpeg란

음성/ 영상 정보에 대해 거의 모든 처리를 도와주는 프로그램으로

각종  디코딩, 인코딩을 지원하여 특정 코덱에 대해 설치하지 않아도 되고, 이를 통해 영상 변환, 전송 등의 기능을 제공하는 편리한 프로그램!

 

 

저는 영상 전송에 대해서만 사용해 보려고 찾아봤는데 생각보다 많은 기능들이 존재했습니다.그만큼 라이브러리/소스코드가 방대하기에 오픈소스임에도 직접적으로 사용하기에는 무리인듯 합니다. 

 

하지만 소스를 직접 사용하지 못해도 기능에 대해서는 쉽게 사용할 수 있도록 되어있어 사용하는데에는 무리가 없었습니다. 

 

 

 

 


그럼 시작!

 

설치및 세팅은 생각보다 간단했습니다. 

 

 

<Linux>

리눅스의 경우에는

 

아래 두 명령어로 설치가 가능합니다. 

sudo apt update
sudo apt install ffmpeg

 

 

설치가 끝난다면

ffmpeg -version

 

 

버전을 확인하여 줍시다.

ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)
configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
libavutil      56. 70.100 / 56. 70.100
libavcodec     58.134.100 / 58.134.100
libavformat    58. 76.100 / 58. 76.100
libavdevice    58. 13.100 / 58. 13.100
libavfilter     7.110.100 /  7.110.100
libswscale      5.  9.100 /  5.  9.100
libswresample   3.  9.100 /  3.  9.100
libpostproc    55.  9.100 / 55.  9.100

 

설치끝!

 

 

 

 

<Windows>

윈도에서는 조금 더 복잡하지만 시작!

 

윈도우는 따로 파일을 받아야 합니다. 아래로 들어가서

 

Download FFmpeg

If you find FFmpeg useful, you are welcome to contribute by donating. More downloading options Git Repositories Since FFmpeg is developed with Git, multiple repositories from developers and groups of developers are available. Release Verification All FFmpe

ffmpeg.org

 

 

gyan.dev 클릭!

 

여기서  ffmpeg-git-full.7z을 다운로드하여 줍시다.

 

이제 압축을 해제해주고

bin폴더에 가면

 

아래와 같은 exe파일들이 있는 걸 확인해 줍시다.

 

 

다음 마지막으로 환경변수를 설정해 줍시다.

ffmpeg의 폴더를 원하는 위치로 이동시켜 주고

 

시스템 변수 >> path 클릭

'

 

새로 만들기에서 방금 확인한 bin폴더를 추가해 주면 끝!

 

이제 버전확인을 해주고

ffmpeg -version

 

아래처럼 나오면 끝!

ffmpeg version 6.0-full_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12.2.0 (Rev10, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
libavutil      58.  2.100 / 58.  2.100
libavcodec     60.  3.100 / 60.  3.100
libavformat    60.  3.100 / 60.  3.100
libavdevice    60.  1.100 / 60.  1.100
libavfilter     9.  3.100 /  9.  3.100
libswscale      7.  1.100 /  7.  1.100
libswresample   4. 10.100 /  4. 10.100
libpostproc    57.  1.100 / 57.  1.100

 

 

 

기본적으로 리눅스에서 개발된 라이브러리이기에 조금의 과정이 더 필요했지만 윈도우에서도 쉽게 설치가 끝났습니다. 

 

 

 

 


 

이제 기본적인 ffmpeg의 사용법을 알아보면

 

 

- mp4 영상을 avi로 변환

ffmpeg -i input.mp4 output.avi

 

- 해상도를 변경해 저장

ffmpeg -i input.mp4 -s 1280x720 -c:a copy output.mp4

 

 

- 비트레이트를 변경하여 저장

ffmpeg -i input.mp4 -b:v 1000k -b:a 128k output.mp4

 

- 원본 (input) 영상의 1분~2분 까지를 잘라 저장   >> 매우 유

ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:00 -c:v copy -c:a copy output.mp4

 

 

이렇게 영상을 수정, 편집하는 기능도 존재하고

 

 

영상을 받아줄 서버가 존재한다면 아래처럼 전송해 줄 수도 있습니다. 

 ffmpeg -re -i input.mp4 -c:v libx264 -preset medium -b:v 8000k -f flv rtmp://192.168.1.19/live/cam1
-re:
실시간 속도로 입력 파일을 읽습니다.

-c:v libx264:
비디오 코덱으로 H.264 (libx264)를 사용합니다.

-preset medium:
H.264 압축 프리셋을 설정합니다. 

-b:v 8000k:
비디오 비트레이트를 8000 kbps로 설정합니다. 이는 비디오의 압축 레벨을 나타냅니다.

-f flv:
출력 포맷을 FLV로 설정합니다.

 

 

이 외에도 많은 기능들이 존재하지만 이번엔 여기까지만 사용해 보겠습니다!

 

 

 

 

 

 

 

 

틀린점이 있다면 댓 달아주세요!

댓글