音视频
刘小哈哈哈
这个作者很懒,什么都没留下…
展开
-
iOS音视频中 AVAudioSessionCategory 的用法
最近在开发中音视频中遇到一些没有声音,或者,播放的时候其他APP的音乐仍然在播放的问题,这里将一些解决方法和一些技术点总结如下。原创 2023-03-07 20:45:37 · 731 阅读 · 0 评论 -
iOS使用ZFPlayer 实现视频播放
2创建containerView, 也就是视频视图的父视图我们可以在该containerView 中添加和视频相关信息,比如视频名称,作者信息,内容简介等等,一般情况下,视频的第一帧的图片也是放在该containerView中的3 创建 controllView这里的controllView 主要包括视频操作相关的空间,比如视频时长,视频进度条,视频快进等等注意: controlView 需要遵循 ZFPlayerMediaControl 协议............原创 2022-07-09 15:22:42 · 4941 阅读 · 0 评论 -
iOS 自定义抖音效果进度条实现拖拽修改播放进度
在整个进度条视图上添加拖拽手势,根据手势所在的位置参数转换成宽度比例,实现修改播放进度这里关键用到了手势的这个接口 *- (CGPoint)locationInView:(nullable UIView)view; **计算出手势的进度 和占的宽度比例完整代码这里为了方便,将两个类放到同一个文件当.h.m.........原创 2022-07-08 18:28:17 · 1818 阅读 · 2 评论 -
iOS设置视频画面的填充方式
如图所示,通过设置 AVPlayerLayer 对象的 videoGravity 属性来设置视频画面的填充样式默认是 AVLayerVideoGravityResizeAspect 保持视频宽高比不变,并将视频画面完全展示在视图中AVLayerVideoGravityResizeAspectFill , 是保持视频宽和高比例不变的情况下将屏幕完全填满,视频画面可能会被切削AVLayerVideoGravityResize 使视频完全充满视图,视频可能变形,宽高比和视频初始值可能不一致代码...原创 2022-06-16 22:16:55 · 1128 阅读 · 0 评论 -
修复iOS边下边播中进入后台暂停播放之后不能继续下载播放的问题
问题进入到后台之后,要暂停视频的播放,如果这时候正在进行视频资源的下载,则进入到前台之后,不能继续播放视频问题代码- (void)pause { [self.player pause]; self->_isPlaying = NO; self.playState = ZFPlayerPlayStatePaused; [_playerItem cancelPendingSeeks]; [_asset cancelLoading];}修复去掉 AV原创 2022-03-03 09:50:33 · 635 阅读 · 0 评论 -
修复iOS开始播放视频有一个闪动
问题开始播放视频的时候,有一个闪动原因没有播放的时候,有封面图,开始播放之后,封面图消失,开始播放,这时候视频画面还没有展示,这个小的间隙就造成了闪动修复开始展示视频画面的时候,隐藏封面图- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {原创 2022-03-02 14:31:31 · 744 阅读 · 0 评论 -
iOS UITableView调用 reloadData之后同一个indexPath的cell 可能不是同一个对象
遇到一个问题 ,我们滚动到一个 cell的时候就会开始播放视频,但是在请求更多数据,并且刷新之后,播放视频的视图并没有添加到cell 上面。、代码如下图![请添加图片描述](https://img-blog.csdnimg.cn/6ae97e9f9308471a8e9873a1cb60966f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YiY5YiY5bCP5Y2a,size_20,c原创 2022-03-02 14:24:44 · 442 阅读 · 0 评论 -
iOS 获取一个cell从屏幕中消失的时机
需求如上图,是一个竖视频页面,可以上下滑动,当当前视频从屏幕中滑出的时候,需要将播放页面移除,并暂停播放代码这里需要注意的是,偶尔的情况下,当前屏幕中的cell也会执行这个方法,所以这里需要添加一个判断,判断cell是否在屏幕中- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{原创 2022-02-24 14:25:29 · 4150 阅读 · 0 评论 -
iOS播放已经下载,部分下载,没有下载的视频资源
逻辑1) 已经下载完毕,直接使用资源路径2) 部分下载,使用资源路径,并开始下载3) 没有下载,开始边下边播 if ([ZFPlayerCacheManager isfinishedLoadedWithURL:urlString]) { ///已经下载完毕 NSString *path = [[ZFPlayerCacheManager shareManager] diskCachePathForURL:urlString]; mutedUrl =原创 2022-02-18 11:54:11 · 1627 阅读 · 0 评论 -
iOS 获取scrollView将要 停止拖动的时候的目标偏移量, 实现抖音无缝播放效果
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset-{ /// 获取当前索引 NSInteger currentIndex = (*targetContentOffset).y/scrollView.bounds.size.height;原创 2022-02-12 21:44:30 · 1468 阅读 · 0 评论 -
iOS 下载开始的时候获取将要下载完成的文件的大小
在NSURLSessionDataDelegate 代理方法中获取将要下载完成的文件的大小expectedContentLength//网络资源下载请求获得响应- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResp原创 2022-01-23 14:01:15 · 2101 阅读 · 0 评论 -
iOS 边下边播中即时保存请求到的视频数据
//接收网络资源下载数据- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data { [self storeDataToDiskCache:data:key:self.url:extention:"mp4"]; }}- (void)storeDataToDiskCache:(NSData *)data key:(NS原创 2022-01-21 17:58:29 · 4339 阅读 · 0 评论 -
AVAssetResourceLoaderDelegate 代理方法执行逻辑
创建播放器 AVURLAsset *asset = [AVURLAsset URLAssetWithURL:[NSURL URLWithString:@"kkkk"] options:nil]; [asset.resourceLoader setDelegate:self queue:dispatch_get_main_queue()]; AVPlayerItem *item = [AVPlayerItem playerItemWithAsset:asset]; _player原创 2022-01-20 17:31:13 · 9174 阅读 · 0 评论 -
iOS 展示播放视频画面
主要代码 playerLayerWithPlayer _player = [AVPlayer playerWithPlayerItem:_playerItem]; _playerLayer = [AVPlayerLayer playerLayerWithPlayer:_player]; _playerLayer.frame = _playerView.bounds; [self.playerView.layer addSublayer:_playerLayer];原创 2022-01-20 09:56:01 · 2796 阅读 · 1 评论 -
iOS 获取视频当前缓冲的时间 - 即可以播放的时间
- (NSTimeInterval)availableDuration { ///获取缓冲的时间数组 ,数组中的对象是 CMTimeRangeValue NSArray *timeRangeArray = _playerItem.loadedTimeRanges; CMTime currentTime = [_player currentTime]; BOOL foundRange = NO; CMTimeRange aTimeRange = {0}; if (t原创 2021-12-11 13:02:07 · 1636 阅读 · 0 评论 -
iOS 播放视频的基本步骤
步骤1 使用视频链接生成 AVURLAsset2 使用 AVURLAsset 生成 AVPlayerItem3 使用 AVPlayerItem 生成 AVPlayer4 将 AVPlayer 赋值给 AVPlayerLayer生成 AVPlayer/// asseturl 示例 http://video2.thepaper.cn/output/5d5e27ed4f9042d6b4d1823185d46a0f/sd/79f5a60e-ece6-4614-9ce1-1c6552e4d4e1-320c原创 2021-10-28 16:56:47 · 2943 阅读 · 0 评论