2011-11-28 5 views
51

में HTTP लाइव स्ट्रीमिंग का कार्यान्वयन मैं थोड़ा आईओएस वीडियो क्लाइंट लिखना चाहता हूं और HTTP लाइव स्ट्रीमिंग का उपयोग करना चाहता हूं। वीडियो एक Wowza मीडिया सर्वर से आते हैं जो HTTP लाइव स्ट्रीमिंग का समर्थन करता है, इसलिए सर्वर-साइड कार्यान्वयन मेरी समस्या नहीं है। मैंने पहले ही डब्ल्यूडब्ल्यूडीसी वीडियो देखे हैं और HTTP लाइव स्ट्रीमिंग के बारे में ऐप्पल दस्तावेज पढ़ा है।आईओएस

लेकिन कहीं भी नहीं बताया गया है कि आईओएस डिवाइस पर वीडियो कैसे खेलें। एक WWDC बात में उल्लेख किया गया था वीडियो प्रदर्शित करने के 3 possebilties देखते हैं कि:

  • UIWebView
  • MPMoviePlayerController
  • AVPlayerItem

कौन सा सबसे अच्छा है?

और मैं इस तरह के एचटीएमएल-पेज से वीडियो-यूआरएल कैसे पढ़ सकता हूं, जो सर्वर द्वारा प्रदान किया जाता है?

<html> 
<head> 
    <title>HTTP Live Streaming Example</title> 
</head> 
<body> 
    <video 
     src="http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8" 
     height="300" width="400" 
    > 
    </video> 
</body> 
</html> 

(स्रोत: Apple HTTP Live Streaming Overview)

मैं वास्तव में जहां कोडिंग ... हो सकता है कि किसी को परेशान "सिले स्ट्रीम प्लेयर" की तुलना में बेहतर उदाहरण कोड पता है या एक छोटे से ट्यूटोरियल लिख सकते हैं के साथ शुरू करने के लिए पता नहीं है ...

उत्तर

54

एक छोटा और बिंदु कार्यान्वयन। शामिल यूआरएल एक वैध स्ट्रीम (12/15/2015 तक) के लिए इंगित करता है, लेकिन आप बस अपने यूआरएल के साथ एक .m3u8 फ़ाइल में प्रतिस्थापित कर सकते हैं।

ऑब्जेक्टिव-सी:

#import <MediaPlayer/MediaPlayer.h> 
@interface ViewController() 
@property (strong, nonatomic) MPMoviePlayerController *streamPlayer; 
@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSURL *streamURL = [NSURL URLWithString:@"http://qthttp.apple.com.edgesuite.net/1010qwoeiuryfg/sl.m3u8"]; 

    _streamPlayer = [[MPMoviePlayerController alloc] initWithContentURL:streamURL]; 

    // depending on your implementation your view may not have it's bounds set here 
    // in that case consider calling the following 4 msgs later 
    [self.streamPlayer.view setFrame: self.view.bounds]; 

    self.streamPlayer.controlStyle = MPMovieControlStyleEmbedded; 

    [self.view addSubview: self.streamPlayer.view]; 

    [self.streamPlayer play]; 
} 

- (void)dealloc 
{ 
    // if non-ARC 
    // [_streamPlayer release]; 
    // [super dealloc]; 
} 

@end 

स्विफ्ट: दोनों भाषाओं के लिए

import UIKit 
import MediaPlayer 

class ViewController: UIViewController { 

    var streamPlayer : MPMoviePlayerController = MPMoviePlayerController(contentURL: NSURL(string:"http://qthttp.apple.com.edgesuite.net/1010qwoeiuryfg/sl.m3u8")) 

    //Let's play 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     streamPlayer.view.frame = self.view.bounds 
     self.view.addSubview(streamPlayer.view) 

     streamPlayer.fullscreen = true 
     // Play the movie! 
     streamPlayer.play() 
    } 

} 

अपडेट किया गया जवाब। आईओएस 9 में भी MPMoviePlayerController को बहिष्कृत किया गया है, लेकिन आप इसके बजाय AVPlayerViewController का उपयोग कर सकते हैं। हैप्पी कोडिंग !!!

+0

एच क्रिस। सरल उदाहरण के लिए धन्यवाद। यह बहुत अच्छा काम करता है। मैं सोच रहा हूं कि आप एक वीडियो से .m3u8 फ़ाइल कैसे बनाते हैं? – Isuru

+3

मेरी साइट थोड़ी देर के लिए नीचे गई है, लेकिन आप अभी भी एक पोस्ट तक पहुंच सकते हैं जो मैंने यहां लिखा था: http://www.christopherlavender.com/tag/http-live-streaming/। इसके अलावा, वहां कुछ पुराने ट्यूटोरियल भी हैं जो अभी भी अच्छे हैं। कुंजी यह है कि यदि आप एचएलएस वीडियो की भूमिका निभा रहे हैं, तो आपको ऐप्पल डेवलपर वेबसाइट से कमांड लाइन सेगमेंटिंग टूल्स की आवश्यकता होगी। वे ठीक काम करते हैं लेकिन दस्तावेज़ीकरण सबसे अच्छा है। – GnarlyDog

+0

ट्यूटोरियल के लिए धन्यवाद। मैं तुरंत इसे देख लूंगा। :) – Isuru

5

यदि आप उस लक्ष्य m3u8 URL पर UIWebView इंगित करते हैं, तो यह केवल काम करेगा।

+7

लॉल मेरा पसंदीदा वाक्यांश है। मुझे प्यार है जब चीजें "बस काम करती हैं" – uofc