android mp4 画面裁剪,Android视频时长裁剪

大家好,我是程序员kenney,今天给大家介绍一下如何在Android里面实现视频时长的裁剪。

首先我们要知道视频是由一帧一帧的数据构成的,每一帧都有一个时间戳,这个时间戳就是我们在做视频编码的时候,当要编码一帧的时候,会给这一帧设置一个时间戳。

因此做视频裁剪的思路就是把要裁剪的视频的数据一帧一帧地拿出来,然后从想裁剪的开始位置,把视频帧原样地放回去,直到想裁剪的结束位置。

这里值得注意的是,我们如果只做视频的裁剪,那么可以简单地将视频帧取出来,再原样放回去,而不需要经过视频的解码,然后再编码,因为我们不需要改变视频振动内容,视频的解码和编码都是很耗时的操作。而如果我们同时还要进行视频特效的渲染,或者对视频进行缩放等,这些都是对视频帧做了修改,这个时候就需要一个解码、处理,再编码的过程。

那么如何提取视频的帧数据呢?可以用MediaExtractor,这个玩意能帮我们提取视频或者音频中的数据,我们今天讲的是视频的裁剪,因此就要从一个视频文件中提取视频的数据,在一个视频文件中,音频和视频数据是分别存储在不同的轨道中,因此,如果我们要裁剪的这个视频,是包含声音的,那么也要对声音做同样的处理。

可能有人会问,一个视频难道还能没有声音?是的,在看完这篇文章后,可以自己试一试,把一个有声音的视频将其中的视频轨道提取出来,再封装回去,这样就得到了一个只有图像而没有声音的视频,如果大家有看我之前的文章,也会发现我之前生成的视频就是没有声音的,因为我没有把声音加进去

你可能感兴趣的:(android,mp4,画面裁剪)