說說Android的視頻裁剪(一)

關(guān)于視頻裁剪方面的介紹文章比較少搁胆,開源項目更是少之又少,如果公司有相關(guān)的業(yè)務需求實施起來還是有點棘手隘击。本博客就是簡單的說說與視頻裁剪有關(guān)的技術(shù)脊串。

視頻裁剪項目:https://github.com/iknow4/Android-Video-Trimmer
這是我的github上發(fā)布的一個視頻裁剪的項目,我們就按照項目的實現(xiàn)方式以及結(jié)合源碼躏尉,來說一下涉及到的相關(guān)技術(shù)點蚯根。
先貼一張效果圖:

VideoTrim
VideoTrim

效果圖有點模糊,勉強可以用胀糜。效果跟Twitter颅拦,Youtube的視頻裁剪類似,當然教藻,大公司這方面做的更加出色了距帅。
項目分為 1. 視頻選擇頁,2.視頻裁剪頁括堤。

1.視頻選擇頁碌秸,如何獲取所有的視頻?

Android系統(tǒng)四大組件之一 ContentProviders 使得我們能跨進程去獲取系統(tǒng)所有的視頻文件悄窃。

public static ArrayList<VideoInfo> getAllVideoFiles(Context mContext) {
        VideoInfo video;
        ArrayList<VideoInfo> videos = new ArrayList<>();
        ContentResolver contentResolver = mContext.getContentResolver();
        try {
            Cursor cursor = contentResolver.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null,
                    null, null, MediaStore.Video.Media.DATE_MODIFIED + " desc");
            while (cursor.moveToNext()) {
                video = new VideoInfo();

                if (cursor.getLong(cursor.getColumnIndex(MediaStore.Video.Media.DURATION)) != 0) {
                    video.setDuration(cursor.getLong(cursor.getColumnIndex(MediaStore.Video.Media.DURATION)));
                    video.setVideoPath(cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DATA)));
                    video.setCreateTime(cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DATE_ADDED)));
                    video.setVideoName(cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DISPLAY_NAME)));
                    videos.add(video);
                }
            }

            cursor.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return videos;
    }

取到ContentResolver引用讥电,調(diào)用查詢方法,按照視頻的修改時間排序轧抗,最新修改的放在最前面允趟。上面讀取所有視頻文件的方式需要設(shè)計成異步,可以采AsyncTask鸦致,否則如果視頻文件量大,會導致阻塞主線程涣楷,從而導致應用的體驗下降分唾。VideoInfo是我定義的一個視頻文件的載體類:

private long videoId;
private String videoName = "";
private String authorName = "";
private String description = "";//視頻全路徑,包含視頻文件名的路徑信息
private String videoPath;//視頻所在文件夾的路徑
private String videoFolderPath;
private String createTime;
private long duration = 0;
private String thumbPath;
private int rotate;
private String lat;
private String lon;

該類用于存放視頻的相關(guān)信息。比如狮斗,視頻的路徑绽乔,視頻名稱,視頻的經(jīng)緯度碳褒,等等折砸。獲取所有視頻之后我們需要將之展示出來看疗,視頻的封面圖我是用universalimageloader來展示的。有關(guān)universalimageloader的工作方式可以看一下我的另一篇博客:
帶你細細品讀Android-Universal-Image-Loader源碼
有意思的是在ImageLoader內(nèi)部睦授,會自動判斷你傳入的圖片url两芳,如果是video的,ImageLoader會獲取視頻的第一幀進行顯示去枷。有興趣的同學可以去閱讀一下源碼怖辆,源碼類:com.nostra13.universalimageloader.core.download.BaseImageDownloader.java

2.視頻裁剪頁

視頻裁剪頁相對來比較復雜,涉及的內(nèi)容有:

1.VideoView
2.視頻幀讀取
3.視頻幀的顯示(com.iknow.android.widget.VideoThumbHorizontalListView)
4.視頻播放進度SeekBar
5.視頻裁剪控件(com.iknow.android.widget.RangeSeekBarView)

有興趣的同學可以先fork我的項目來看看删顶。

我會在下一篇博客對 視頻裁剪頁 進行展開講述竖螃。
歡迎關(guān)注我的簡書博客:http://www.reibang.com/users/aea57293503d/latest_articles

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市逗余,隨后出現(xiàn)的幾起案子特咆,更是在濱河造成了極大的恐慌,老刑警劉巖录粱,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腻格,死亡現(xiàn)場離奇詭異,居然都是意外死亡关摇,警方通過查閱死者的電腦和手機荒叶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來输虱,“玉大人些楣,你說我怎么就攤上這事∠芏茫” “怎么了愁茁?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長亭病。 經(jīng)常有香客問我鹅很,道長,這世上最難降的妖魔是什么罪帖? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任促煮,我火速辦了婚禮,結(jié)果婚禮上整袁,老公的妹妹穿的比我還像新娘菠齿。我一直安慰自己,他們只是感情好坐昙,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布绳匀。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疾棵。 梳的紋絲不亂的頭發(fā)上戈钢,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音是尔,去河邊找鬼殉了。 笑死,一個胖子當著我的面吹牛嗜历,可吹牛的內(nèi)容都是我干的宣渗。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼梨州,長吁一口氣:“原來是場噩夢啊……” “哼痕囱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起暴匠,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤鞍恢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后每窖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體帮掉,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年窒典,在試婚紗的時候發(fā)現(xiàn)自己被綠了蟆炊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡瀑志,死狀恐怖涩搓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情劈猪,我是刑警寧澤昧甘,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站战得,受9級特大地震影響充边,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜常侦,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一浇冰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧聋亡,春花似錦湖饱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至致讥,卻和暖如春仅仆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背垢袱。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工墓拜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人请契。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓咳榜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親爽锥。 傳聞我的和親對象是個殘疾皇子涌韩,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,506評論 25 707
  • 難得的團圓 一家人 祖孫三代 團聚在一起 我弟他說他過了明天 又要走 去湖北—— 那么遠的路 他說他就住在湖心的一...
    亞民閱讀 224評論 0 2
  • 舞收歌罷杯空。 暗猜疑氯夷。 寄語悵望臣樱,鴛夢迷蒙中。 嘆多少腮考。 春光老雇毫。 別匆匆。 且醉如泥踩蔚,來往盡隨風棚放。
    令狐幻岳閱讀 313評論 5 18