0

2 つのオーディオ ファイルを続けて再生する必要があります。「私の名前は」という汎用ファイルがあります。

次に、別のオーディオ文字列を持つ別のオーディオ ファイルが続きます。

例: a.mp3 が「私の名前は」 b.mp3 が「John」であるとします。

しかし、MPMoviePlayerController の contentURL を設定すると。最初のオーディオをスキップして、2 番目のオーディオを再生します。

これが私のコードです:

- (void) playPromptAudio
{[appDelegate.globalPlayer setContentURL:[NSURL 
             URLWithString:@"http://localhost/a.mp3"]];

    [appDelegate.globalPlayer prepareToPlay];
    [appDelegate.globalPlayer play];

    while (appDelegate.globalPlayer.playbackState == MPMoviePlaybackStatePlaying ) {
        // dirty hack, do gracefully
        // do nothing
    }

    [appDelegate.globalPlayer setContentURL:[NSURL URLWithString:@"http://localhost/b.mp3"]];
        [appDelegate.globalPlayer prepareToPlay];
    [appDelegate.globalPlayer play];
}

しかし、コードを実行すると、"John" だけが再生されます。

コードをデバッグした後、関数全体を実行した後にオーディオの再生が開始されることがわかります。そのため、最後に設定されているため、"John" が再生されていることが明らかです。しかし、この動作を防ぐ方法はありますか?

4

1 に答える 1

0

MPMoviePlayerController の再生については、このリンクを試してください。

以下のコードは、nodification で MpMoviePlayer を再生します。

        NSURL *url = [NSURL fileURLWithPath:filePath isDirectory:NO];
        self.moviePlayer = [[[MPMoviePlayerController alloc] initWithContentURL:url]
                    autorelease];
        moviePlayer.shouldAutoplay = NO;
        moviePlayer.view.frame = view_video.bounds;
        moviePlayer.scalingMode= MPMovieScalingModeFill;
        moviePlayer.controlStyle =MPMovieControlStyleNone;
        [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
        [[NSNotificationCenter defaultCenter] addObserver:self 
                                                 selector:@selector(doneButtonClick:) 
                                                     name:MPMoviePlayerPlaybackDidFinishNotification 
                                                   object:nil];
        [moviePlayer Play]; 

以下の関数は MpMovieplayerController Playbackfinished と呼ばれます:

     -(void)doneButtonClick:(NSNotification*)aNotification{
        NSLog(@"MPMoviePlayer is finished..!");
     }

ありがとう....!

于 2012-04-26T12:49:04.337 に答える