最近視頻直播功能比較火,處於需求,研究了一番,根據分析決定使用流媒體實現,代碼簡單易懂,接下來看教程:
簡單介紹:
HLS 協議 : >5M會被AppStore拒絕 服務器要求低 延遲高 多平台 RTMP 協議: 電視直播 PC端使用 配合flash插件 及時性好 需要轉碼ffmpeg 延遲200ms RTSP 協議: 攝像頭功能 軟解碼: ffmpeg 硬解碼:ios8之後 VideoToolBox 框架教程准備:
下載第三方支持:vitamio github地址:https://github.com/yixia/Vitamio-iOS.git
1.將如圖拖入工程:
每日更新關注:http://weibo.com/hanjunqiang 新浪微博
2.添加如圖依賴庫:
3.修改如圖配置信息(雙擊輸入 -ObjC):
注意:輸入的-ObjC兩邊大寫其他小寫,錯一個都會造成運行Crash
每日更新關注:http://weibo.com/hanjunqiang 新浪微博
4.代碼部分:
// Created by HanJunqiang on 16/6/5. // Copyright © 2016年 HaRi. All rights reserved. // #import "ViewController.h" //http://wow01.105.net/live/virgin1/playlist.m3u8 //http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8 C1高清 //http://ivi.bupt.edu.cn/hls/cctv3hd.m3u8 C3高清 //http://ivi.bupt.edu.cn/hls/cctv5hd.m3u8 C5高清 //http://ivi.bupt.edu.cn/hls/cctv5phd.m3u8 C5+高清 //http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8 C6高清 //http://ivi.bupt.edu.cn/hls/cctv8hd.m3u8 C8高清 //http://ivi.bupt.edu.cn/hls/chchd.m3u8 CHC高清電影 //http://ivi.bupt.edu.cn/hls/btv6hd.m3u8 北京體育高清 //http://ivi.bupt.edu.cn/hls/hunanhd.m3u8 湖南高清 //http://ivi.bupt.edu.cn/hls/zjhd.m3u8 浙江高清 //http://ivi.bupt.edu.cn/hls/gdhd.m3u8 廣東高清 //http://ivi.bupt.edu.cn/hls/tjhd.m3u8 天津高清 #define kMVAdress @"http://wow01.105.net/live/virgin1/playlist.m3u8" #import "VMediaPlayer.h" @interface ViewController ()@property (nonatomic, strong)VMediaPlayer *vPlay; @end @implementation ViewController -(void)dealloc { [_vPlay unSetupPlayer]; } - (void)viewDidLoad { [super viewDidLoad]; _vPlay = [VMediaPlayer sharedInstance]; [_vPlay setupPlayerWithCarrierView:self.view withDelegate:self]; NSURL *vUrl = [NSURL URLWithString:kMVAdress]; [_vPlay setDataSource:vUrl header:nil]; [_vPlay prepareAsync]; } // 當'播放器准備完成'時, 該協議方法被調用, 我們可以在此調用 [player start] // 來開始音視頻的播放. - (void)mediaPlayer:(VMediaPlayer *)player didPrepared:(id)arg { [player start]; } // 當'該音視頻播放完畢'時, 該協議方法被調用, 我們可以在此作一些播放器善後 // 操作, 如: 重置播放器, 准備播放下一個音視頻等 - (void)mediaPlayer:(VMediaPlayer *)player playbackComplete:(id)arg { [player reset]; } // 如果播放由於某某原因發生了錯誤, 導致無法正常播放, 該協議方法被調用, 參 // 數 arg 包含了錯誤原因. - (void)mediaPlayer:(VMediaPlayer *)player error:(id)arg { NSLog(@"NAL 1RRE &&&& VMediaPlayer Error: %@", arg); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
有好的建議或者問題咨詢請關注博主微博進行咨詢: