視頻框架:Vitamio

  • 官網地址:https://www.vitamio.org/

  • 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

VCamera.initialize(this);

建議在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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章