热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android之解决Mediaplayer播放网络音频缓冲太慢的问题

相信有不少人在使用Mediaplayer播放网络音频的时候,prepare与prepareAsync的方法缓冲太慢,如何解决问题?现在就给出一个亲身测试并且用到实际项目中的方案。该方案中,用到

  相信有不少人在使用Mediaplayer播放网络音频的时候,prepare与prepareAsync的方法缓冲太慢,如何解决问题?现在就给出一个亲身测试并且用到实际项目中的方案。
  该方案中,用到了框架Vitamio(http://vitamio.org/),在下载页面中有比较详细的下载项目与介绍。主要是Demo下载地址:https://github.com/yixia/VitamioDemo 与 依赖库:https://github.com/yixia/VitamioBundle/tree/v3.0

  不过如果仅仅使用依赖库而不使用自己的重新编译的FFmpeg,那个res下的动态库so有5m大,将会造成apk过大的问题。以下就是自己编译FFmpeg的步骤与注意的地方。这是官方提供的:如何在Vitamio中使用自己编译的FFmpeghttp://vitamio.org/pages/how-to-use-vitamio-with-your-own-ffmpeg-build?locale=zh-CN

  我是在MAC的系统上编译的,其他系统也差不多,主要是注意自己的环境那些,例如mac下需要gcc,window下需要cygwin等
  1. 确定自己的mac上已经安装了gcc的编译环境,如果没有请到xcode下载
  2. 下载ndk,vitamio推荐我们使用的是ndk-r8b的版本
  3. 在终端下输入:export ANDROID_NDK=/path/to/your/android-ndk  (export是关键字;ANDROID_NDK照着打吧;后面的地址就是你解压的ndk地址)

  4. 在终端定位到http://github.com/yixia/FFmpeg-Android网址下载的文件夹的目录,然后执行  ./FFmpeg-Android.sh命令。
  4.1 执行git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg下载ffmpeg的代码,然后才能使用configure --help 命令。

  5. 补充4。 根据官方的解释,我们可以在FFmpeg-Android.sh 进行适当修改,我们主要是关注FFMPEG_FLAGS下面的配置。
  如果需要配置多个,可以用英文的','分开
  --enable-decoder=aac,mp3,mpeg4 \ 实践了,这样写ok
    5.1 附上一个FFMPEG_FLAGS配置例子:

FFMPEG_FLAGS="--target-os=linux \
  --arch=arm \
  --enable-cross-compile \
  --cross-prefix=arm-linux-androideabi- \
  --enable-shared \
  --disable-symver \
  --disable-doc \
  --disable-ffplay \
  --disable-ffmpeg \
  --disable-ffprobe \
  --disable-ffserver \
  --disable-avdevice \
  --disable-avfilter \
  --disable-encoders \
  --disable-muxers \
  --disable-filters \
  --disable-devices \
  --disable-everything \
  --enable-protocol=http,md5,https,cache,file,httpproxy  \
  --enable-parser=aac,aac_latm,mpegaudio \
  --enable-demuxer=aac,ogg \
  --enable-decoder=aac_latm,aac \
  --enable-bsf=aac_adtstoasc,noise \
  --enable-network \
  --enable-swscale  \
  --enable-asm \
  --enable-version3"

 

  6. 执行是漫长的等待,不过这时不要松懈。你有可能会出现类似ccache的错误。这个错误会引起不能生成libffmpeg.so文件的错误

    6.1 解决办法:到网上http://mxcl.github.com/homebrew/ 把类似下面的地址复制到终端,回车执行 
     6.2 ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
   
6.3 
安装完成之后吧,执行 brew install ccache 
    6.4 重新再编译执行sh文件,这时候就可以了
  7. 官方文档也提到VitamioBundle中的res/raw/libarm.so这个文件是7-zip压缩文件。得到这个信息后,我们可以在终端下使用命令 brew search 7zip搜索需要的软件,找到之后就可以使用brew install X    X是你需要的那个软件名字。
    然后根据7z --help命令得到解压so文件的指令,把libffmpeg.so替换解压出来的libffmpeg.so,官网http://vitamio.org/pages/how-to-use-vitamio-with-your-own-ffmpeg-build?locale=zh-CN有提示,替换完之后再用指令打包回so文件。
  8. 把这个自己编译的文件覆盖 res/raw/libarm.so文件,到此,所有的操作已经完成。稍后一些时间,我会完善这一文档及附上部分图片。
  9. 附上p7zip的解压指令:
    9.1 pz x 需要解压的文件 -o指定的解压到的目录,例:7z x /Users/Ari/Downloads/VitamioBundle-3.0/res/raw/libarm.so -o/Users/Ari/Downloads/VitamioBundle-3.0/res/raw/lib

    
9.2 pz a 指定压缩到的目录 需要压缩的文件或目录,使用空格隔开多个,例:7z a /Users/Ari/Downloads/VitamioBundle-3.0/res/raw/libarm.so 60 61 70 71

 

 

 


推荐阅读
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 本文深入解析了WCF Binding模型中的绑定元素,详细介绍了信道、信道管理器、信道监听器和信道工厂的概念与作用。从对象创建的角度来看,信道管理器负责信道的生成。具体而言,客户端的信道通过信道工厂进行实例化,而服务端则通过信道监听器来接收请求。文章还探讨了这些组件之间的交互机制及其在WCF通信中的重要性。 ... [详细]
  • 在安装 iOS 开发所需的 CocoaPods 时,用户可能会遇到多种问题。其中一个常见问题是,在执行 `pod setup` 命令后,系统无法连接到 GitHub 以更新 CocoaPods/Specs 仓库。这可能是由于网络连接不稳定、GitHub 服务器暂时不可用或本地配置错误等原因导致。为解决此问题,建议检查网络连接、确保 GitHub API 限制未被触发,并验证本地配置文件是否正确。 ... [详细]
  • SSL 错误:目标主机名与备用证书主题名称不匹配
    在使用 `git clone` 命令时,常见的 SSL 错误表现为:无法访问指定的 HTTPS 地址(如 `https://ip_or_domain/xxxx.git`),原因是目标主机名与备用证书主题名称不匹配。这通常是因为服务器的 SSL 证书配置不正确或客户端的证书验证设置有问题。建议检查服务器的 SSL 证书配置,确保其包含正确的主机名,并确认客户端的证书信任库已更新。此外,可以通过临时禁用 SSL 验证来排查问题,但请注意这会降低安全性。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 本文介绍了 Vue 开发的入门指南,重点讲解了开发环境的配置与项目的基本搭建。推荐使用 WebStorm 作为 IDE,其下载地址为 。安装时请选择适合您操作系统的版本,并通过 获取激活码。WebStorm 是前端开发者的理想选择,提供了丰富的功能和强大的代码编辑能力。 ... [详细]
  • 本文介绍了如何在 Windows 系统上利用 Docker 构建一个包含 NGINX、PHP、MySQL、Redis 和 Elasticsearch 的集成开发环境。通过详细的步骤说明,帮助开发者快速搭建和配置这一复杂的技术栈,提升开发效率和环境一致性。 ... [详细]
  • 本文将详细介绍如何注册码云账号、配置SSH公钥、安装必要的开发工具,并逐步讲解如何下载、编译 HarmonyOS 2.0 源码。通过本文,您将能够顺利完成 HarmonyOS 2.0 的环境搭建和源码编译。 ... [详细]
  • 本文介绍了Java中的com.sun.codemodel.JBlock._continue()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
  • ARM汇编基础基于Keil创建STM32汇编程序的编写
    文章目录一、新建项目(1)工具介绍(2)创建项目:二、配置环境(1)配置芯片&#x ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • Git命令基础应用指南
    本指南详细介绍了Git命令的基础应用,包括如何使用`git clone`从远程服务器克隆仓库(例如:`git clone [url/path/repository]`)以及如何克隆本地仓库(例如:`git clone [local/path/repository]`)。此外,还提供了常见的Git操作技巧,帮助开发者高效管理代码版本。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 本文全面解析了JavaScript中的DOM操作,并提供了详细的实践指南。DOM节点(Node)通常代表一个标签、文本或HTML属性,每个节点都具有一个nodeType属性,用于标识其类型。文章深入探讨了DOM节点的创建、查询、修改和删除等操作,结合实际案例,帮助读者更好地理解和掌握DOM编程技术。 ... [详细]
author-avatar
霸气胡志刚_你活埋了木有
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有