閱讀319 返回首頁    go 阿裏雲 go 技術社區[雲棲]


【短視頻SDK】如何做到視頻原始比例裁剪?

1.概述

目前短視頻SDK裁剪視頻提供了多種模式。填充模式和裁剪模式.但是demo沒有演示裁剪視頻原始大小.就會出現幾個問題:

  • 如果使用填充模式,設置輸出的分辨率是豎屏,如果原始視頻是橫屏的,就會對視頻添加黑邊.
  • 如果使用裁剪模式,設置輸出的分辨率是豎屏,如果原始視頻是橫屏的,就會隻裁剪視頻的部分區域,導致有些細節會丟掉.

於是我們就需要一個做法能裁剪視頻的原始大小,以此來解決視頻裁剪出現黑邊或者是丟掉太多細節的問題.

2 .如何做到裁剪視頻原始大小?

2.1 核心接口AliyunICrop(安卓)和AliyunCrop(iOS)

裁剪視頻得到原始大小的核心點需要了解的是裁剪的核心接口叫AliyunICrop,具體這個接口的接口文檔見專業版文檔中關於裁剪的說明.這個接口有個函數setCropParam(以安卓為例),即設置輸出的視頻的參數,主要是設置輸入輸出路徑、輸出的寬高和裁剪視頻的開始結束時間.

    /**
     * 設置裁剪參數
     * @param param
     */
    void setCropParam(CropParam param);

2.2 裁剪策略

那麼是不是裁剪設置輸出的寬高為視頻的寬高就可以了呢? 這裏有一個建議,因為涉及幾個問題:

1.原始視頻如果分辨率非常大,如1080P,裁剪時間可能會比較長
2.原始的視頻如果大小很大,如視頻超過100M,用戶流量費用是個問題,就有可能有壓縮的需求.

於是我們的解決方案是:

1.假設原始視頻寬高是1080*1920
2. 設置裁剪區域為1080*1920---接口請通過rect設置
3. 設置輸出大小為360*640
4. 於是生成的視頻就會是一個360*640的保留視頻原始尺寸的視頻了.這樣即保證了視頻的細節保留,也讓視頻的大小有了減少.

注意:因為1080*1920和360*640剛好是都是9:16的比例,所以可以剛剛好完全保留細節,但是現實的應用中可能會出現很多不規則的視頻,於是就需要開發者自己解決這部分適配盡可能多的保留細節.比如你的視頻是1080*2000的,你就裁剪1080*1920事實上也盡可能多的保留了細節.

希望本文能對你有所幫助!!!!

最後更新:2017-08-25 16:02:21

  上一篇:go  利用 ApsaraDB For SQL Server各版本高效而低廉地實現關鍵業務需求
  下一篇:go  一起來學ES —— Bulk剖析