avplayer 播放视频

最近在做一个小学生教育方面的项目,要在应用中看各种各样的小故事,所以要用到视频,刚把视频方面的东西搞好,在这里稍微的分享一下

首先介绍几个方法吧和属性吧。

- (id)addPeriodicTimeObserverForInterval:(CMTime)interval queue:(dispatch_queue_t)queue usingBlock:(void (^)(CMTime time))block

这个方法可以用于跟新进度条。

- (void)seekToTime:(CMTime)time completionHandler:(void (^)(BOOL finished))completionHandler

这个是设置从哪个位置开始播放

CMTime changedTime = CMTimeMakeWithSeconds(timeFloat, 1.0);

获取 CMTime

rate 播放的状态  0 表示暂停  1表示播放

volume 声音

下面是主要的代码

 1 +(Class)layerClass
 2 {
 3     return [AVPlayerLayer class];
 4 }
 5
 6 -(void)setMoviePlayer:(AVPlayer *)moviePlayer
 7 {
 8     AVPlayerLayer *layer = (AVPlayerLayer *)[self layer];
 9     layer.videoGravity = AVLayerVideoGravityResizeAspectFill;
10     layer.player = moviePlayer;
11 }
12
13 -(AVPlayer *)moviePlayer
14 {
15     AVPlayerLayer *layer = (AVPlayerLayer *)[self layer];
16     return layer.player;
17 }
 1 /**
 2  *  初始化视频播放器
 3  *
 4  *  @param movieUrl url网址
 5  */
 6 -(void)setMovieUrl:(NSString *)movieUrl
 7 {
 8     _movieUrl = movieUrl;
 9     _movieItem = [AVPlayerItem playerItemWithURL:[NSURL URLWithString:movieUrl]];
10     _moviePlayer = [AVPlayer playerWithPlayerItem:_movieItem];
11     _moviePlayer.volume = 0.5;
12     [_voiceView setProgressView:0.5];
13     _playerLayer.moviePlayer = _moviePlayer;
14     [self addNotifiction];
15     [_playerLayer.moviePlayer pause];
16 }
/**
 *  添加监听
 */
-(void)addNotifiction
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackFinishedNotifiction:) name:AVPlayerItemDidPlayToEndTimeNotification object:_playerLayer.moviePlayer.currentItem];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackError:) name:AVPlayerItemNewAccessLogEntryNotification object:_playerLayer.moviePlayer.currentItem];
    [_movieItem addObserver:self forKeyPath:@"loadedTimeRanges" options:NSKeyValueObservingOptionNew context:nil];
}
 1   //获取播放的进度
 2     AVPlayerItem *mobieItem = _movieItem;
 3     __block LSCacheView * progress = _progressView;
 4     [_moviePlayer addPeriodicTimeObserverForInterval:CMTimeMake(1.0, 1.0) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) {
 5         float current=CMTimeGetSeconds(time);
 6         float total=CMTimeGetSeconds([mobieItem duration]);
 7         if (current) {
 8             [progress setProgressView:(current/total)];
 9         }
10     }];
    if ([keyPath isEqualToString:@"loadedTimeRanges"]) {
        NSTimeInterval timeInterval = [self availableDuration];
        NSTimeInterval cuttTime = CMTimeGetSeconds(_movieItem.currentTime);
        CMTime duration = _movieItem.duration;
        CGFloat totalDuration = CMTimeGetSeconds(duration);

        if (cuttTime < timeInterval)
        {
            //有时候网络卡会自动暂停,通过这个方式可以避免这种方式
            if (_playerLayer.moviePlayer.rate == 0 && _playerButton.isSelected == YES)
            {
                [_playerLayer.moviePlayer play];
            }
        }
        else
        {

        }
    }

以上这些我认为就是主要的代码了。哦   还有个进入全屏播放的方式,大部分的项目都用到了UINavigationController,所以我用的横屏播放方式是模态跳转的方式

