1. 程式人生 > ># centos7下FFmpeg環境部署記錄

# 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)