iOS 視訊直播與錄播拉流框架2.0
效果圖
效果圖因為錄屏工具的原因有很嚴重的卡頓,Demo內效果非常流暢
由於ijk的framework比較大就沒有放入專案內上傳,請自行點選下方連結自取,解壓縮後放入專案內即可
IJKPlayer 的Framework在iOS11.0以上有顯示bug,下面的包已經對該bug進行了適配
點選這裡你可以下載已經打好framework的ijk
該專案基於b站的開源專案ijkplayer 在此基礎上增加了一些基礎功能
1.左側螢幕上下滑動調整亮度
2.右側螢幕上下滑動調整音量
3.橫向左右拖動改變播放進度
4.橫豎屏切換
5.支援視訊播放介面自定義(可以在Demo程式碼內部進行修改控制元件的UI)
支援播放格式
1.支援rtmp,hls直播拉流
2.視訊雲端地址播放
使用方法:
1.引入自定義視訊播放類
#import "LMIJKVideoPlayerView.h"
2.初始化播放控制元件
/** 視訊播放檢視 */
@property (nonatomic, strong) LMIJKVideoPlayerView *playerView;
-(LMIJKVideoPlayerView *)playerView{
if (!_playerView) {
_playerView = [[LMIJKVideoPlayerView alloc]initWithFrame:self.view.frame];
}
return _playerView;
}
3.傳遞播放視訊播放地址或者直播流地址
#pragma mark - life cycle
- (void)viewDidLoad {
[super viewDidLoad];
[self.view addSubview:self.playerView];
//測試地址
//rtmp 直播 香港電視臺測試地址 rtmp://live.hkstv.hk.lxdns.com/live/hks
//錄播 播放流
//http://qimage.owhat.cn/test/master/media/1510731201386.mp4
self.playerView.videoUrl = @"http://qimage.owhat.cn/test/master/media/1510731201386.mp4";
}
4.在控制器銷燬的時候,一定要記住呼叫視訊播放器的銷燬方法
- (void)dealloc{
[self.playerView deallocPlayer];
}
使用場景
1.非複用場景
目前Demo內的使用場景針對於非複用場景,就是針對於非列表頁面,只初始化一次,沒有多個視訊地址切換的場景,可以使用在某些詳情頁面等不需要切換地址的場景直接使用。
2.複用場景
針對於UITableView UICollectionView等列表頁面,或者同一介面需要複用播放器但是要切換播放地址的場景。我在我們自己的專案內也是使用Demo內的播放控制元件兒,但是針對不同的場景進行了細節的優化。
這裡提供一下複用場景的我個人的想法:
主要問題就是:針對於切換播放源的同時,不可以重新初始化播放器的控制元件,這個重新初始化過程非常的消耗資源。我最初我嘗試了該種方法,確實是卡頓嚴重,特別影響使用者體驗。
解決該問題的思路:IJKPlayer 雖然功能上整體比AVPlayer強大,支援的格式也比AVPlayer多,但是有一點兒IJK是比不了AVPlayer的。IJK不具備切換播放地址的原生API,也就是說預設的框架是不支援切換地址的,只能進行重新初始化。但是僅僅只能初始化播放類本身,不要整個初始化自定義播放控制元件。
self.player = [[IJKFFMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:videoUrl] withOptions:options];
單獨針對IJKFFMoviePlayerController進行重新根據VideoURL進行初始化。注意要在初始化之前,銷燬原來的監聽。
具體的程式碼你需要根據你複用的業務來進行。所以就在這裡提供一個思路。可以自行處理後面的邏輯。我在根據上面思路修改完之後,視訊播放起來非常流暢,而且使用者體驗也特別好。本質上就是無論是切換多少個地址和在列表上怎麼滾動,播放視訊的始終是一個播放器控制元件,只不過是根據滾動的位置進行展示和隱藏,播放和暫停。
相關文章
- 視訊直播技術之iOS端推流iOS
- iOS視訊邊下邊播–快取播放資料流iOS快取
- iOS開發 整合ijkplayer實現直播#拉流#播放iOS
- 線上視訊教學線上教育直播程式教育培訓系統線上錄播、回播
- 音視訊通訊——直播協議和視訊推流協議
- web音訊流轉發之音視訊直播Web音訊
- 簡單的iOS直播推流——flv 編碼與音視訊時間戳同步iOS時間戳
- iOS免費公開課答疑第四期視訊錄播iOS
- iOS - 直播系列一:視訊採集iOS
- iOS視訊流採集概述(AVCaptureSession)iOSAPTSession
- iOS開發:音訊播放、錄音、視訊播放、拍照、視訊錄製iOS音訊
- Android視訊直播、點播播放器哪家強?Android播放器
- iOS學習:AVFoundation 視訊流處理iOS
- Android視訊編碼和直播推流教程Android
- iOS開發系列--音訊播放、錄音、視訊播放、拍照、視訊錄製(轉)iOS音訊
- 利用nginx搭建RTMP視訊點播、直播、HLS伺服器Nginx伺服器
- 安卓手機怎麼錄製直播視訊安卓
- 短視訊直播系統開發直播短視訊程式搭建短視訊互動直播
- IBM:2018年直播視訊流報告IBM
- iOS ARKit錄製視訊(AVAssetWriter & 有聲音)iOS
- iOS開發 AVFoundation 自定義視訊錄製iOS
- 視訊會議中或者錄播中使用RTP協議接收h264視訊協議
- 如何實現 iOS 短視訊跨頁面的無痕續播?iOS
- 直播回顧 | Python web開發破局之道(內附PPT、錄播視訊、提問環節文字梳理)PythonWeb
- 唱吧 iOS 音視訊快取處理框架iOS快取框架
- 3┃音視訊直播系統之瀏覽器中通過 WebRTC 直播視訊實時錄製回放下載瀏覽器Web
- 開源| 直播推拉流2.0升級了什麼
- 視訊技術詳解:RTMP H5 直播流技術解析H5
- 「視訊直播技術詳解」系列之四:推流和傳輸
- iOS 儲存攝像頭H264視訊流iOS
- .NET開發框架(一)-框架介紹與視訊演示框架
- 基於HDPHP的視訊播客開發視訊PHP
- 視訊直播技術乾貨:一文讀懂主流視訊直播系統的推拉流架構、傳輸協議等架構協議
- 短視訊直播系統,js利用建構函式封裝輪播圖JS函式封裝
- RTMP推流平臺/視訊直播點播分析平臺/人臉識別系統EasyDSS如何實現RTMP負載均衡?負載
- Ubuntu 中使用 Nginx+rtmp 模組搭建流媒體視訊點播服務UbuntuNginx
- 直播短視訊原始碼短視訊APP短視訊帶貨系統多商戶直播原始碼APP
- 視訊點播開發者實戰:視訊水印的基本使用