[ Server ][ Linux ] centos7 FFMpeg 설치방법 > linux

본문 바로가기
사이트 내 전체검색

linux

[ Server ][ Linux ] centos7 FFMpeg 설치방법

페이지 정보

작성자 웹지기 댓글 0건 조회 16,334회 작성일 19-02-28 13:00

본문

FFmpeg는 모든 종류의 온라인 스트리밍 서비스에서 널리 사용되는 오디오 및 비디오를 기록, 변환 및 스트리밍하는 인기있는 오픈 소스 솔루션

CentOS 7 서버에 FFmpeg를 설치하는 방법을 설명



1. 시스템 업데이트

sudo yum install epel-release -y

사용금지:sudo yum update -y

sudo shutdown -r now


참조 : epel = Extra Packages for Enterprise Linux→ 엔터프라이즈 리눅스를 위한 추가 패키지


2. YUM 저장소 설치

CentOS에는 공식 FFmpeg rpm 패키지가 없습니다. 

대신 타사 YUM 저장소 인 Nux Dextop을 사용하여 작업을 완료 할 수 있습니다.


sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

yum repolist


2. FFmpeg 및 FFmpeg 개발 패키지 설치

sudo yum install ffmpeg ffmpeg-devel -y


3. FFmpeg 설치 확인

ffmpeg

ffmpeg -h



4. FFMPEG 명령 살펴보기


우선 FFMPEG 공식 문서에 따르면 ffmpeg명령은 다음과 같은 구조를 지닌다.

$ ffmpeg [global_options] {[input_file_options] -i input_file} ... {[output_file_options] output_file} ...

중괄호와 대괄호는 문법적 구조를 보여주기 위한 것일 뿐 실제로 사용하지 않는다. 눈여겨 봐야 할 부분은 중괄호로 묶인 부분들이다. 

입력 파일에 대한 옵션은 입력 파일 앞에, 출력 파일에 대한 옵션은 출력 파일 앞에 기술한다. 즉, 옵션을 사용할 때, 순서를 지켜주어야 한다! 

이는 다른 명령들과 비교해서 두드러지는 차이점이다. 이 문서에서는 global_option과 input_file_options에 대해 다루지 않을 것이다. 

보다 자세한 내용을 원한다면 공식 문서를 참조하도록 하자.


파일 변환에 앞서 우리가 가지고 있는 동영상 파일에 대한 세부 사항을 알 필요가 있으며 다음처럼 출력 파일에 대한 정보를 생략한 명령어로 

확인 가능하다.

$ ffmpeg -i input_file


이제 변환 예제를 살펴보도록 하자. 다음은 filename.avi 파일을 outputfilename.mp4으로 변환하는 작업이다. 

Global 옵션이나 입력 파일(filename.avi)에 대한 옵션은 없으며, 출력 파일에 대한 옵션만 있는 명령이다.

$ ffmpeg -i "filepath/filename.avi" -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 "outputfilepath/outputfilename.mp4"

-i 옵션은 입력 파일을 지정한다. 위 예제에 -i "filepath/filename.avi" 이후에 기술된 옵션들은 모두 출력 파일에 대한 옵션이다.


-codec:v 옵션은 비디오 스트림의 코덱을 지정한다. :v는 비디오를 의미한다.


-profile:v 옵션은 일종의 비디오 압축에 사용되는 기술들의 수준을 명시한다. 

장치마다 지원하는 기술 수준이 다르며 성능이 낮은 모바일 기기라면 보통 baseline을 사용한다.


-preset 옵션은 압축을 하는데 걸리는 시간 또는 압축률을 설정한다. 압축률이 높을수록 데이터를 압축하는데 시간이 오래 걸린다. 

압축률이 낮다고 품질이 좋거나 하지는 않으며 압축률이 높다면 파일 용량이 줄어 든다. 

설정값으로는 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo를 사용한다.


-b:v 옵션은 비디오 스트림의 비트레이트이다. 한프레임의 한 화소를 그리는데 얼마나 많은 정보를 사용할 것인지를 설정한다. 

값이 높을수록 영상의 품질은 좋아진다.


-maxrate 옵션은 최대 비트레이트이다. 앞의 비트레이트는 평균적인 설정값이고 그렇기에 영상의 어떤 프레임에서는 비정상적으로 큰 값을 

가질 수 있다. 이를 막기 위해 상한선을 지정하는 역할을 한다.


-bufsize 옵션은 출력 버퍼를 지정한다. 영상이 재생될 때 이 값만큼의 영상데이터가 메모리에 준비된다고 생각하자.


