最近公司项目,需要在android客户端app中实现录音与录制视频,然后上传服务器。因服务器限制,只能上传小于5M的文件。这样的话,就要求在客户端对录制的音视频进行分割成小文件后上传,但是又要求分割后的小文件都能单独播放。因此,就引出了本篇内容的主旨:android客户端进行音视频的切割。

第一步,我们来说说视频的切割。我是参考了网络文章,然后去github上下载了mp4parser,但是高兴太早了,这是个java工程,直接引入到android中会报错,经历痛苦挣扎后,放弃了使用源码,转而直接去下在最新的编译好的jar包,分别是isoparser.jar和aspectjrt.jar。但是源码也不是没用,里面包括的demo代码我们还是可以参考的。好了,一切就绪,可以编码测试了吧?执行完毕没有报错,哥欣喜若狂,但是去查看切割后的视频,感觉哪里怪怪的,对了,没有声音,妹得,这不是坑吗。仔细研究了下代码,恩,原来音频与视频是两个track,代码里面只切割并加载了视频track,这个简单,把音频track再add进去就完了,结果发现不是这么回事,add音频之后,播放的时候就搞笑了,开头画面不动,播了半天音频之后,画面动了,但是画面动的时候没有声音。恩恩,研究了若干时间,无解,哥差点放弃这条路了,准备回家去装个linux虚拟机编译ffmpeg算了。但是不甘心,好在又折腾了半天,居然被我发现了,妹得,使用isoparser的低版本jar包切割后是有声音的,这是个巨坑啊,版本越升越挫了,这是在逆生长吗?好了,亲测使用isoparser-1.0-RC-27.jar搭配aspectjrt-1.7.3.jar可用。大家欢呼雀跃吧。
第二步,接下来说说amr音频的切割,这个就太简单了,amr音频文件的前6字节是文件头,只需要在读出音频文件字节的时候,在每一个新文件先写入原始文件的前6个字节就ok。简单吧!
回家放代码,有问题可以留言。谢谢!

android切割音视频相关推荐

  1. Android FFmpeg 音视频开发教程

    LearnFFmpeg 项目地址:githubhaohao/LearnFFmpeg 简介: Android FFmpeg 音视频开发教程 更多:作者   提 Bug 标签: An Android FF ...

  2. Android WebRTC 音视频开发总结(一)

    2014-03-03 13:51 by Blacker, 5464 阅读, 7 评论, 收藏, 编辑 接触Android WebRTC有一段时间了,现在将研究过程中的一些经验和知识总结出来,希望大家有 ...

  3. 技术实践 | Android 设备音视频兼容性适配

    导读:WebRTC 是一个非常优秀的项目, 可以支持 Web.iOS.Android.Mac.Windows.Linux 在内的所有平台的 API,保证了 API 在所有平台的一致性.然而 WebRT ...

  4. 如何做好 Android 端音视频测试?

    在用户眼中,优秀的音视频产品应该具有清晰.低延时.流畅.秒开.抗丢包.高音效等特征.为了满足用户以上要求,网易云信的工程师通过自建源站,在SDK端为了适应网络优化进行QoS优化,对视频编码器进行优化, ...

  5. Android前端音视频数据接入GB28181平台意义

    技术背景 在我们研发Android平台GB28181前端音视频接入模块之前,业内听到最多的是,如何用Android或者Windows端,在没有国标IPC设备的前提下,模拟GB28181的信令和媒体流交 ...

  6. 如何基于 ZEGO SDK 实现 Android 一对一音视频聊天应用

    疫情期间,很多线下活动转为线上举行,实时音视频的需求剧增,在视频会议,在线教育,电商购物等众多场景成了"生活新常态". 本文将教你如何通过即构ZEGO sdk在Android端搭建 ...

  7. Android实时音视频如何快速实现回声消除

    1 概述 在实时音视频通话时,可以对音频进行 3A 处理,提高通话质量和用户体验.主要包括 AEC(Acoustic Echo Cancelling,回声消除),AGC(Automatic Gain ...

  8. android端音视频同步

    音视频流是相互独立的.其中音频解码后得到pcm裸流,通过扬声器播放:视频解码后得到yuv再转换为rgb像素格式,通过屏幕(SurfaceView)渲染显示.与音视频同步有关的概念:dts(decode ...

  9. 基于FFmpeg和Android的音视频同步播放实现

    https://blog.csdn.net/ericbar/article/details/80785764 https://blog.csdn.net/AndroidAlvin/article/de ...

最新文章

  1. java.lang.ClassCastException: [B cannot be cast to java.lang.String
  2. docker 网络模型
  3. Unity3D热更新之LuaFramework篇[06]--Lua中是怎么实现脚本生命周期的
  4. python3 中的 eval 函数
  5. LSA类型讲解——LSA-2(第二类LSA——Network LSA)、LSA-3(第三类LSA——Network Summary LSA)详解
  6. 机器学习核心概念、常用术语整理(建议收藏)
  7. 浅析继承关系中的方法调用
  8. 百度测试开发提前批一面面经
  9. 为什么你从来没做过发起人?
  10. 计算机学硕缩招,专硕扩招、学硕缩招!又有院校初试科目改了!本周这些院校发布最新消息!...
  11. 拓端tecdat|R语言Rstan概率编程规划MCMC采样的贝叶斯模型
  12. CSS3 圆形时钟式网页进度条
  13. linux驱动开发架构
  14. pr踩点插件beat edit安装教程
  15. Win10如何取消开机密码?Win10取消开机密码步骤
  16. 灵飞经5龙生九子 第二十一章 危机四伏 2
  17. 锂电池升压-SX1308
  18. 21计算机考研国家线,来了!21考研国家线公布!附详细解读!
  19. 蓝桥杯 印章Java
  20. chain 的使用方法

热门文章

  1. 2013年各大小IT公司待遇,绝对真实,一线数据!(转好网)
  2. 学生免费使用JB账号
  3. GITHUB删除历史记录
  4. 简单实现有向无环图思路
  5. ubuntu 18.04编译安装PANet
  6. 1089: 平方和与立方和
  7. 500余人角逐宁夏跆拳道联赛冠军
  8. 新能源汽车行业专有名词
  9. MySQL中导入CSV文件数据
  10. R语言使用dplyr包的arrange函数对dataframe数据进行排序