Phonegap Media Streaming无法在iOS上运行

时间:2013-07-26 07:26:25

标签: ios cordova audio-streaming

我正在使用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,但是再次无效。我怎么解决它?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

几个月前有同样的问题,手机屏幕播放器没有在ios上运行,但是它在android上运行,这样做是为了让我的播放器本地化(Objetive c)并将其称为de phonegap side(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]);