寫Android的快兩年了,終於碰到視頻相關(視頻壓縮)的技術

努力的柳某人 2022-01-07 13:24:29 阅读数:221

android 碰到

我的需求

壓縮視頻後上傳服務器,上傳服務器我就pass不講了不是該文主要操作

使用技術

FFmpeg是眾所周知的一套可以用來記錄、轉換數字音頻、視頻,並能將其轉化為流的開源計算機程序。

使用結果

我的是10秒的視頻從3M壓縮到500kb,可達到預期效果,只是壓縮時間較長

兩種操作

  1. 手寫FFmpeg然後搭載到Android中
  2. 不造輪子,直接引入大佬手寫庫github的庫,(是我肯定就先看一遍第1個選項的內容,然後去引入大佬的庫)

要是選擇第一項,我看我這篇記錄怕是無法入您的法眼了。

FFmpeg ffmpeg = FFmpeg.getInstance(this);
/*你可以理解為初始化這個庫*/
private void loadFFMpegBinary() {
try {
ffmpeg.loadBinary(new LoadBinaryResponseHandler() {
@Override
public void onFailure() {
}
});
} catch (FFmpegNotSupportedException e) {
}
}
/*這就是輸入命令函了*/
private void execFFmpegBinary(final String[] command) {
try {
ffmpeg.execute(command, new ExecuteBinaryResponseHandler() {
@Override
public void onFailure(String s) {
}
@Override
public void onSuccess(String s) {
}
@Override
public void onProgress(String s) {
}
@Override
public void onStart() {
}
@Override
public void onFinish() {
}
});
} catch (FFmpegCommandAlreadyRunningException e) {
}
}
 /*調用命令*/
execFFmpegBinary(new String[]{"-y", "-i", 文件路徑, "-s", "160x120", "-r", "25", "-vcodec", "mpeg4", "-b:v", "150k", "-b:a", "48000", "-ac", "2", "-ar", "22050", 輸入路徑})

命令函講解

一個參數接著一個空格

命令 含義
-y 覆蓋輸出文件,如果輸出的文件路徑存在則會覆蓋
-i 要處理的視頻文件路徑
-s 輸出視頻的大小,不寫就是默認160X128
-r 輸出的幀頻
-vcodec 輸出設置視頻編解碼器幀頻
-b:v 設置視頻比特率
-b:a 設置音頻比特率
-f 設定輸出格式
-ac 設置音頻通道數。
-ar 設置音頻流的采樣率
待續 目前用到這些

以上很通俗易懂吧,如果有誤還請批評指正
最後祝大家2022開門大吉,永無Bug,健健康康,昇職加薪
在這裏插入圖片描述

版权声明:本文为[努力的柳某人]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201071324287220.html