我正在使用 Android 的 MediaPlayer 播放使用 DownloadManager 同时从 Internet 下载的 MP3 文件。我知道 MediaPlayer 可以直接流式传输,但我不想使用它:
下载文件并同时从文件流式传输的明显优势是,通过这种方式,文件被存储起来,之后可以在本地使用。
MediaPlayer 开始播放文件,即使它没有完全下载。 (顺便说一句,我的问题不是我无法播放 MediaPlayer。)MediaPlayer 到达刚开始播放时下载状态的位置时,它会停止并调用onCompletion。 (澄清:假设我开始播放时文件已下载 12%。当播放器到达 12% 的位置时,它会停止。)DownloadManager 将某些内容附加到 MP3 文件时,不会调用 OnBufferingUpdateListener.onBufferingUpdate(...)。所以问题是:如何同时将音频文件下载到文件系统并播放? (Android 4+ 就足够了,如果这有区别的话。)
最佳答案
我假设您将 MediaPlayer 指向该文件。在那种情况下,我认为它不支持流式传输,并且它可能会提前检查文件的大小等,因此随着更多文件的进入,它不会自行更新。
您必须将其指向可用于流式传输的内容源,例如HTTP。 我刚刚检查了“ES文件资源管理器”是如何做到的(使用LogCat)-当您单击远程文件共享中的视频文件时,它会打开一个本地HTTP服务器,并向MediaPlayer发送一个HTTP Uri到其本地服务器,也包括远程路径。
当它通过 HTTP 获得请求时,本地服务器开始从远程位置读取文件,并通过 HTTP 在本地将其提供给 MediaPlayer。 您可能也可以这样做,除了通过 HTTP 提供之外,还可以将其保存到磁盘。
关于安卓媒体播放器 : Download to File and Stream From File,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13863724/
其实做自媒体的成本并不高,入门只需要一部手机即可!在手机上找视频素材、使用手机剪辑视频、最后使用手机发布视频作品获得收益!方法并不难,今天这期内容就来给粉丝们分享一种小方法,每天稳定收益100-300,抓紧点赞收藏!1、找素材(1)使用手机拍摄自己喜欢的经典段落,使用程序把文案内容提取出来(2)也可以在豆瓣、知乎、微博等网站中找一些自己需要的文案素材(3)把文案进行润色修改,可以加入一些自己的观点(4)视频素材可以使用软件中自带的素材,也可以在素材网站中下载完整版的素材2、文案配音(1)把复制好的文案直接导入小程序中(2)调整音色、音调后一键合成音频即可(3)可以选择自己朗读配音,需要花一点时
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我正在从Rails3.2进行流式下载(CSV),并且遇到初始页面请求需要很长时间的问题。以下Controller代码说明了我的问题:self.response_body=Enumerator.newdo|y|10_000_000.timesdoy有了上面的内容,响应看起来确实像是流式传输(来自可以支持它的服务器......在我的例子中是Unicorn)。也就是说,在它开始流式传输之前,它挂起的时间比我想要的要长得多。如果我将其更改为以下内容,它会启动得更快:self.response_body=Enumerator.newdo|y|1000.timesdoy我的理解是响应应该从循环的第
快捷目录前言一、涉及到的相关技术简介二、具体实现过程及踩坑杂谈1.安卓手机改造成linux系统实现方案2.改造后的手机Linux中软件的安装3.手机Linux中安装MySQL5.7踩坑实录4.手机Linux中安装软件的正确方法三、Linux服务器部署前后端分离项目流程1.前提准备(安装必要软件,搭建环境):2.前后端分离项目的详细部署过程:总结前言总体概述:本篇文章隶属于“手机改造服务器部署前后端分离项目”系列专栏,该专栏将分多个板块,每个板块独立成篇来详细记录:手机(安卓)改造成个人服务器(Linux)、Linux中安装软件、配置开发环境、部署JAVA+VUE+MySQL5.7前后端分离项目
我使用Kafka流媒体从KAFKA主题中消费。(KafkaDirect流)此主题中的数据每5分钟从另一个来源到达。现在,我需要处理每5分钟后到达的数据,并将其转换为SparkDataFrame。现在,流是数据的连续流。我的问题是,如何确定我已经完成了在Kafka主题中加载的第一组数据的阅读?(以便我可以将其转换为数据框架并开始我的工作)我知道我可以提及某个数字的批处理间隔(在JavastreamingContext中),但是即使那样,我也永远无法确定源将数据将数据推到主题的时间。欢迎任何建议。看答案如果我正确理解您的问题,您希望不创建批处理,直到阅读5分钟的所有数据。开箱即用的Spark不会提
我正在尝试将图像上传到PingFM。他们的documentation说:media–base64encodedmediadata.我可以通过URL访问此图像。我试过(几乎猜到了)这个:ActiveSupport::Base64.encode64(open("http://image.com/img.jpg"))但是我得到这个错误:TypeError:can'tconvertTempfileintoStringfrom/usr/lib/ruby/1.8/base64.rb:97:in`pack'from/usr/lib/ruby/1.8/base64.rb:97:in`encode64'
MediaSourceExtensions和WebRTC之间的根本区别是什么?请允许我表达一下自己的理解。WebRTC包括一个RTCPeerConnection,它处理从媒体流中获取流并将它们传递到一个协议(protocol)中,以便流式传输到应用程序的连接对等点。似乎在WebRTC的幕后抽象了许多更大的问题,如编解码器和转码。这是一个正确的评估吗?MediaSourceExtensions适合什么地方?我的知识有限,但看过开发人员运行自适应流媒体的示例。MSE是否只处理来自您服务器的流?帮助将不胜感激。 最佳答案 不幸的是,这些与
首先,很抱歉在这里重新提出这个问题。我已经尝试了两天如何使用javascript/jquery完成这项工作,我想我已经阅读了所有堆栈溢出和其他关于此的博客文章,所以请不要将其标记为重复,因为我无法使用2012年到2017年的过时脚本。我有一个页面重定向到第三方电子学习平台,其中一些内容需要flash才能工作。许多用户不关心他们的机器上安装了哪些软件(多么新,呵呵)所以我需要检测它并显示典型消息“请单击此处安装/更新FlashPlayer”,但我找不到“现代"执行此操作的脚本/方式,在任何地方,尽可能简化。我尝试过的所有脚本都已弃用或在所有浏览器中返回false,即使我安装并激活了最新版
我有一个带有输入字段的页面。当页面处于媒体类型打印时,我想隐藏所有0值文本字段。我试过jQuery.但这在屏幕模式和打印模式下都有效。HTML:somescreensomeprintPrintJS:$('button').click(function(){$('input[type=text]').each(function(){if($(this).val()==0){$(this).hide()}})})CSS:@mediaprint{.screen{display:none;}.print{display:block;}}@mediascreen{.screen{display:
我正在尝试与KurentoWebRtc服务器共享我的屏幕。但是得到这个错误:NavigatorUserMediaError{name:"ScreenCaptureError",message:"",constraintName:""}同样的代码在Firefox中没有错误。用于webrtc的约束:varconstraints={audio:true,video:{mandatory:{chromeMediaSource:'screen',maxWidth:1920,maxHeight:1080,maxFrameRate:30,minFrameRate:15,minAspectRatio: