# 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 (c) 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 /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
yum repolist
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://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)