如何在Corona SDK中播放Web URL音频文件?
2017-1-4 3:18:40
收藏:0
阅读:142
评论:2
我试图从网络链接播放音频文件,但现在似乎不起作用。这些是我尝试的代码:
local birdSound = audio.loadSound("www.sound.com/birds.mp3")
audio.play(birdSound)
它会报错。
点赞
用户4111272
使用下面的狙击手下载您的远程文件,并将其保存到 basedir 基本目录下的 localFilename:
local xmnetwork = {
last_error = nil,
downloadHandlerInProgress = nil,
downloadHandlerFinished = nil,
downloadBeginHandler = nil,
network = require("network")
}
function xmnetwork.download(url, errorHandler,beganHandler, inProgressHandler, endedHandler, localFilename, basedir)
if( xmnetwork.network == nil) then
xmnetwork.network = require("network")
end
xmnetwork.downloadHandlerInProgress = inProgressHandler
xmnetwork.downloadHandlerFinished = endedHandler
xmnetwork.downloadBeginHandler = beganHandler
xmnetwork.errorHandler = errorHandler
local function downloadListener( event )
print("download event:" .. tostring(event))
if ( event.isError ) then
print( "网络错误!" )
if( xmnetwork.errorHandler) then
xmnetwork.errorHandler(event)
end
elseif ( event.phase == "began" ) then
if ( event.bytesEstimated <= 0 ) then
print( "开始下载,未知大小" )
else
print( "开始下载,估计大小(以 MB 为单位):" .. ( event.bytesEstimated /1024/1024))
end
if( xmnetwork.downloadBeginHandler) then
xmnetwork.downloadBeginHandler(event)
end
elseif ( event.phase == "progress" ) then
if(xmnetwork.downloadHandlerInProgress ) then
xmnetwork.downloadHandlerInProgress (event)
end
if ( event.bytesEstimated <= 0 ) then
print( "下载进度:" .. event.bytesTransferred )
else
print( "下载进度:" .. (event.bytesTransferred / event.bytesEstimated) * 100 .. "'%'")
-- log("xmnetwork.download", "downloading :" .. (event.bytesTransferred / event.bytesEstimated) * 100 .. "'%'")
end
elseif ( event.phase == "ended" ) then
print( "下载完成,共传输的字节数:" .. event.bytesTransferred )
if(xmnetwork.downloadHandlerFinished) then
xmnetwork.downloadHandlerFinished(event)
end
end
end
local params = {}
-- 告诉 network.request() 我们想要“began”和“progress”事件:
params.progress = "download"
-- 告诉 network.request() 输出应该去一个文件:
params.response = {
filename = localFilename,
baseDirectory = basedir
}
xmnetwork.network.request( url, "GET", downloadListener, params )
end
2014-10-18 08:47:06
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
无法使用 loadSound API 将远程音频文件加载到内存中,因为此函数仅用于加载本地文件。
默认情况下,在项目文件夹(system.ResourceDirectory)中搜索文件,但是通过更改 baseDir 参数,您也可以查找其他本地文件夹中的文件。
因此,要播放您的远程音频文件,您应该首先通过 network.download API 将其下载到 system.DocumentsDirectory。当下载完成后,您可以使用 loadSound 加载它,指定正确的 baseDir。
有关 network.download API 的详细信息,请查看 此处。