您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页一个基础功能的视频播放器(XXVideoPlayer)-AVPl

一个基础功能的视频播放器(XXVideoPlayer)-AVPl

来源:二三娱乐
  • 编译环境 Xcode 8
  • AVPlayer相关
  • AVPlayerItem
  • 支持多种视频格式
  • 完成了 快进 快退 暂停 播放 全屏等视频播放器的基础功能
  • 后期会添加更加丰富的内容, 还可能写一个Swift版本的
_avPlayerItem = [[AVPlayerItem alloc] initWithURL:playFormURL];

// 通过AVPlayerItem创建一个AVPlayer对象
self.avPlayer = [[AVPlayer alloc] initWithPlayerItem:_avPlayerItem];
// 创建 AVPlayerLayer
self.playLayer = [AVPlayerLayer playerLayerWithPlayer:self.avPlayer];
// 添加到要显示视频的View
[self.view.layer addSublayer:self.playLayer];
// 播放 | 暂停
- (void)xx_VideoPlay
{
[self.avPlayer play];
}
- (void)xx_VideoPause
{
[self.avPlayer pause];
}
// 快进处理 slider 就是滑动条.
[self.avPlayer seekToTime:CMTimeMakeWithSeconds(slider.value, self.avPlayerItem.currentTime.timescale)];
// 获取总的播放时间 self.avPlayerItem(当前播放AVPlayerItem的对象)
CMTimeGetSeconds(self.avPlayerItem.asset.duration)
// 观察AVPlayerItem的播放状态
AVF_EXPORT NSString *const AVPlayerItemTimeJumpedNotification            NS_AVAILABLE(10_7, 5_0);   // the item's current time has changed discontinuously
AVF_EXPORT NSString *const AVPlayerItemDidPlayToEndTimeNotification      NS_AVAILABLE(10_7, 4_0);   // item has played to its end time
AVF_EXPORT NSString *const AVPlayerItemFailedToPlayToEndTimeNotification NS_AVAILABLE(10_7, 4_3);   // item has failed to play to its end time
AVF_EXPORT NSString *const AVPlayerItemPlaybackStalledNotification       NS_AVAILABLE(10_9, 6_0);    // media did not arrive in time to continue playback
AVF_EXPORT NSString *const AVPlayerItemNewAccessLogEntryNotification     NS_AVAILABLE(10_9, 6_0);   // a new access log entry has been added
AVF_EXPORT NSString *const AVPlayerItemNewErrorLogEntryNotification      NS_AVAILABLE(10_9, 6_0);   // a new error log entry has been added

// notification userInfo key                                                                    type
AVF_EXPORT NSString *const AVPlayerItemFailedToPlayToEndTimeErrorKey     NS_AVAILABLE(10_7, 4_3);   // NSError
// 旋转方法 之后 调整frame
[self.view setTransform:CGAffineTransformMakeRotation(M_PI_2)];
// 取消全屏
[self.view setTransform:CGAffineTransformIdentity];
// 隐藏状态栏的相关方法
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
// 同时需要在info.plist文件中进行配置
// View controller-based status bar appearance = NO

不同的是 36Kr使用MPMoviePlayerController, 而我使用AVPlayer, UI方面我直接使用了他提供的UI方便快速, 当然可以随意修改, 简单方便.

最后感谢您的阅读, 如果感觉有帮助可以关注我 和我一起学习!

我是夏天, 暖暖的夏天
End

可以关注我的订阅号 [夏天然后 ID: xt1005430006]

夏天然后

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务