在需要横屏的controller添加以下代码

 1 - (BOOL)shouldAutorotate
 2 {
 3     return NO;
 4 }
 5
 6 -(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
 7 {
 8     return UIInterfaceOrientationLandscapeRight;
 9 }
10
11 -(NSUInteger)supportedInterfaceOrientations
12 {
13     return UIInterfaceOrientationMaskLandscapeRight;
14 }

这便可以跳转进入的时候横屏了

这里可以下载源码

https://github.com/LuShui/player

时间: 2024-08-01 21:47:51

avplayer 播放视频的相关文章

ios开发视频播放后台下载功能实现 :1,ios播放视频 ,包含基于AVPlayer播放器,2,实现下载,iOS后台下载(多任务同时下载,单任务下载,下载进度,下载百分比,文件大小,下载状态)(真机调试功能正常)

ABBPlayerKit ios开发视频播放后台下载功能实现 : 代码下载地址:https://github.com/niexiaobo/ABBPlayerKit github资料学习和下载地址:https://github.com/niexiaobo/ 实现功能 :播放视频 ,视频后台下载 (真机调试功能正常) 1.使用ZFPlayer播放视频(可以在线和本地播放,基于AVPlayer,调节音量和屏幕亮度) 2.使用 WHCNetWorkKit 实现下载,后台下载(多任务同时下载,单任务下载,

iOS开发-- 利用AVPlayer播放远程音乐和视频

一.简单的播放音乐和视频,播放视频的工具栏需要自己写 二.利用老师封装的框架实现视频播放 链接:http://pan.baidu.com/s/1hrEKlus 密码:8e7g

AVAssetReader+AVAssetReaderTrackOutput播放视频

该文章引用自:http://www.jianshu.com/p/3d5ccbde0de1 IOS 微信聊天发送小视频的秘密(AVAssetReader+AVAssetReaderTrackOutput播放视频) 对于播放视频,大家应该一开始就想到比较方便快捷使用简单的MPMoviePlayerController类,确实用这个苹果官方为我们包装好了的 API 确实有很多事情都不用我们烦心,我们可以很快的做出一个视频播放器,但是很遗憾,高度封装的东西,就证明了可自定义性越受限制,而MPMovieP

利用AVFoundation播放视频

利用AVFoundation播放视频 by 伍雪颖 #import <AVFoundation/AVFoundation.h> NSURL *URL = [[NSBundle mainBundle] URLForResource:@"13_cn" withExtension:@"mp4"]; AVPlayer *player = [AVPlayer playerWithURL:URL]; AVPlayerLayer *playerLayer = [AVP

[Xcode10 实际操作]六、媒体与动画-(16)使用MediaPlayer框架播放视频

本文将演示视频的播放功能. 在项目名称上点击鼠标右键,弹出右键菜单, 选择[Add Files to "DemoApp"],往项目中导入文件命令. 点击选择一个影片素材->[Add] 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UIKit 2 //AVFoundation框架用来处理基于时间的媒体数据. 3 //可以用来检查.创建.编辑或是重新编码媒体文件. 4 //也可以从设备中获取输入流 5 //在视频实时播放时操作和

Android使用TextureView播放视频

1.引言 如果你想显示一段在线视频或者任意的数据流比如视频或者OpenGL 场景,你可以用android中的TextureView做到. 1).TextureView的兄弟SurfaceView 应用程序的视频或者opengl内容往往是显示在一个特别的UI控件中:SurfaceView.SurfaceView的工作方式是创建一个置于应用窗口之后的新窗口.这种 方式的效率非常高,因为SurfaceView窗口刷新的时候不需要重绘应用程序的窗口(android普通窗口的视图绘制机制是一层一层的,任何

1.QT中播放视频,录音程序的编写

 1  通过process的方式播放视频 T22VideoPlayer.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets MyWidget.h #ifndef MYWIDGET_H #define MYWIDGET_H   #include <QWidget> #include <QProcess> #include <QSlider>   class MyWidget :

Unity中实现播放视频

突然想着在一个cube物体上播放视频会是怎样的情景.今天终于有时间来尝试下了.结果=>成功 下面来说说详细的步骤吧 准备阶段: 1.unity pro 专业版 =>  需正版(当然破解版也ok,你懂的). 2.安装QuickTime Player.必须要安装,否则导入movie资源时,unity会自动报错提醒的. 3.安装格式化工厂软件=>movie格式转换.其他工具也ok.我这里默认转换为MOV格式.100M的avi转换后大概7M. ====================== uni

播放视频的框架Vitamio的使用问题

以前用过这个牛逼的框架,后来又随意搞了下,发现播放不了视频了,搞了老半天才搞好,今天又随便整了下,发现又不行了,我勒个插! 现在终于又搞出来了,发现我总是把步骤搞错或少写了些东西 总的步骤: 一:导入vitamio_lib包 二:xml布局中的videoView要替换 三:java文件中的所有包导入的都是vitamio_lib下的东西 四:在java文件的setContentView前要加判断!!!<易遗忘> 五:在清单文件中要加入io.vov.vitamio.activity.InitAct