使用MediaPlayer播放在线音频,请参考Android MediaPlayer 播放音频
有时候我们会需要下载音频文件。这里提供一种思路,将在线音频文件通过流写到本地文件中。
使用URLConnection来建立连接,获取到的数据写到文件中。
URLConnection建立连接后,可以获取到数据长度。由此我们可以计算出下载进度。
public class DownloadStreamThread extends Thread { String urlStr; final String targetFileAbsPath; public DownloadStreamThread(String urlStr, String targetFileAbsPath) { this.urlStr = urlStr; this.targetFileAbsPath = targetFileAbsPath; } @Override public void run() { super.run(); int count; File targetFile = new File(targetFileAbsPath); try { boolean n = targetFile.createNewFile(); Log.d(TAG, "Create new file: " + n + ", " + targetFile); } catch (IOException e) { Log.e(TAG, "run: ", e); } try { URL url = new URL(urlStr); URLConnection connection = url.openConnection(); connection.connect(); int contentLength = connection.getContentLength(); InputStream input = new BufferedInputStream(url.openStream()); OutputStream output = new FileOutputStream(targetFileAbsPath); byte[] buffer = new byte[1024]; long total = 0; while ((count = input.read(buffer)) != -1) { total += count; Log.d(TAG, String.format(Locale.CHINA, "Download progress: %.2f%%", 100 * (total / (double) contentLength))); output.write(buffer, 0, count); } output.flush(); output.close(); input.close(); } catch (Exception e) { Log.e(TAG, "run: ", e); } } }
启动下载,即启动线程。
new DownloadStreamThread(urlStr, targetFileAbsPath).start();
值得注意的是,如果本地已经有了文件,需要做一些逻辑判断。例如是否删掉旧文件,重新下载。或是判断出已有文件,中止此次下载任务。
例如可以用connection.getContentLength()与当前文件长度来比较,如果不一致,则删掉本地文件,重新下载。
实际上,URLConnection能处理很多流媒体。在这里是用来下载音频文件。可以实现下载功能和类似“边下边播”的功能。
代码可以参考示例工程: https://github.com/RustFisher/android-MediaPlayer
总结
以上所述是小编给大家介绍的Android 使用URLConnection下载音频文件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
问题内容: 我知道有上百万种方法可以从youtube下载视频,然后将其转换为音频或对其进行进一步处理。但是最近,我很惊讶地在Mac上看到一个名为YoutubeToMp3的应用程序实际显示“正在跳过X mb视频”,并且据说只从视频中下载音频,而无需使用bandwith下载整个视频然后进行转换。我想知道这是否真的正确,并且根本不可能,因为我找不到任何方法可以做到这一点。你有什么想法 ? 编辑:经过一些
我想通过截击下载一个zip文件。现在,我可以使用下载和解压缩Android中的Zip文件来下载文件。 我想改用截击库。我该怎么做?
编辑:经过一些测试后,这里是关于这个主题的一些附加信息。我试着从互联网上获取音频的视频只是一个示例mp4文件: http://download.wavetlan.com/svv/media/http/mp4/convertedfiles/mediaCoder/mediaCoder_test6_1m9s_xvid_vbr_306kbps_320x240_25fps_mpeg1layer3_cbr_3
本文向大家介绍使用ffmpeg 合并aac格式音频文件的方法,包括了使用ffmpeg 合并aac格式音频文件的方法的使用技巧和注意事项,需要的朋友参考一下 FFmpeg简介 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保
问题是这个。我正在发送音乐文件。我一直收到错误消息422。由于这个原因,我似乎无法正确定位我的身体 和我的代码 并调用此方法 我还发现这个东西 通过Reform2将文件作为对象发送到服务器 在我看来,问题是该字段看起来像“音频[文件]” 谢谢你的帮助
问题内容: 嗨,我需要将wav音频文件的采样率从44.1kHz下采样到8kHz。我必须使用字节数组手动完成所有工作…这是出于学术目的。 我目前正在使用2个类(接收器和源)来弹出和推送字节数组。一切顺利,直到到达需要使用线性插值对数据块进行下采样的部分为止。 由于我是从44100降采样到8000 Hz,因此我该如何插入一个包含约128000000字节的字节数组?现在,我弹出5、6或7个字节,具体取决