一种基于Android实现MP4格式视频剪切合成的方法技术

技术编号:23534657 阅读:43 留言:0更新日期:2020-03-20 08:30
本发明专利技术涉及Android技术领域,特别涉及一种实现MP4格式视频剪切合成的方法。本发明专利技术方法如下:一、创建视频分离器对象并设置分离器数据来源;二、遍历来源,获取视频每个轨道的信息;三、获取源视频相邻帧之间的时间间隔;四、选择视频剪切的起点进行剪切;五、创建音频分离器对象;六、获取音频帧时长;七、选择音频剪切的起点进行剪切;八、创建媒体合成器对象,合并剪切后的视频与音频。本发明专利技术解决了MP4视频文件剪切时不完整、音频与视频不同步的问题。

A method of video clip synthesis of MP4 format based on Android

【技术实现步骤摘要】
一种基于Android实现MP4格式视频剪切合成的方法
本专利技术涉及Android
,特别涉及一种基于Android实现MP4格式视频剪切合成的方法。
技术介绍
随着无线网络的发展,人们不再满足于单调的文字或者图像,而希望在手机上能传视频。视频剪切与合成技术就是在计算机技术、无线网络通信技术、多媒体技术、电脑技术以及数据编码、压缩、序列化等技术基础上发展而来的。目前用户的手机都装有很多很好玩的视频剪辑与合成功能的APP,最出名的就是抖音了,用户可以随时随地把自己拍照的视频上传,使用其提供的简单的、易操作的工具进行剪辑编辑,加上一些系统提供的资源材料,如音乐、GIF动画图片等,合成出各色各样有趣的短视频,丰富了人们日常生活,满足了人们的好奇心。本专利技术主要是使用一种新型的剪辑与合成技术,致力于解决视频剪辑与合成中的一些声音与视频不同步、播放的视频不完整的问题。
技术实现思路
本专利技术解决的技术问题在于提供一种基于Android实现MP4格式视频剪切合成的方法;本专利技术解决了MP4视频文件剪切时不完整、音频与视频不同步的问题。本专利技术解决上述技术问题的技术方案是:一、创建视频分离器对象并设置分离器数据来源;二、遍历来源,获取视频每个轨道的信息;三、获取源视频相邻帧之间的时间间隔;四、选择视频剪切的起点进行剪切;五、创建音频分离器对象;六、获取音频帧时长;七、选择音频剪切的起点进行剪切;八、创建媒体合成器对象,合并剪切后的视频与音频。所述的方法具体包括如下步骤:步骤一、定义相关参数,创建视频分离器对象并设置分离器数据来源;步骤二、遍历来源,获取视频每个轨道的信息,如视频宽、高、输出大小等;步骤三、获取源视频相邻帧之间的时间间隔,判断检测剪辑点和剪辑时长是否正确,为输出大小分配缓冲;步骤四、选择视频剪切的起点进行剪切,主要是根据时间戳与帧类型进行剪切;步骤五、创建音频分离器对象,选择音频跟踪轨道;步骤六、获取音频帧时长;步骤七、选择音频剪切的起点进行剪切;步骤八、创建媒体合成器对象,合并剪切后的视频与音频。本专利技术的有益效果:采用MediaShear技术对视频与音频分开剪辑,完成后使用MediaCombinat技术再进行合成,达到了完美剪辑合成视频而无瑕疵的目的。有效本专利技术解决了MP4视频文件剪切时不完整、音频与视频不同步的问题。附图说明下面结合附图对本专利技术进一步说明:图1为本专利技术的流程图。具体实施方式如图1所示,本专利技术采用如下步骤:步骤一、定义相关参数,创建视频分离器对象并设置分离器数据来源;如:privateMediaCodecmediaDecoder;privateMediaShearshear;privateMediaFormatmediaFormat;privateMediaCombinatcombinat;privateStringmime=null;publicbooleanshearVideo(Stringurl,longclipPoint,longclipDuration){intvTrackIndex=-1;intaudioTrackIndex=-1;intvMaxInputSize=0;intaMaxInputSize=0;intvideoTrack=0;intaudioTrack=0;longvideoDuration,audioDuration;//创建分离器shear=newMediaShear();try{//设置文件路径shear.setDataSource(url);//创建合成器combinat=newMediaCombinat(url.substring(0,url.lastIndexOf("."))+"_output.mp4",OutputFormat.MUXER_OUTPUT_MPEG_4);}catch(Exceptione){Log.e(TAG,"errorpath"+e.getMessage());}//实现以下步骤}步骤二、遍历来源,获取视频每个轨道的信息,如视频宽、高、输出大小等;如://获取每个轨道的信息for(inti=0;i<shear.getTrackCount();i++){try{mediaFormat=shear.getTrackFormat(i);mime=mediaFormat.getString(MediaFormat.KEY_MIME);if(mime.startsWith("video/")){videoTrack=i;intwidth=mediaFormat.getInteger(MediaFormat.KEY_WIDTH);intheight=mediaFormat.getInteger(MediaFormat.KEY_HEIGHT);vMaxInputSize=mediaFormat.getInteger(MediaFormat.KEY_MAX_INPUT_SIZE);videoDuration=mediaFormat.getLong(MediaFormat.KEY_DURATION);//检测剪辑点和剪辑时长是否正确if(clipPoint>=videoDuration){Log.e(TAG,"clippointiserror!");returnfalse;}if((clipDuration!=0)&&((clipDuration+clipPoint)>=videoDuration)){Log.e(TAG,"clipdurationiserror!");returnfalse;}Log.d(TAG,"widthandheightis"+width+""+height+";maxInputSizeis"+vMaxInputSize+";durationis"+videoDuration);//向合成器添加视频轨vTrackIndex=combinat.addTrack(mediaFormat);}}步骤三、获取源视频相邻帧之间的时间间隔,判断检测剪辑点和剪辑时长是否正确,为输出大小分配缓冲;如://分配缓冲ByteBufferinputBuffer=ByteBuffer.allocate(vMaxInputSize);//根据官方文档的解释MediaCombinat的start一定要在addT本文档来自技高网...

【技术保护点】
1.一种基于Android实现MP4格式视频剪切合成的方法,其特征在于:一、创建视频分离器对象并设置分离器数据来源;二、遍历来源,获取视频每个轨道的信息;三、获取源视频相邻帧之间的时间间隔;四、选择视频剪切的起点进行剪切;五、创建音频分离器对象;六、获取音频帧时长;七、选择音频剪切的起点进行剪切;八、创建媒体合成器对象,合并剪切后的视频与音频;从而本专利技术解决了MP4视频文件剪切时不完整、音频与视频不同步的问题。/n

【技术特征摘要】
1.一种基于Android实现MP4格式视频剪切合成的方法,其特征在于:一、创建视频分离器对象并设置分离器数据来源;二、遍历来源,获取视频每个轨道的信息;三、获取源视频相邻帧之间的时间间隔;四、选择视频剪切的起点进行剪切;五、创建音频分离器对象;六、获取音频帧时长;七、选择音频剪切的起点进行剪切;八、创建媒体合成器对象,合并剪切后的视频与音频;从而本发明解决了MP4视频文件剪切时不完整、音频与视频不同步的问题。


2.根据权利要求1所述的基于Android平台的实现一种实现MP4格式视频剪切的方法,其特征在于:采用MediaShear技术对视频与音频分开剪辑,完成...

【专利技术属性】
技术研发人员:陈林张来卿庞严冬
申请(专利权)人:珠海横琴盛达兆业科技投资有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1