当前位置: 首页 > news >正文

阿里云手机做网站谷歌搜索引擎网址

阿里云手机做网站,谷歌搜索引擎网址,wordpress贴内幻灯片,建筑公司网站怎么设计原库地址 https://gitcode.com/gh_mirrors/vi/VideoCompressor/overview 这个库用起来比较方便,使用Android原生的MediaCodecmp4parser的方式进行压缩,不用接入so库也不用适配cpu 问题 接口库后你会发现过时了,所以你一阵捣鼓后你发现压缩…

原库地址

https://gitcode.com/gh_mirrors/vi/VideoCompressor/overview
这个库用起来比较方便,使用Android原生的MediaCodec+mp4parser的方式进行压缩,不用接入so库也不用适配cpu

问题

接口库后你会发现过时了,所以你一阵捣鼓后你发现压缩正常但是输出文件没有声音,问题是什么?经过我一天的修改,问题是因为你升级了mp4parser库他接入的是com.googlecode.mp4parser:isoparser:1.0.6不论你升级到什么版本都会出现没有声音的问题,那是因为谷歌的问题,在1.0.6后在编码的时候更加严格,所以你不升级就ok了!

真的不升级?

随着时间的发展旧版本库无法满足需求,性能各方面都是差异,而且这是7年前的库了,所以你必须升级,那么怎么解决问题呢?

分析问题

问题代码

在1.0.6库之前和之后主要的出现问题代码就在createMovie中的创建FileChannel的问题,1.0.6支持你FileOutputStream.getChannel()这样创建但是1.0.6之后不可以这样,这样就会导致音视频无法同步,所以你需要更换创建方法:new RandomAccessFile(destinationPath, "rw").getChannel()其中destinationPath输出文件地址修改了这一行你会发现好了

其他解决思路

这个库的压缩思路:

  1. 获取视频的track,然后利用MediaCodec对原视频进行解码

  2. 获取原视频的宽高、帧率等,进行一定的比例缩放

  3. 在利用MediaCodec进行视频编码,输出一个只有视频没有声音的文件

  4. 在利用相同的方式获取音频的track,然后读取音频读写

  5. 最后对音视频进行合并,他是再同一个输出文件上读写的

  6. 完结
    所以根据上面思路你完全可以分开

  7. 先利用MediaCodec对视频进行压缩,输出到缓存目标文件A

  8. 在读取原文件的音频

  9. 合并两个文件,输出到真正的目录B,这里不可以和缓存目标文件A相同,必须不同的文件

把思路简化下代码大概是这样,是不是很简单,其实思路就这么点代码

    public static void appendMp4List(Context context, Uri sourcePath, String outPutPath) throws Exception {VideoInfo videoInfo = VideoUtils.getVideoInfo(context, sourcePath);if (videoInfo == null || videoInfo.width() == 0 || videoInfo.height() == 0) {return;}File tempFile = VideoUtils.copyFileToCacheDir(context, sourcePath);List<Track> audioTracks = new LinkedList<>();// 音频通道集合List<Track> videoTracks = new LinkedList<>();// 视频通道集合for (Track inMovieTrack : MovieCreator.build(tempFile.getAbsolutePath()).getTracks()) {if ("soun".equals(inMovieTrack.getHandler())) {// 从Movie对象中取出音频通道audioTracks.add(inMovieTrack);}if ("vide".equals(inMovieTrack.getHandler())) {// 从Movie对象中取出视频通道videoTracks.add(inMovieTrack);}}Movie resultMovie = new Movie();// 结果Movie对象[输出]if (!videoTracks.isEmpty()) {// 将所有视频通道追加合并writerVideo(tempFile,videoInfo,outPutPath);//压缩视频,但这样输出的只有视频没有音频List<Track> resultVideoTrack = MovieCreator.build(outPutPath).getTracks();for(Track videoTrack:resultVideoTrack){resultMovie.addTrack(videoTrack);}}if (!audioTracks.isEmpty()) {// 将所有音频通道追加合并resultMovie.addTrack(new AppendTrack(audioTracks.toArray(new Track[audioTracks.size()])));}Container outContainer = new DefaultMp4Builder().build(resultMovie);// 将结果Movie对象封装进容器FileChannel fileChannel = new RandomAccessFile(outPutPath, "rw").getChannel();outContainer.writeContainer(fileChannel);// 将容器内容写入磁盘fileChannel.close();}

最终的优化有的代码查看github

https://github.com/fzkf9225/mvvm-componnent-master/tree/master/commonmedia/src/main/java/pers/fz/media/videocompressor

http://www.hkea.cn/news/227010/

相关文章:

  • 怎么样做淘宝优惠券网站搜索引擎营销的优缺点
  • wordpress动态订单seo社区
  • 网站域没到期不能续费吗google谷歌搜索
  • 厦门好的做网站公司网络营销推广方式都有哪些
  • 重庆市建设工程信息官网站自己做网站的流程
  • 网站建设公司怎么做网络营销网站推广
  • 360应用商店seo服务套餐
  • 废橡胶网站建设个人博客网页设计
  • 什么网站做一手项目好域名查询官网
  • 做日用品的要找什么网站好站长工具端口检测
  • 贵州软件开发 网站开发手机版百度一下
  • 企业网站建立答辩问题百度怎么发布广告
  • 温州快建网站地推拉新接单网
  • 濉溪县城乡建设委员会燃气办网站热狗网站排名优化外包
  • 网站能不能自己做免费的seo教程
  • 湖南的商城网站建设优化教程网下载
  • 做网站需要哪些工程师西安seo诊断
  • tp做的网站封装成app2023北京封控了
  • 增城做网站要多少钱推广普通话手抄报
  • 石家庄网站系统开发智能搜索引擎
  • 迅速网站网络营销平台推广方案
  • 学前端要逛那些网站微信引流主动被加软件
  • 韩国flash网站免费手机网站建站平台
  • 东莞做网站卓诚网络昆明长尾词seo怎么优化
  • WordPress个性萌化插件郑州seo优化哪家好
  • 专业手机移动网站建设免费的seo优化
  • 西安网站建设王永杰域名注册 万网
  • 网站营销优化方案北京做的好的seo公司
  • 企业网站排名提升软件优化南宁seo优化
  • 创意合肥网站建设杭州seo公司排名