# centos7下FFmpeg環境部署記錄
# centos7下FFmpeg環境部署記錄
隨著視訊在網站上的應用越來越多,越來越多的網站伺服器需要支援視訊轉碼,視訊壓縮,FFmpeg是目前最好用的網站伺服器後臺轉碼程式,應用最多。FFmpeg是一套可以用來記錄、轉換數字音訊、視訊,並能將其轉化為流的開源計算機程式。採用LGPL或GPL許可證。它提供了錄製、轉換以及流化音視訊的完整解決方案。
## 下面介紹下在Centos7下針對FFmpeg的部署記錄
### 安裝EPEL Release,因為安裝需要使用其他的repo源,所以需要EPEL支援
$ yum install -y epel-release
$ rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 //如果出現缺少Code提示,就執行此條命令。
$ yum repolist //安裝完成之後,可以檢視是否安裝成功
注意⚠️:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 表示匯入公鑰,詳見[軟體包簽名常見問題](https://getfedora.org/zh_CN/keys/faq/)
### 安裝Nux-Dextop源
$ rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro //匯入一個Code
$ rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm //安裝nux-dextop 源
$ yum repolist #檢視repo源是否安裝成功
### 安裝ffmpeg
$ yum install -y ffmpeg
$ ffmpeg -version
ffmpeg version 2.8.15 Copyright (www.michenggw.com) 2000-2018 the FFmpeg developers
...
libavutil 54. 31.100 / 54. 31.100
libavcodec 56. 60.100 / 56. 60.100
libavformat 56. 40.101 / 56. 40.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 40.101 / 5. 40.101
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
libpostproc 53. 3.100 / 53. 3.100
## 一鍵安裝指令碼
$ cat ffmpeg_install.sh
$!/bin/bash
yum install -y vim
yum install -y epel-release
rpm --import www.dasheng178.com /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
yum repolist
rpm --import http://li.nux.ro/ www.wanmeiyuele.cn download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://www.mcyllpt.com li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
yum repolist
yum update -y
yum install -y ffmpeg
ffmpeg -version
## FFmpeg常用基本命令
### 分離視訊音訊流
$ ffmpeg -i input_file -vcodec copy -an output_file_video //分離視訊流
$ ffmpeg -i input_file -acodec copy -vn output_file_audio //分離音訊流
### 視訊解複用
$ ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264
$ ffmpeg –i test.avi –vcodec copy –an –f m4v test.264
### 視訊轉碼
$ ffmpeg –i test.mp4 –vcodec h264 –s 352*278 –an –f m4v test.264 //轉碼為碼流原始檔案
$ ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264 //轉碼為碼流原始檔案
$ ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi //轉碼為封裝檔案
//-bf B幀數目控制,-g 關鍵幀間隔控制,-s 解析度控制
### 視訊封裝
$ ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file
### 視訊剪下
$ ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg //提取圖片
$ ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi //剪下視訊
//-r 提取影象的頻率,-ss 開始時間,-t 持續時間
### 視訊錄製
$ ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi
### YUV序列播放
$ ffplay -f rawvideo -video_size 1920x1080 input.yuv
### YUV序列轉AVI
$ ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi
### 主要常用引數說明
```
-i 設定輸入流
-f 設定輸出格式
-ss 開始時間
視訊引數:
-b 設定視訊流量,預設為200Kbit/s
-r 設定幀速率,預設為25
-s 設定畫面的寬與高
-aspect 設定畫面的比例
-vn 不處理視訊
-vcodec 設定視訊編解碼器,未設定時則使用與輸入流相同的編解碼器
音訊引數:
-ar 設定取樣率
-ac 設定聲音的Channel數
-acodec 設定聲音編解碼器,未設定時則使用與輸入流相同的編解碼器
-an 不處理音訊
```
## 原文連結
[centos7下FFmpeg環境部署記錄](https://cloud.tencent.com/developer/article/1027379)