0

我正在使用 phonegap 的 Media 类从 url 流式传输音频,该 url 的格式是带有端口的 ip。在android上工作正常,声音正在播放。在iOS上没有播放,我不知道为什么。谁能告诉我我做错了什么?这是我的流媒体功能。

function playAudio(src) {
    // Create Media object from src
    setAudioPosition("Please wait...");
    my_media = new Media(src, onSuccess, onError);

    // Play audio
    myMedia.play({ playAudioWhenScreenIsLocked : false })
    $('.jp-play').hide();
    $('.jp-pause').show();
    // Update my_media position every second
    if (mediaTimer == null) {
        mediaTimer = setInterval(function() {
            // get my_media position
            my_media.getCurrentPosition(
                // success callback
                function(position) {
                    if (position > -1) {
                        setAudioPosition("Playing");
                    }
                },
                // error callback
                function(e) {
                    console.log("Error getting pos=" + e);
                    setAudioPosition("Error: " + e);
                }
            );
        }, 1000);
    }
}

在项目的 xml 中,我已在白名单中添加了服务器的 ip,但仍然无法正常工作。我该如何解决?

4

2 回答 2

0

您好,我找到了解决方案。我使用了 devgeeks 库。这是每个遇到相同问题的人的链接 https://github.com/devgeeks/ExampleHTML5AudioStreaming

于 2013-07-26T08:18:46.030 回答
0

几个月前有同样的问题,phonegap 播放器不能在 ios 上运行,但它可以在 android 上运行,所做的就是让我的播放器成为原生(Objetive c)并将其称为 phonegap 端(javascript)。

通过制作插件

- (void)play:(CDVInvokedUrlCommand *)command{

NSString* scr = [command.arguments objectAtIndex:0];

CDVPluginResult* pluginResult = nil;
NSString* javaScript = nil;

@try {

    if (scr != nil) {

        if (player.isPreparedToPlay) {


            player.contentURL = [NSURL URLWithString:scr];
            [player play];

        }else {


            MPMoviePlayerController* objplayer =[[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:scr]];

            self.player = objplayer;
            [self.player prepareToPlay];

            player.movieSourceType = MPMovieSourceTypeStreaming;
            player.view.hidden = YES;
            player.useApplicationAudioSession = YES;
            [player play];


        }
        pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
        javaScript = [pluginResult toSuccessCallbackString:@"respuesta"];
    }
} @catch (id exception) {
    pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_JSON_EXCEPTION messageAsString:[exception reason]];
    javaScript = [pluginResult toErrorCallbackString:@"respuesta con error"];
}

[self writeJavascript:javaScript];
}

之后,您在 config.xml 中调用插件

然后在你的 javascript

Cordova.exec(null, null, "playMusic", "Play", [url,url]);
于 2013-09-18T21:55:53.287 回答