0

Webリンクからオーディオファイルを再生しようとしていますが、現在機能していないようです。これらは私が試したコードです:

local birdSound =  audio.loadSound("www.sound.com/birds.mp3")
audio.play(birdSound)

エラーが発生します

4

2 に答える 2

2

この関数は単にローカル ファイルをロードすることを目的としているため、loadSound API を使用してリモート オーディオ ファイルをメモリにロードすることはできません。デフォルトでは、ファイルはプロジェクト フォルダー (system.ResourceDirectory) で検索されますが、baseDir パラメーターを変更すると、別のローカル フォルダー内を検索することもできます。

したがって、リモート オーディオ ファイルを再生するには、まず network.download API を介して system.DocumentsDirectory にダウンロードする必要があります。完了したら、正しい baseDir を指定して、loadSound でロードできます。

network.download API の詳細については、こちらをご覧ください

于 2012-10-12T18:39:24.097 に答える
0

以下のスナイパーを使用してリモート ファイルをダウンロードしlocalFilename、ベース dirに保存しbasedirます。

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
于 2014-10-18T08:47:06.360 に答える