2016-04-15 5 views
0

私はストリーミングアプリをiOSしています。私のストリーミングURLはうまく動作します。 AudioStreamerを.m3u8ファイルのURLに使用するにはどうすればよいですか?.m3U8ファイルをストリーミングできません

+0

ライブオーディオ/ビデオストリームを再生するために 'AVPlayer 'をすでに持っている場合、なぜ' AudioStreamer'が必要なのですか?オーディオをストリームするには 'AVPlayer'を使います。 –

答えて

0

試してみて、解析M3U8ファイルをして、リソースへの実際のURLを取得し、AudioStreamerにそのURLを渡す事前にありがとうございます。

ここに - >https://github.com/Achillesun/M3U8Paserあなたはプレイリストを解析するM3U8Parserのlibを見つけることができます。

以下はM3U8フォーマットの例である:あなたがAudioStreamerが内部AVPlayerを使用していますけれどもあなたは、簡単にAVPlayerでそれを行うことができるときAudioStreamerクラスを使用する必要があるのはなぜ

#EXTM3U 
#EXT-X-TARGETDURATION:10 

#EXT-X-MEDIA-SEQUENCE:1 

#EXTINF:10, 
http://video.example.com/segment0.ts 
#EXTINF:10, 
http://video.example.com/segment1.ts 
#EXTINF:10, 
http://video.example.com/segment2.ts 
#EXT-X-ENDLIST 
1

コードでは、AVPlayerを使用してライブストリーミングオーディオを再生すると、ソースURLを変更してストリームを埋め込むことができます。

プロジェクト - >標的 - の下であなたのLinked Frameworks and LibrariesセクションにAVFoundation.frameworkを追加することを忘れないでください>リンクされたフレームワークとライブラリ

#import "ViewController.h" 
#import <AVFoundation/AVFoundation.h> 

@interface ViewController() 
{ 
    AVPlayerItem * mPlayerItem; 
} 

@property (readwrite, retain, setter=setPlayer:, getter=player) AVPlayer* mPlayer; 
@property (strong) AVPlayerItem *mPlayerItem; 

@end 

@implementation ViewController 

@synthesize mPlayer; 
@synthesize mPlayerItem; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    // *** Initialise player and register observer *** 
    NSURL *url = [NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"]; 

    self.mPlayerItem = [AVPlayerItem playerItemWithURL:url]; 

    self.mPlayer = [AVPlayer playerWithPlayerItem:self.mPlayerItem]; 

    // *** Add Observer on AVPlayerItem to observer progress & status *** 
    [self.mPlayerItem addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:nil]; 

    [self.mPlayer play]; 
} 

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
         change:(NSDictionary *)change context:(void *)context 
{ 
    if (object == self.mPlayerItem && [keyPath isEqualToString:@"status"]) 
    { 
     if (self.mPlayer.currentItem.status == AVPlayerItemStatusFailed) 
     { 
      NSLog(@"------player item failed:%@",self.mPlayer.currentItem.error); 
     } 
     else if (self.mPlayer.currentItem.status == AVPlayerStatusReadyToPlay) 
     { 
      NSLog(@"Play"); 
      [self.mPlayer play]; 
     } 
     else if (self.mPlayer.currentItem.status == AVPlayerStatusFailed) 
     { 
      // something went wrong. player.error should contain some information 
      NSLog(@"Unable to play."); 
      NSLog(@"%@",self.mPlayer.error); 
     } 
     else if (self.mPlayer.currentItem.status == AVPlayerItemStatusUnknown) 
     { 
      NSLog(@"AVPlayer Unknown"); 
     } 
    } 
} 

私はたくさんある、それはあなたが理解するのに役立ちます願っています指定されたコードでAVPlayerとすることができます。幸せなコーディング:)

+0

それは私のために働いた... –

関連する問題