ffmpeg截取視頻

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

相關文章
相關標籤/搜索