vf 옵션은 비디오 필터이다. 이 뒤에 2차 옵션이 따라온다.


scale 옵션은 비디오 필터의 부분 옵션으로 영상의 해상도를 지정한다. 

1024x768 형식으로 설정할 수도 있으나 예문에서처럼 -1:720 형식의 설정을 주로 쓴다. 

이는 소위 말하는 720p 영상이라는 뜻으로 영상의 높이가 720픽셀이라는 뜻이다.


threads 옵션은 작업을 하는데 사용할 CPU 코어의 갯수를 의미한다. 물론 많은 코어를 사용하면 작업 속도도 빠르다. 

0으로 설정하면 알아서 최적화된 코어 갯수를 설정하여 작업한다.


-codec:a 옵션은 오디오 스트림의 코덱을 지정한다. :a는 오디오를 의미한다.


-b:a 옵션은 오디오 스트림의 비트레이트이다. 높을수록 좋은 품질의 음성을 감상할 수 있다.


-f 옵션은 파일 포맷을 지정한다. ffmpeg는 출력 파일의 이름에 근거하여 파일 포맷을 스스로 결정하므로 특별한 일이 아니라면 

지정할 필요가 없다.


-ss 옵션은 파일의 시작 부분이다. 즉, 입력 영상의 1분부터 녹화를 하겠다는 의미이다.


-t 옵션은 멀티미디어의 재생 시간이다. 즉, 1시간 동안 재생을 하겠다는 의미이며 위의 예제의 경우, 출력 파일을 재생하게 되면 

입력 파일의 1분에서 1시간 1분까지에 해당하는 내용이 1시간동안 재생된다. -to 옵션은 입력 영상으로부터의 녹화가 끝나는 지점을 

명시하는데 -t옵션 대신 이를 사용하였다면 출력 파일은 입력 파일의 1분에서 1시 사이에 해당하는 데이터를 총 59분에 걸쳐 재생하게 된다.


-strict experimental 옵션은 제한은 완화하는 옵션이다. 

갖가지 옵션들이 섞여서 무언가 제한 사항이 있는 모양인데 이를 무시하고 작업을 진행하도록 한다.


[이 게시물은 웹지기님에 의해 2019-03-15 15:32:33 knowledge에서 이동 됨]
추천0 비추천0

댓글목록

등록된 댓글이 없습니다.

