我最近想做一个小视频的应用,效果和美拍那里一样, 就是导入要制作的图片,生成视频并且加入mv 或者 特效,这样的功能怎么做啊,大神们 你们做过吗,分享一下思路 或者 demo 吧
闭关修行中......
這個我們團隊在美拍出來了之後立即研究做(抄)了一個小app,叫snapshow,android版也做好了,但是最後因為戰略問題沒有上線,只上線了iOS版本,後來又被公司下架了。
說一下大略思路吧,就是獲取視頻/照片的圖像,在適時的時候丟入OpenGL Render Chain,根據不同的時間點,做不同的變幻,將生成的畫面顯示出來或者寫入視頻文件中,就這樣。
具體就根據自己的平台研究了吧,android看你需要支援的系統版本,高一點的話推薦用MediaExtractor來封裝解碼,底層是硬解的,效率高,然後自己做render層,顯示在surfaceView上,我們試驗過,效率高,完全無卡頓,比美拍的android版好多了。 iOS就直接用AVFoundation框架,也是自己做render層,顯示在CAEAGLLayer上,效率高,無卡頓。
這是顯示。
導出的話,android可以用ffmpeg來一幀幀寫入,iOS可以用AVFoundation直接導出。
需要你有足夠的OpenGL知識,編解碼倒是其次。
可以開源分享demo嗎
應該要有開源的框架吧,可以加濾鏡什麼的,之前我只用過ffmpeg的開源視訊處理。那個比較簡單。
這個我們團隊在美拍出來了之後立即研究做(抄)了一個小app,叫snapshow,android版也做好了,但是最後因為戰略問題沒有上線,只上線了iOS版本,後來又被公司下架了。
說一下大略思路吧,就是獲取視頻/照片的圖像,在適時的時候丟入OpenGL Render Chain,根據不同的時間點,做不同的變幻,將生成的畫面顯示出來或者寫入視頻文件中,就這樣。
具體就根據自己的平台研究了吧,android看你需要支援的系統版本,高一點的話推薦用MediaExtractor來封裝解碼,底層是硬解的,效率高,然後自己做render層,顯示在surfaceView上,我們試驗過,效率高,完全無卡頓,比美拍的android版好多了。
iOS就直接用AVFoundation框架,也是自己做render層,顯示在CAEAGLLayer上,效率高,無卡頓。
這是顯示。
導出的話,android可以用ffmpeg來一幀幀寫入,iOS可以用AVFoundation直接導出。
需要你有足夠的OpenGL知識,編解碼倒是其次。
可以開源分享demo嗎
應該要有開源的框架吧,可以加濾鏡什麼的,之前我只用過ffmpeg的開源視訊處理。那個比較簡單。