流媒體中ffmpeg 命令的使用


在linux系統中,使用到的有關流媒體音視頻流進行處理的ffmpeg 命令的常用的命令己命令對應的參數如下:記錄一下:

1.分離視頻音頻流

ffmpeg -i input_file -vcodec copy -an output_file_video  //分離視頻流 ffmpeg -i input_file -acodec copy -vn output_file_audio  //分離音頻流

2.視頻解復用

ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264 ffmpeg –i test.avi –vcodec copy –an –f m4v test.264

3.視頻轉碼

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 分辨率控制

4.視頻封裝

ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file

5.視頻剪切

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 持續時間

6.視頻錄制

ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi

7.YUV序列播放

ffplay -f rawvideo -video_size 1920x1080 input.yuv

8.YUV序列轉AVI

ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi

9.視頻合並

ffmpeg -i concat:"intermediate1.mpg|intermediate2.mpg" -c copy intermediate_all.mpg

常用參數說明:

主要參數:
-i 設定輸入流
-f 設定輸出格式
-ss 開始時間
視頻參數:
-b 設定視頻流量,默認為200Kbit/s
-r 設定幀速率,默認為25
-s 設定畫面的寬與高
-aspect 設定畫面的比例
-vn 不處理視頻
-vcodec 設定視頻編解碼器,未設定時則使用與輸入流相同的編解碼器
音頻參數:
-ar 設定采樣率
-ac 設定聲音的Channel數
-acodec 設定聲音編解碼器,未設定時則使用與輸入流相同的編解碼器
-an 不處理音頻

最后對ffmpeg做一個簡單的介紹:
FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,並能將其轉化為流的開源計算機程序。采用LGPL或GPL許可證。它提供了錄制、轉換以及流化音視 頻的完整解決方案。它包含了非常先進的音頻/視頻編解碼庫libavcodec,為了保證高可移植性和編解碼質量,libavcodec里很多code都 是從頭開發的。-------摘自百度百科。

用通俗一點的描述就是,這個玩意是個程序,也是由某些大神開發出來的用於處理音視頻流的一個程序,開始是在linux系統上開發的,所以在linux系統上面使用很方便,但是在windows 和mac上也實現了,這個東西還是很強大的,因為這個東西主要使用在linux系統上,下面說一下在linux系統上如何使用這個進行對音視頻流的處理:

1.ffmpeg下載地址: http://www.ffmpeg.org/download.html

2.解壓

這里作者假設已經重命名為ffmpeg.tar.bz2

3.解壓后進入ffmpeg的文件夾,查看readme, 可以看到和正常的編譯安裝步驟無異configure && make && make install

 

ffmpeg編譯出錯

編 譯FFMPEG時,出現了 ffmpeg yasm not found, use –disable-yasm for a crippled build,是因為 FFMPEG為了提高編譯速度,使用了匯編指令,如果系統中沒有yasm指令的話,就會出現上述的問題。
解決辦法是:
A 如果是Windows系統, 從網上下載一個 yasm.exe 並安裝在mingw/bin下面,重新編譯,就不會出現該錯誤了;
B 如果是Linux系統,則更簡單,直接在終端輸入 sudo apt-get install yasm (centos 輸入sudo yum install yasm),安裝好后,重新編譯就 OK了

 

這一次,編譯成功, 出現一大串字符, 大致如下:

Selection_007

4.安裝

 

Selection_008

可見直接make install會出現權限問題, 因為之前編譯時指定的文件夾是/usr/local/ffmpeg, 所以需要sudo權限

ok,安裝成功, 在命令行下試一下命令使用

這 時候出現ffmpeg: error while loading shared libraries: libavdevice.so.56: cannot open shared object file: No such file or directory的錯誤.(部分高版本缺少的是libavdevice.so.54)

我們嘗試在系統中找到這個庫:

Selection_009

由結果可見, 在我們編譯后的/usr/local/ffmpeg/lib/中存在libavdevice.so.56,  我們需要將這個庫鏈接寫到/etc/ld.so.conf中然后執行sudo ldconfig, 操作如下:

現在, 在linux上就安裝成功了這個工具,就可以直接使用了。具體你安裝到那里沒有明確的規定,但是你一定要注意這個工具的權限問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM