如何播放web url音频文件?
我正在尝试从网络链接播放音频文件,但现在似乎不起作用。以下是我尝试过的代码:如何播放web url音频文件?,web,lua,coronasdk,audio-streaming,Web,Lua,Coronasdk,Audio Streaming,我正在尝试从网络链接播放音频文件,但现在似乎不起作用。以下是我尝试过的代码: local birdSound = audio.loadSound("www.sound.com/birds.mp3") audio.play(birdSound) 它给出一个错误您无法使用loadSound API在内存中加载远程音频文件,因为此函数仅用于加载本地文件。 默认情况下,将在项目文件夹(system.ResourceDirectory)中搜索该文件,但更改baseDir参数也可以在其他本地文件夹中查找
local birdSound = audio.loadSound("www.sound.com/birds.mp3")
audio.play(birdSound)
它给出一个错误您无法使用loadSound API在内存中加载远程音频文件,因为此函数仅用于加载本地文件。 默认情况下,将在项目文件夹(system.ResourceDirectory)中搜索该文件,但更改baseDir参数也可以在其他本地文件夹中查找 因此,要播放远程音频文件,应首先通过network.download API将其加载到system.documents目录中。完成后,您可以使用loadSound加载它,并指定正确的baseDir
有关network.download API的详细信息,请查看使用下面的狙击手下载远程文件,然后将其保存到base dir的
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( "Network error!" )
if( xmnetwork.errorHandler) then
xmnetwork.errorHandler(event)
end
elseif ( event.phase == "began" ) then
if ( event.bytesEstimated <= 0 ) then
print( "Download starting, size unknown" )
else
print( "Download starting, estimated size (in 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( "Download progress: " .. event.bytesTransferred )
else
print( "Download progress: " .. (event.bytesTransferred / event.bytesEstimated) * 100 .. "'%'")
-- log("xmnetwork.download", "downloading :" .. (event.bytesTransferred / event.bytesEstimated) * 100 .. "'%'")
end
elseif ( event.phase == "ended" ) then
print( "Download complete, total bytes transferred: " .. event.bytesTransferred )
if(xmnetwork.downloadHandlerFinished) then
xmnetwork.downloadHandlerFinished(event)
end
end
end
local params = {}
-- Tell network.request() that we want the "began" and "progress" events:
params.progress = "download"
-- Tell network.request() that we want the output to go to a file:
params.response = {
filename = localFilename,
baseDirectory = basedir
}
xmnetwork.network.request( url, "GET", downloadListener, params )
end
本地网络={
最后一个错误=零,
downloadHandlerInProgress=nil,
downloadHandlerFinished=nil,
下载BeginHandler=nil,
网络=需要(“网络”)
}
函数xmnetwork.download(url、errorHandler、beganHandler、inProgressHandler、endedHandler、localFilename、basedir)
如果(xmnetwork.network==nil),则
xmnetwork.network=require(“网络”)
结束
xmnetwork.downloadHandlerInProgress=inProgressHandler
xmnetwork.downloadHandlerFinished=endedHandler
xmnetwork.downloadBeginHandler=beganHandler
xmnetwork.errorHandler=errorHandler
本地函数下载侦听器(事件)
打印(“下载事件:…tostring(事件))
如果(event.isError)那么
打印(“网络错误!”)
如果是(xmnetwork.errorHandler),那么
xmnetwork.errorHandler(事件)
结束
elseif(event.phase==“开始”),然后
if(event.bytes)