Android 短视频采集之视频断点拍摄、回删功能的实现方法总结

       之前接到公司的一个开发任务,要求模仿秒拍、美拍等App的短视频拍摄功能。由于之前做过短视频拍摄的特效、断点拍摄等功能,所以起初觉在原来方法修改一下就能满足需求了。但是仔细考察完需求,才发现有一个问题。

下图我之前做断点拍摄的一个方案:

视频拍摄的断点功能,只要在暂停拍摄的时候记下暂停时候的时间戳,然后在继续拍摄的时候在送到复用器 Muxer 的时间戳里面减去暂停的时长,即可得到一个断点拍摄的视频。

但是,回删功能怎么做呢?我原来想的是 用MediaMuxer 向前移动视频文件的指针到上一个断点的视频帧处,但是,很抱歉,MediaMuxer 没有提供这个指针回滚方法。

所以,我转而采用了以下第二种方法。


Video Recoder 部分 即可以用 Android 系统 的 MediaRecoder 实现,也可以用 Camera API + AudioRecord + MeidaCodec 的方案实现。关键是后面的部分,如何把断点拍摄的几个视频首尾拼接成一个完整的视频呢,可以用ffmpeg concat 命令,形如 "ffmpeg -f concat -i filelist.txt -c copy output.mp4" 这样,这中命令不会将音视频解码然后再编码,而是将多个文件里面的视频和音频数据分别抽离出来,首尾相接后,写入到一个新的视频中去。这个新的视频,就是最终需要的拼接好了的视频。当然,也可以用用安卓原生的MediaExtractor 和 MediaMuxer来实现拼接的功能。经过我的测试,采用MediaExtractor 和 MediaMuxer实现的拼接方案,其速度比ffmpeg方案要快一倍以上。

      有需求的同学可以关注这个开源工程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cc_coders

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值