android切割音视频
最近公司项目,需要在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切割音视频相关推荐
- Android FFmpeg 音视频开发教程
LearnFFmpeg 项目地址:githubhaohao/LearnFFmpeg 简介: Android FFmpeg 音视频开发教程 更多:作者 提 Bug 标签: An Android FF ...
- Android WebRTC 音视频开发总结(一)
2014-03-03 13:51 by Blacker, 5464 阅读, 7 评论, 收藏, 编辑 接触Android WebRTC有一段时间了,现在将研究过程中的一些经验和知识总结出来,希望大家有 ...
- 技术实践 | Android 设备音视频兼容性适配
导读:WebRTC 是一个非常优秀的项目, 可以支持 Web.iOS.Android.Mac.Windows.Linux 在内的所有平台的 API,保证了 API 在所有平台的一致性.然而 WebRT ...
- 如何做好 Android 端音视频测试?
在用户眼中,优秀的音视频产品应该具有清晰.低延时.流畅.秒开.抗丢包.高音效等特征.为了满足用户以上要求,网易云信的工程师通过自建源站,在SDK端为了适应网络优化进行QoS优化,对视频编码器进行优化, ...
- Android前端音视频数据接入GB28181平台意义
技术背景 在我们研发Android平台GB28181前端音视频接入模块之前,业内听到最多的是,如何用Android或者Windows端,在没有国标IPC设备的前提下,模拟GB28181的信令和媒体流交 ...
- 如何基于 ZEGO SDK 实现 Android 一对一音视频聊天应用
疫情期间,很多线下活动转为线上举行,实时音视频的需求剧增,在视频会议,在线教育,电商购物等众多场景成了"生活新常态". 本文将教你如何通过即构ZEGO sdk在Android端搭建 ...
- Android实时音视频如何快速实现回声消除
1 概述 在实时音视频通话时,可以对音频进行 3A 处理,提高通话质量和用户体验.主要包括 AEC(Acoustic Echo Cancelling,回声消除),AGC(Automatic Gain ...
- android端音视频同步
音视频流是相互独立的.其中音频解码后得到pcm裸流,通过扬声器播放:视频解码后得到yuv再转换为rgb像素格式,通过屏幕(SurfaceView)渲染显示.与音视频同步有关的概念:dts(decode ...
- 基于FFmpeg和Android的音视频同步播放实现
https://blog.csdn.net/ericbar/article/details/80785764 https://blog.csdn.net/AndroidAlvin/article/de ...
最新文章
- java.lang.ClassCastException: [B cannot be cast to java.lang.String
- docker 网络模型
- Unity3D热更新之LuaFramework篇[06]--Lua中是怎么实现脚本生命周期的
- python3 中的 eval 函数
- LSA类型讲解——LSA-2(第二类LSA——Network LSA)、LSA-3(第三类LSA——Network Summary LSA)详解
- 机器学习核心概念、常用术语整理(建议收藏)
- 浅析继承关系中的方法调用
- 百度测试开发提前批一面面经
- 为什么你从来没做过发起人?
- 计算机学硕缩招,专硕扩招、学硕缩招!又有院校初试科目改了!本周这些院校发布最新消息!...
- 拓端tecdat|R语言Rstan概率编程规划MCMC采样的贝叶斯模型
- CSS3 圆形时钟式网页进度条
- linux驱动开发架构
- pr踩点插件beat edit安装教程
- Win10如何取消开机密码?Win10取消开机密码步骤
- 灵飞经5龙生九子 第二十一章 危机四伏 2
- 锂电池升压-SX1308
- 21计算机考研国家线,来了!21考研国家线公布!附详细解读!
- 蓝桥杯 印章Java
- chain 的使用方法