FFmpeg是什麼ide
ffmpeg是一套優秀的操做音視頻的開源計算機程序,有包括視頻採集,視頻格式轉換,視頻抓圖等強大功能
編碼
經常使用參數
spa
主要參數:
-i 設定輸入流
-f 設定輸出格式
-ss 開始時間
視頻參數:
.net
-b 設定視頻流量,默認爲200Kbit/s -r 設定幀速率,默認爲25 -s 設定畫面的寬與高 -aspect 設定畫面的比例 -vn 不處理視頻 -vcodec 設定視頻編解碼器,未設定時則使用與輸入流相同的編解碼器 音頻參數: -ar 設定採樣率 -ac 設定聲音的Channel數 -acodec 設定聲音編解碼器,未設定時則使用與輸入流相同的編解碼器 -an 不處理音頻
經常使用命令3d
// 去掉視頻中的音頻 ffmpeg -i input.mp4 -vcodec copy -an output.mp4 // -an: 去掉音頻;-vcodec:視頻選項,通常後面加copy表示拷貝 // 提取視頻中的音頻 ffmpeg -i input.mp4 -acodec copy -vn output.mp3 // -vn: 去掉視頻;-acodec: 音頻選項, 通常後面加copy表示拷貝 // 音視頻合成 ffmpeg -y –i input.mp4 –i input.mp3 –vcodec copy –acodec copy output.mp4 // -y 覆蓋輸出文件 //剪切視頻 ffmpeg -ss 0:1:30 -t 0:0:20 -i input.mp4 -vcodec copy -acodec copy output.mp4 // -ss 開始時間; -t 持續時間 // 視頻截圖 ffmpeg –i test.mp4 –f image2 -t 0.001 -s 320x240 image-%3d.jpg // -s 設置分辨率; -f 強迫採用格式fmt; // 視頻分解爲圖片 ffmpeg –i test.mp4 –r 1 –f image2 image-%3d.jpg // -r 指定截屏頻率 // 將圖片合成視頻 ffmpeg -f image2 -i image%d.jpg output.mp4 //視頻拼接 ffmpeg -f concat -i filelist.txt -c copy output.mp4 // 將視頻轉爲gif ffmpeg -i input.mp4 -ss 0:0:30 -t 10 -s 320x240 -pix_fmt rgb24 output.gif // -pix_fmt 指定編碼 // 將視頻前30幀轉爲gif ffmpeg -i input.mp4 -vframes 30 -f gif output.gif // 旋轉視頻 ffmpeg -i input.mp4 -vf rotate=PI/2 output.mp4 // 縮放視頻 ffmpeg -i input.mp4 -vf scale=iw/2:-1 output.mp4 // iw 是輸入的寬度, iw/2就是一半;-1 爲保持寬高比 //視頻變速 ffmpeg -i input.mp4 -filter:v setpts=0.5*PTS output.mp4 //音頻變速 ffmpeg -i input.mp3 -filter:a atempo=2.0 output.mp3 //音視頻同時變速,可是音視頻爲互倒關係 ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mp4 // 視頻添加水印 ffmpeg -i input.mp4 -i logo.jpg -filter_complex [0:v][1:v]overlay=main_w-overlay_w-10:main_h-overlay_h-10[out] -map [out] -map 0:a -codec:a copy output.mp4 // main_w-overlay_w-10 視頻的寬度-水印的寬度-水印邊距;
那麼我要實驗上面的兩個命令 1.視頻截圖 2.剪切視頻code
這兩個命令我吸收一些其餘人的經驗而後改寫的視頻
即獲取視頻任一幀圖片and截取視頻某一段,首先須要下載ffmpeg,這個能夠去官網下載blog
這是視頻操做demo圖片
ConvertVideoget
package com.pskj.JXGSLZ.utils.video; /** * * @date 2019/3/13 * ffmpeg操做視頻 */ public class ConvertVideo { //原視頻地址 private final static String INPUTPATH = "F:\\video\\2018.mp4"; //截取視頻輸出位置 private final static String OUTPATH = "F:\\video\\"; //ffmpeg運行文件 private final static String FFMPEGPATH = "F:\\video\\ffmpeg\\ffmpeg-20181114-1096614-win64-static\\bin\\ffmpeg.exe "; //截取視頻的某一段 public static void convertVideo(){ try { //Runtime.getRuntime().exec()方法主要用於執行外部的程序或命令 Runtime runtime = Runtime.getRuntime(); //執行命令 String cut = FFMPEGPATH + " -i " + INPUTPATH + " -vcodec copy -acodec copy -ss 00:00:00 -to 00:00:15 " + OUTPATH +"test"+ ".mp4 -y"; runtime.exec(cut); } catch (Exception e) { e.printStackTrace(); } } //截取視頻中的某一幀 public static void convertImg(){ try { //Runtime.getRuntime().exec()方法主要用於執行外部的程序或命令 Runtime runtime = Runtime.getRuntime(); //執行命令 String cut = FFMPEGPATH + " -i " + INPUTPATH + " -y -f image2 -ss 20 -s 700x525 " + OUTPATH +"test"+ ".jpg"; runtime.exec(cut); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { convertImg();//截取視頻幀 convertVideo();//剪切視頻 } }
存放原視頻和ffmpeg程序的地方
視頻的時長
運行主方法
ConvertVideo中截取的視頻幀是第一秒,截取視頻段爲0至15秒
如下爲參考連接
https://blog.csdn.net/huangxingli/article/details/46663143
https://blog.csdn.net/zhangminemail/article/details/79931974