Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何播放web url音频文件?_Web_Lua_Coronasdk_Audio Streaming - Fatal编程技术网

如何播放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)