我最近想做一个小视频的应用,效果和美拍那里一样, 就是导入要制作的图片,生成视频并且加入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的开源视频处理。那个比较简单。