-
vitamio使用授權:
1. 非個人移動應用均需購買Vitamio使用授權
2. 標準免費版本僅限於個人開發者使用
導入依賴
SDK下載地址
https://www.vitamio.org/VCamera_SDK_Android_1.1.0.zip
SDK功能說明
SDK提供拍攝錄製、分段回刪、實時濾鏡、靜態/動態水印、聲音合成、本地圖片、視頻導入等功能。
SDK使用說明
運行環境
-
Android 4.0及以上的所有系統(注意Demo中使用了TextureView,要支持更低版本的Android請自行修改替換成SurfaceView)
-
僅支持ARM v7的CPU
初始化
1 |
|
建議在Application 的onCreate 中調用,參考Demo 中的VCameraDemoApplication
添加SDK到App工程
-
創建一個Android工程
-
將vcameralibrary.jar添加到App工程的libs目錄下
-
將libvcamera.so添加到App工程的libs目錄下的armeabi-v7a目錄
-
從Demo中拷貝需要的類、圖片等資源到App工程下
初始化SDK
//設置拍攝視頻緩存路徑
if (DeviceUtils.isZte()) {
if(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ DCIM).exists()) {
VCamera.setVideoCachePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) + "/Camera/VCameraDemo/");
} else {
VCamera.setVideoCachePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath().replace("/sdcard/", "/sdcard-ext/") +"/Camera/VCameraDemo/");
}
} else {
VCamera.setVideoCachePath(Environment.getExternalStoragePublicDir ectory(Environment.DIRECTORY_DCIM) + "/Camera/VCameraDemo/");
}
//開啓log輸出,ffmpeg輸出到logcat
VCamera.setDebugMode(true);
//初始化拍攝SDK,必須
VCamera.initialize(this);
初始化MediaRecorder
mMediaRecorder = new MediaRecorder();
mMediaRecorder.setOnErrorListener(this);
if (NetworkUtils.isWifiAvailable(this)) {
mMediaRecorder.setVideoEncodingBitRate(MediaRecorder.VIDEO_BITRAT E_MEDIUM);
//WIFI下800碼率
}else{
mMediaRecorder.setVideoEncodingBitRate(MediaRecorder.VIDEO_BITRATE_NORMAL);
//3G、2G下600碼率
}
String recordFile = VCamera.getVideoCachePath() + System.currentTimeMillis();
// 生成文件名;
mMediaRecorder.setOutputDirectory(recordFile);
// 設置輸出路徑
mMediaRecorder.setSurfaceView(mSurfaceView);
mMediaRecorder.setCameraFilter(MediaRecorder.CAMERA_FILTER_NO);
//重置濾鏡
mMediaRecorder.prepare();
API說明
拍攝:
/** 視頻碼率400kbps */
public static final int VIDEO_BITRATE_LOW = 400;
/** 視頻碼率600kbps */
public static final int VIDEO_BITRATE_NORMAL = 600;
/** 視頻碼率800kbps(默認) */
public static final int VIDEO_BITRATE_MEDIUM = 800;
/** 視頻碼率1024kbps */
public static final int VIDEO_BITRATE_HIGH = 1024;
/* 設置碼率,參數範圍在400 ~ 1024之間,建議WIFI下800K,其他情況600K */
public void setVideoEncodingBitRate(int bitRate)
/* 切換前後攝像頭,默認後置攝像頭 */
public void switchCamera()
/* 切換閃光燈,默認關閉 */
public boolean toggleFlashMode()
/**
* 設置視頻臨時存儲文件夾
*
*@param key 視頻輸出的名稱,同目錄下唯一,一般取系統當前時間
*@param path 文件夾路徑
*@return 錄製信息對象
*/
public MediaObject setOutputDirectory(String key, String path)
/* 是否支持前置攝像頭 */
public static boolean isSupportFrontCamera()
/* 拍攝完成,開始轉碼合成mp4臨時文件 */
public boolean startEncoding()
/* 開始準備 */
public void prepare()
/* 開始錄製,返回視頻分塊信息,與stop()成對使用 */
public MediaPart start()
/* 停止錄製,與start()成對調用,可多次調用實現分段拍攝 */
public void stop()
/* 錄製完成,釋放資源 */
public void release()
MediaRecorderFilter支持實時濾鏡的錄製類
/** 沒有濾鏡 */
public static final String CAMERA_FILTER_NO = "";
/** 黑白濾鏡 */
public static final String CAMERA_FILTER_BLACKWHITE = "blackWhite";
/** 銳化濾鏡 */
public static final String CAMERA_FILTER_SHRRPEN = "pro";
/** 老照片 */
public static final String CAMERA_FILTER_OLD_PHOTOS = "oldFilm";
/** 霓虹燈 */
public static final String CAMERA_FILTER_NEON_LIGHT = "edge";
/** 反色濾鏡 */
public static final String CAMERA_FILTER_ANTICOLOR = "antiColor";
/** 穿越濾鏡 */
public static final String CAMERA_FILTER_THROUGH = "radial";
/** 馬賽克濾鏡 */
public static final String CAMERA_FILTER_MOSAICS = "earlyBird";
/** 懷舊濾鏡 */
public static final String CAMERA_FILTER_REMINISCENCE = "lomo";
FFMpegUtils FFmpeg工具類
/** 音量 100% -vol 100 */
public static final float AUDIO_VOLUME_HIGH = 1F;
/** 音量 66% */
public static final float AUDIO_VOLUME_MEDIUM = 0.66F;
/** 音量 33% */
public static final float AUDIO_VOLUME_LOW = 0.33F;
/** 音量 關閉 */
public static final int AUDIO_VOLUME_CLOSE = 0;
/**
* 視頻截圖
*
* @param videoPath 視頻路徑
* @param outputPath 截圖輸出路徑
* @param wh 截圖畫面尺寸,例如84x84
* @param ss 截圖起始時間
* @return
*/
public static boolean captureThumbnails(String videoPath, String outputPath, String wh, String ss)
/**
* 綜合轉碼
*
* @param mMediaObject 視頻數據存儲對象,涵主題、小部件和視頻片段
* @param targetPath 目標路徑
* @param videoWidth 視頻寬度
* @param complexWatermark 是否合併主題(預覽頁主題和主題音樂)
* @return
*/
public static boolean videoTranscoding(MediaObject mMediaObject, String targetPath, int videoWidth, boolean complexWatermark)
/**
* 圖片轉視頻(用於圖片導入)
*/
public static boolean convertImage2Video(MediaPart part)
UtilityAdapter 底層工具類
/**
* 執行ffmpeg命令
*
* @param strtag 任務的唯一標識,如果標識爲""或NULL,以阻塞方式運行,否則以
異步方式運行
* @param strcmd 命令行
* @return 返回執行結果
*/
public static native int FFmpegRun(String tag, String cmd);
/** 獲取當前轉碼完成時間 */
public static native int FFmpegVideoGetTransTime(int flag);
/** 獲取當前轉碼完成時間 */
public static native int VideoGetMetadataRotate(String filename);
by .k
關注"編程v",每一天漲一點
STAY HUNGRY & STAY FOOLISH