FFmpeg讀取、增加視頻關鍵幀

  

     失蹤人口迴歸! 

     最近在研究一個叫做視頻關鍵幀的東西,我現在鹹魚得不行,懶得寫那麼多東西。

      再次強調,這篇博客是寫給自己看的,就比較糙了。

      簡單來說關鍵幀就是一種很關鍵的幀,哈哈哈我開玩笑的。嚴肅一點,目前市場主流的視頻壓縮算法叫做H264編碼,這個編碼把幀分成三種:

    Inter Frame(I幀)

    P-Frame(P幀)

    B-Frame(B幀)

    其中呢,I幀也叫關鍵幀,它有完整的圖像,其他兩種幀沒有完整的圖像,都要依靠於它生成完成的圖像。

    所以一個視頻的I幀越少,視頻就越小。

    原理到此結束,下面介紹兩個東西FFmpeg讀取視頻關鍵幀和增加視頻關鍵幀。

    先看看如何輸出一個視頻的關鍵幀數量,首先要去下載一個叫做ffmpeg的工具。

  mac下命令行:

ffmpeg -i video_name_output.mp4 -vf select='eq(pict_type\,I)' -vsync 2 -s 750*1334 -f image2 core-%02d.jpeg

上面要注意視頻路徑、文件名、分辨率都要對上。

然後再看看如何添加一個視頻的關鍵幀

mac下命令行:

ffmpeg -i "/path/mmp.mp4" -c:v libx264 -preset superfast -x264opts keyint=25 -acodec copy -f mp4 "/path/out.mp4"

 如果是windows,那麼就在ffmpeg後面加上.exe

ffmpeg.exe -i "/path/mmp.mp4" -c:v libx264 -preset superfast -x264opts keyint=25 -acodec copy -f mp4 "/path/out.mp4"

 

      一些後話:

      爲什麼我會研究這個東西呢,因爲最近調試了ios和安卓的工程(輪子當然不是我造的,我這麼菜,就是簡單地修修改改),該工程能實現的需求很簡單,就是模仿一些小清新的app,把登錄頁背景從原來的靜態圖換成視頻。

      但是發現後臺回前臺時,視頻會卡頓,不能接着上一幀視頻流暢地播放。爲什麼呢?問了一下大佬,大佬跟我說有個東西叫關鍵幀,自己去查吧。

     原來,用視頻做登錄頁背景,然後後臺回前臺時,會自動定位到離剛剛離開時的幀最近的一個關鍵幀,所以視覺效果上會有卡頓的現象。

     同理,在你看b站時,手動拉拽進度條,不一定能定位到你定位的那一秒,可能也是因爲那一秒沒有關鍵幀,所以跑去離那一秒最近的一個關鍵幀了,yeah。

 

參考文獻:

https://zhuanlan.zhihu.com/p/28369983

https://www.jianshu.com/p/f51b2febcfd2

https://maxwellqi.github.io/ios-h264-summ/

https://chuansongme.com/n/357427751042

https://blog.csdn.net/qq_32817785/article/details/87893334

 

   

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