Total 103건 1 페이지
  • 102 [ server ][ linux ][ CentOS7 ] nginx 설치 및 방화벽 설정
  • 1) yum 외부저장소에 nginx 추가(nginx 관련사항이 없으니 추가해줘야 함) >> vi /etc/yum.repos.d/nginx.repo nginx.repo 파일 내용( CentOS7 기준 - 버젼별로 다를 수 있으니 다른버젼은 공식사이트 이용 ) [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1 2) nginx ...
  • 웹지기 02-04 6016 0 0 댓글 0
  • 101 [ server ][ linux ] cmd 이용 shell 접속 ( cmd ssh )방법 ( 윈도우에서 cm…
  • 쉘접속 프로그램이 있으면 좋은데, cmd에서 그냥 접속하고 싶다면, 윈도우라면 cmd를 이용해서 접속을 하면 되고, 리눅스라면 cmd라인에서 바로 명령을 입력하면 된다. # telnet 192.168.0.1 { port } 일반적으로 이런식으로 접속을 하면 된다. ssh로 접속을 하고 싶다면 # ssh -p { port } { 계정 }@192.168.0.1 이런식으로 접속을 하면 된다.
  • 웹지기 06-08 11277 0 0 댓글 0
  • 100 [ server ][ linux ][ gitlab ] 원격 저장소 url 변경
  • # git remote -v # origin http://gitlab.com/sample/sample.git (fetch) # origin http://gitlab.com/sample/sample.git (push) 확인을 해본 다음 다음의 명령어로 변경이 가능하다 # git remote set-url origin ssh://git@gitlab.com/sample/sample.git 다시 확인을 해보면 # git remo...
  • 웹지기 06-01 8393 0 0 댓글 0
  • 99 [ server ][ linux ] CentOS7 certbot certificates 오류 ttribute…
  • # certbot certificates 이런명령을 내렸는데 오류가 발생햇다 yum update하면서 무언가 문제가 발생한것 같다. An unexpected error occurred: AttributeError: 'module' object has no attribute 'TLSSNI01' Please see the logfile '/tmp/tmpV1KtqF/log' for more details. # yum update pyth...
  • 웹지기 03-12 7988 0 0 댓글 0
  • 96 [ Server ][ Linux ] CentOS7 firewall ( 방화벽 ) 관리
  • 방화벽 실행 여부 확인 # firewall-cmd --state #running 방화벽 다시 로드 # firewall-cmd --reload #success 존 ( zone ) 목록 출력 # firewall-cmd --get-zones #block dmz drop external home internal public trusted work 존 ( zone ) 기본존을 출력 # firewall...
  • 웹지기 12-24 7182 0 0 댓글 0
  • 95 [ Server ][ Linux ] CentOS7 라우팅 설정 ( vpn 연결 )
  • 장비의 구조도는 위와 같은 장비의 구조에서 한개의 회선은 기본인터넷(eno1)을 연결하는 회선이고 다른하나의 회선은 vpn연결(eno2)을 위한 회선이다 이러한 경우 default를 하나로 설정하고 다른 하나는 route를 통해 vpn회선을 연결한다. eno1번의 랜설정은 default로 설정되며 다음처럼 설정 ip 192.168.0.2 prefix 24 gw 192.168.0.1 eno2번의 랜설정은 ip 192.168.10.2 p...
  • 웹지기 12-18 6911 0 0 댓글 0
  • 94 [ Server ][ Linux ] CentOS7 네트워크 설정
  • 네트워크에 관련된 파일이 있는 곳으로 가서 확인해본다. # cd /etc/sysconfig/network-scripts # ll 현재 설정을 확인 할 수 있다. # route # ip address # netstat 네트워크 재시작 service network restart
  • 웹지기 12-17 5500 0 0 댓글 0
  • 93 [ Server ][ Linux ] CentOS7 telnet 설치 및 테스트
  • 설치 확인 # telnet #bash: telnet: command not found 이렇게 뜨면 텔넷이 설치가 안되어 있는 것이다. 설치해 주자 # yum -y install telnet # ....................................... #Installed: #telnet.x86_64 1:0.17-64.el7 #Complete! 정상 설치 되면 위처럼 뜬다. 실행해 보자 ...
  • 웹지기 12-17 9748 0 0 댓글 0
  • 92 [ Server ][ Linux ] CentOS7 콘쉘 ( ksh ) 설치
  • 현재 사용할 수 있는 쉘을 확인 chsh -l 명령을 통해 현재 사용가능한 쉘 목록 확인 # chsh -l #/bin/sh #/bin/bash #/usr/bin/sh #/usr/bin/bash 콘쉘 ( ksh )를 설치 #yum -y install ksh 사용할 수 있는 쉘을 다시 확인 # chsh -l #/bin/sh #/bin/bash #/usr/bin/sh #/usr/bin...
  • 웹지기 12-16 7353 0 0 댓글 0
  • 91 [ Server ][ Linux ] Gitlab 서버 도메인 변경
  • gitlab 서버의 도메인을 변경하고 싶다면 일단 검색을 한다. # find / -name gitlab.yml # /var/opt/gitlab/gitlab-rails/etc/gitlab.yml # /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml 이런 리스트에서 다음 파일에서 변경을 해준다. # vim /var/opt/gitlab/gitlab-rails/etc/gitlab.yml ...
  • 웹지기 12-12 8368 0 0 댓글 0
  • 90 [ Server ][ Linux ] CentOS7 Let's Encrypt 무료 SSL 인증서 와일드카드로 …
  • 입력시 일반 도메인(domain.com)과 와일드카드(*.domain.com) 도메인 두번 적는다 # certbot certonly --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory -d domain.com -d *.domain.com 이메일을 입력하라는 문구가 나오면 인증서 알림을 받을 이메일을 입력한다. # Saving debug log t...
  • 웹지기 12-12 5385 1 0 댓글 1
  • 89 [ Server ][ Linux ] CentOS7 htmlspecialchars 사용설정
  • htmlspecialchars 함수를 사용하기 위해서는 다음의 ini설정을 변경해 주어야 한다. php.ini filter.default, filter.default_flags 설정 AAI 멀티 버젼 같은 경우 각각의 PHP버젼별로 php.ini파일이 다르므로 검색을 해서 위치를 찾는다 # find / -name php.ini # /etc/opt/remi/php70/php.ini # /etc/opt/remi/php71/php.ini # /etc/opt/rem...
  • 웹지기 12-03 5099 0 0 댓글 0
게시물 검색

회원로그인

접속자집계

오늘
4,344
어제
5,664
최대
33,828
전체
8,394,067

그누보드5
Copyright © funyphp.com. All rights reserved.