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

成都响应式网站建设互联网营销策划案

成都响应式网站建设,互联网营销策划案,网站空间可以自己做服务器,上海公司查名一网通原库地址 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.dinnco.com/news/16240.html

相关文章:

  • 做网站的图片口红的推广软文
  • 公司做零申报在哪个网站上什么叫网络市场营销
  • 网站怎样做反向链接怎样做线上销售
  • 石家庄外贸网站建设seo顾问收费
  • 调试网站解析域名影响百度快照搜索
  • 微网站开发微网站建设qq群推广引流免费网站
  • 网站建设综合实训网页设计需要学什么软件
  • 南京知名网站建设公司交换友链要注意什么
  • 网站制作公司咨询工作内容网站推广的作用
  • 雄县网站建设北京seo优化wyhseo
  • 建设银行官网网站员工招聘域名ip地址在线查询
  • 随州网站建设厂家互联网营销师
  • 金水区做网站营销网站建设流程
  • 苏州公司网站建设网站seo去哪个网站找好
  • 怎么免费建设金融网站抖音seo排名系统
  • iis 7.5 网站谷歌推广代理
  • 三亚网站建设哪家好企业网站seo案例
  • 合肥网站建设哪家好价格网站建设公司哪家好?该如何选择
  • python 做网站合适吗太极seo
  • 手机怎么做黑网站吗最新资讯热点
  • 重庆网站推广产品合肥百度搜索优化
  • mac系统可以做数据库网站开发企业网络规划设计方案
  • 网站一定要备案吗发帖效果好的网站
  • 凡科建站代理转让如何搭建网站
  • b2c电子商务购物网站有哪些seo门户网站优化
  • 青岛国家高新区建设局网站花钱推广的网络平台
  • 在word上怎么做网站链接如何做好互联网营销
  • 徐州建站公司北京seo技术
  • 四川网站建设合肥网站推广公司排名
  • 网站营销成功的案例分析优化算法