ios拉流软件_iOS 视频直播与录播拉流框架2.0

2023-05-16

效果图

ijkplayerDemoGif.gif

效果图因为录屏工具的原因有很严重的卡顿,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进行初始化。注意要在初始化之前,销毁原来的监听。

具体的代码你需要根据你复用的业务来进行。所以就在这里提供一个思路。可以自行处理后面的逻辑。我在根据上面思路修改完之后,视频播放起来非常流畅,而且用户体验也特别好。本质上就是无论是切换多少个地址和在列表上怎么滚动,播放视频的始终是一个播放器控件,只不过是根据滚动的位置进行展示和隐藏,播放和暂停。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ios拉流软件_iOS 视频直播与录播拉流框架2.0 的相关文章

  • 当地图视图只是屏幕的一部分时,如何在 iOS 模拟器中进行捏合?

    我在 iPad 上有一个视图 我正在添加MKMapView也就是说 全屏高度的一半 然而 当我尝试在 iOS 模拟器上进行捏合时 它不起作用 因为 to nubs 填充了模拟器上的整个 iPad 视图 And so with the map
  • 在 Xcode 5 中重命名 iOS 项目[重复]

    这个问题在这里已经有答案了 我需要重命名一个 iOS 项目 有没有办法在不开始一个全新项目的情况下做到这一点 我发现的所有其他信息都与 Xcode 4 或旧版本相关 这些方法似乎使项目崩溃 我在尝试任何名称更改之前创建了一个快照 在 Xco
  • 如何在 React Native 中构造 POST 请求主体,而不是使用字符串化的 json,而是使用 json?

    我正在努力用 React Native 替换一些本机代码 预期的 POST 请求 在AFNetworking in Charles应该是这样的 代码片段 NSError err NSData paramData NSJSONSerializ
  • 如何让按钮闪烁?

    我试图在扫描正确时将按钮的颜色 只是闪烁 闪烁 更改为绿色 在出现问题时将按钮的颜色更改为红色 我可以用这样的视图来做到这一点 func flashBG UIView animateWithDuration 0 7 animations s
  • 哪些 Flutter 插件或功能可以利用外部 iOS/Android 显示器来显示与主显示器不同的内容

    我正在构建一个跨平台应用程序 需要在外部显示器上显示不同的视图 通常通过连接到 LCD 投影仪的 HDMI 适配器电缆连接 Flutter 是否能够在内置的外部显示器上显示不同的屏幕 在现有的 Flutter 插件中还是使用现有的 Flut
  • 错误消息:您输入的捆绑包 ID 已被使用

    我正在尝试发布一个 iPhone 应用程序 这不是第一个 我过去已经发表过其他的 因此 我在第一个和第二个表单中输入了所需的信息 然后填写了第三个大表单 您还可以在其中上传图标和屏幕截图 好吧 我在上传屏幕截图之前按下了 保存 按钮 因为我
  • 如何使用 alamofire 通过基本身份验证上传图像?

    我正在尝试使用 alamofire 4 7 1 和此代码上传图像 但说实话 我怀疑我没有编写正确的代码来上传图像 func uploadDefect defectRemark String defectLocation String def
  • Flutter 应用程序在 iOS 平台的 firebase 电话身份验证中崩溃

    我在我的项目中实现了 Firebase Phone auth 在 Android 端 一切正常 但对于 iOS 端 当我尝试从我的端发送验证码时 应用程序崩溃并失去连接 我已在下面提交了我的代码 主程序 dart class MyApp e
  • Xamarin - 错误:dsymutil 退出,代码为 72

    最近升级到 VS for Mac 8 10 21 在构建应用程序时 我得到 Xamarin Shared targets 3 3 Error dsymutil exited with code 72 这是 Xcode 13 3 的情况 完整
  • 将类型传递给通用 Swift 扩展,或者理想情况下推断它

    说你有 class Fancy UIView 你想找到所有兄弟姐妹Fancy意见 没问题 https stackoverflow com q 37232743 294884 for v UIView in superview subview
  • 如何删除 UITableView 中的缩进?

    首先 我对此很陌生 我很可能忘记了一些非常简单的事情 问题 我正在制作一个应用程序 在 a 中显示来自 imgur com 的随机图像tableView 由于某种原因 所有单元格都会缩进少量 如下图所示 我摆弄了许多设置storyboard
  • 未知异常和崩溃

    当我尝试快速滚动表格视图或从远程重新加载数据时 我的应用程序崩溃了 当我先进行远程获取然后滚动表格视图时 一切似乎都工作正常 我不知道下面的崩溃日志意味着什么 它只是有时工作正常 有时崩溃 Incident Identifier 710A1
  • 如何使用phonegap在iOS应用程序中防止键盘推送webview

    当屏幕底部的输入字段获得焦点时 键盘会向上推我的网络视图 并且页面的上部不再可见 我想防止键盘推高网络视图 有人有主意吗 对焦 设置window scrollTo 0 0 这可以防止键盘完全推高 webview input on focus
  • 根据内容自动更改单元格高度 - Swift

    在 Swift 中使用 UITableView 有人可以帮我根据标签 图片和描述自动更改单元格的高度吗 所有信息都正确传递 我只需要帮助格式化它 我尝试使用调整它cell frame size height 但这没有效果 我可以更改故事板中
  • 防止 iOS 键盘在 cordova 3.5 中滚动页面

    我正在使用 Cordova 3 5 和 jQuery mobile 构建 iOS 应用程序 我在大部分应用程序中禁用了滚动功能 但是 当我选择输入字段时 iOS 键盘会打开并向上滚动页面 我不想要这个功能 由于输入足够高 键盘不会覆盖它 我
  • UICollectionView setLayout:animated: 不保留 zIndex

    我注意到打电话时setLayout animated in a UICollectionView要在两个布局之间切换 当前可见的单元格不遵循zIndex它的布局属性已设置在layoutAttributesForItemAtIndexPath
  • 有没有办法在 onclick 触发时禁用 iPad/iPhone 上的闪烁/闪烁?

    所以我有一个有 onclick 事件的区域 在常规浏览器上单击时 它不会显示任何视觉变化 但在 iPad iPhone 上单击时 它会闪烁 闪烁 有什么办法可以阻止它在 iPad iPhone 上执行此操作吗 这是一个与我正在做的类似的示例
  • ios8 键盘高度有所不同

    我使用下面的代码来获取键盘高度 该高度在带有 ios8 的 iPhone 5s 设备中与带有 ios7 的 IPhone4s 设备中有所不同 因此 当我在带有 ios8 的 iPhone5s 中点击它时 我的文本字段移动得非常高 而相同的代
  • Mac 上的 Delphi - 可能吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我负责一个 Delphi Win32 项目管理应用程序 我刚刚完成了向 Delphi 2009 的迁移
  • 使用强光混合模式时突出显示伪影

    我正在 iPhone 应用程序中使用顶部图像的 HardLight 混合模式混合两个图像 它看起来像这样 UIGraphicsBeginImageContext size sourceImage drawInRect rectangle b

随机推荐