웹솔루션개발 22년 노하우! 해피CGI의 모든것

[해피CGI][cgimall] 동영상 라이브러리 FFmpeg 3.0.2 본문

웹프로그램밍 자료실/기타 자료

[해피CGI][cgimall] 동영상 라이브러리 FFmpeg 3.0.2

해피CGI윤실장 2017. 6. 1. 09:44
안녕하세요  ^^
이번에 소개해 드릴 자료는 FFmpeg 라는 녀석 입니다.
직접 다운로드 받아서 사용을 해 보았는데요. 아주 맘에 들어서 자료 등록하였습니다. ^^
 
우선 FFmpeg 는 영상과 관련된 작업을 할때 너무나도 많은 기능이 있는데요 그 중에서 가장 많이 사용되는게 인코딩  입니다.
그래서 이번 자료는 인코딩에 대해서 초점을 잡고 설명 드립니다.

테스트 환경은 일반적인 윈도우의 cmd 를 이용하여 테스트 해 보았습니다.
( 쉽고 빠르거든요 ^^ )
 
우선 인코딩 옵션은 아래와 같습니다.
 
  1. -i
    옵션은 입력 파일을 지정한다. 위 예제에 -i "filepath/filename.avi" 이후에 기술된 옵션들은 모두 출력 파일에 대한 옵션이다.
     
  2. -codec:v
     옵션은 비디오 스트림의 코덱을 지정한다. :v는 비디오를 의미한다.
     
  3. -profile:v
    옵션은 일종의 비디오 압축에 사용되는 기술들의 수준을 명시한다. 장치마다 지원하는 기술 수준이 다르며 성능이 낮은 모바일 기기라면 보통 baseline을 사용한다.
     
  4. -preset
    옵션은 압축을 하는데 걸리는 시간 또는 압축률을 설정한다. 압축률이 높을수록 데이터를 압축하는데 시간이 오래 걸린다. 압축률이 낮다고 품질이 좋거나 하지는 않으며 압축률이 높다면 파일 용량이 줄어 든다. 설정값으로는 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo를 사용한다.
     
  5. -b:v
    옵션은 비디오 스트림의 비트레이트이다. 한프레임의 한 화소를 그리는데 얼마나 많은 정보를 사용할 것인지를 설정한다. 값이 높을수록 영상의 품질은 좋아진다.
     
  6. -maxrate
    옵션은 최대 비트레이트이다. 앞의 비트레이트는 평균적인 설정값이고 그렇기에 영상의 어떤 프레임에서는 비정상적으로 큰 값을 가질 수 있다. 이를 막기 위해 상한선을 지정하는 역할을 한다.
     
  7. -bufsize
    옵션은 출력 버퍼를 지정한다. 영상이 재생될 때 이 값만큼의 영상데이터가 메모리에 준비된다고 생각하자.
     
  8. vf
    옵션은 비디오 필터이다. 이 뒤에 2차 옵션이 따라온다.
     
  9. scale
    옵션은 비디오 필터의 부분 옵션으로 영상의 해상도를 지정한다. 1024x768 형식으로 설정할 수도 있으나 예문에서처럼 -1:720 형식의 설정을 주로 쓴다. 이는 소위 말하는 720p 영상이라는 뜻으로 영상의 높이가 720픽셀이라는 뜻이다.
     
  10. threads
    옵션은 작업을 하는데 사용할 CPU 코어의 갯수를 의미한다. 물론 많은 코어를 사용하면 작업 속도도 빠르다. 0으로 설정하면 알아서 최적화된 코어 갯수를 설정하여 작업한다.
     
  11. -codec:a
    옵션은 오디오 스트림의 코덱을 지정한다. :a는 오디오를 의미한다.
     
  12. -b:a
    옵션은 오디오 스트림의 비트레이트이다. 높을수록 좋은 품질의 음성을 감상할 수 있다.
     
  13. -f
    옵션은 파일 포맷을 지정한다. ffmpeg는 출력 파일의 이름에 근거하여 파일 포맷을 스스로 결정하므로 특별한 일이 아니라면 지정할 필요가 없다.
     
  14. -ss
    옵션은 파일의 시작 부분이다. 즉, 입력 영상의 1분부터 녹화를 하겠다는 의미이다.
     
  15. -t
    옵션은 멀티미디어의 재생 시간이다. 즉, 1시간 동안 재생을 하겠다는 의미이며 위의 예제의 경우, 출력 파일을 재생하게 되면 입력 파일의 1분에서 1시간 1분까지에 해당하는 내용이 1시간동안 재생된다. 
     
  16. -to
    옵션은 입력 영상으로부터의 녹화가 끝나는 지점을 명시하는데 -t옵션 대신 이를 사용하였다면 출력 파일은 입력 파일의 1분에서 1시 사이에 해당하는 데이터를 총 59분에 걸쳐 재생하게 된다.
     
  17. -strict experimental
    옵션은 제한은 완화하는 옵션이다. 갖가지 옵션들이 섞여서 무언가 제한 사항이 있는 모양인데 이를 무시하고 작업을 진행하도록 한다.
  

인코딩 하실때는 아래의 명령어를 참고하여 해 주시면 됩니다.
ffmpeg.exe -i ../../movie_file/JSBFO876.h480x288.mp4 -codec:v libx264 -profile:v baseline -preset slow -b:v 1000k -maxrate 1000k -bufsize 2000k -vf scale=-1:720 -threads 0 -codec:a aac -b:a 128k -f mp4 -ss 00:01:00 -t 01:00:00 -strict experimental ../../movie_file/test.mp4

서버내에 ffmpeg 라이브러리가 있을 경우에는 어떤 영상을 업로드 하더라도 알아서 원하는 코덱으로 변경이 가능 합니다.
그러므로 실시간 스트리밍도 가능할 듯 합니다. ^^

 

홈페이지바로가기 

Comments