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開發 整合ijkplayer實現直播#拉流#播放iOS
- 音視訊通訊——直播協議和視訊推流協議
- iOS免費公開課答疑第四期視訊錄播iOS
- web音訊流轉發之音視訊直播Web音訊
- iOS視訊流採集概述(AVCaptureSession)iOSAPTSession
- 線上視訊教學線上教育直播程式教育培訓系統線上錄播、回播
- Android視訊編碼和直播推流教程Android
- iOS開發系列--音訊播放、錄音、視訊播放、拍照、視訊錄製(轉)iOS音訊
- iOS ARKit錄製視訊(AVAssetWriter & 有聲音)iOS
- IOS 整合 Bilibili IJKPlayer播放器,播放rtmp視訊流iOS播放器
- iOS 儲存攝像頭H264視訊流iOS
- 融雲直播 SDK 2.0 重磅上線,兩步接入即可獲得視訊直播能力
- 安卓手機怎麼錄製直播視訊安卓
- 如何實現 iOS 短視訊跨頁面的無痕續播?iOS
- 直播回顧 | Python web開發破局之道(內附PPT、錄播視訊、提問環節文字梳理)PythonWeb
- 短視訊直播系統開發直播短視訊程式搭建短視訊互動直播
- 開源| 直播推拉流2.0升級了什麼
- Replaykit2(IOS11+)視訊錄製詳解iOS
- .NET開發框架(一)-框架介紹與視訊演示框架
- 3┃音視訊直播系統之瀏覽器中通過 WebRTC 直播視訊實時錄製回放下載瀏覽器Web
- 視訊技術詳解:RTMP H5 直播流技術解析H5
- RTMP推流平臺/視訊直播點播分析平臺/人臉識別系統EasyDSS如何實現RTMP負載均衡?負載
- iOS採集錄製音視訊API選擇推薦iOSAPI
- 視訊直播技術乾貨:一文讀懂主流視訊直播系統的推拉流架構、傳輸協議等架構協議
- 短視訊直播系統,js利用建構函式封裝輪播圖JS函式封裝
- IOS音視訊(二)AVFoundation視訊捕捉iOS
- 基於HDPHP的視訊播客開發視訊PHP
- 靠近阿里雲–視訊點播阿里
- 直播與點播之三_測試、理解
- 虛幻引擎Unreal Circle北京站圓滿落幕·錄播視訊分享Unreal
- [RTMP] 國內各大視訊直播CDN廠商推流搶流行為分析
- 視訊直播技術:最大限度保障流暢性和清晰度
- 直播短視訊原始碼短視訊APP短視訊帶貨系統多商戶直播原始碼APP
- Ubuntu 中使用 Nginx+rtmp 模組搭建流媒體視訊點播服務UbuntuNginx
- 光流與視訊行為識別的關係
- Windows Server 2022 上搭建流媒體直播和點播服務WindowsServer
- 搭建一個點播跟直播流媒體伺服器玩玩伺服器