深入解析iOS平台下的音视频播放技术

更新:11-13 现代故事 我要投稿 纠错 投诉

老铁们,大家好,相信还有很多朋友对于深入解析iOS平台下的音视频播放技术和的相关问题不太懂,没关系,今天就由我来为大家分享分享深入解析iOS平台下的音视频播放技术以及的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

废话不多说,我们直接上代码来了解一下:

//第一步:获取视频路径

NSString *webVideoPath=@"https://vd2.bdstatic.com/mda-kidkfudrpqgg8891/sc/cae_h264_clips/mda-kidkfudrpqgg8891.mp4";

NSURL*webVideoUrl=[NSURLURLWithString:webVideoPath];

//第2步:创建AVPlayer

AVPlayer * avPlayer=[[AVPlayer alloc]initWithURL:webVideoUrl];

//第三步:使用AVPlayer创建AVPlayerViewController并跳转到播放界面

AVPlayerViewController *avPlayerVC=[[AVPlayerViewController 分配] init];

avPlayerVC.player=avPlayer;

[自我呈现ViewController:avPlayerVC动画:YES完成:nil];

没错,就这样结束了!祝您使用愉快!

AV播放器

对于AVPlayer来说,就麻烦一些了。我应该和谁打交道?相对于AVPlayerViewController!可见,也不算太麻烦吧?

首先新建一个普通viewController,导入头文件,创建对象

进口

@property(非原子,强)AVPlayer * avplayer;

@property(非原子,强)AVPlayerItem * avplayerItem;

@property(非原子,强)AVPlayerLayer * playLayer;

初始化相关对象和数据设置

//本地视频

//NSString * localPath=[[NSBundle mainBundle] pathForResource:@"movie" ofType:@"mp4"];

//NSURL * localUrl=[NSURL fileURLWithPath:localPath];

//网络视频

NSString * webPath=@"https://vd2.bdstatic.com/mda-kidkfudrpqgg8891/sc/cae_h264_clips/mda-kidkfudrpqgg8891.mp4";

NSURL* webUrl=[NSURLURLWithString:webPath];

//初始化播放器

self.avplayerItem=[[AVPlayerItem alloc] initWithURL:webUrl];

self.avplayer=[[AVPlayer alloc] initWithPlayerItem:self.avplayerItem];

//创建一个AVPLayerLayer来显示视频

/*

AVLayerVideoGravityResizeAspectFill 等比例填充,宽度或高度可能超出屏幕。

AVLayerVideoGravityResizeAspect 等比例默认

AVLayerVideoGravityResize完全适应宽度和高度

*/

_playLayer=[AVPlayerLayerplayerLayerWithPlayer:self.avplayer];

_playLayer.videoGravity=AVLayerVideoGravityResizeAspect;

_playLayer.frame=CGRectMake(0, 100, DEVICEWIDTH, DEVICEHEIGHT/2);

[self.view.layer addSublayer:_playLayer];

//开始播放

[self.avplayer 播放];

这样一个简单的视频播放就完成了!但是,听着,这只是完成的三分之一。剩下的我该怎么办?

暂停?

关于暂停视频播放,很简单

[self.avplayerpause];

结束了!

继续播放?

然后

[self.avplayer 播放];

什么?就这样?

是的,就是这么简单!

播放监听?

视频播放必须有自己的状态,是否缓冲完成、加载失败、异常、视频长度、播放进度等。那么如何监控和处理呢?

使用KVO添加属性监控,监控AVPlayer的currentItem中的“status”和“loadedTimeRanges”关键字属性。

[self.avplayer.currentItem addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:nil];

调用属性监听方法

//属性监控

- (void)observeValueForKeyPath:(NSString *)keyPath

ofObject:(id)对象

更改:(NSDictionary *)更改

context:(void*)上下文

{

AVPlayerItem* 播放项目=(AVPlayerItem*) 对象;

if([keyPathisEqualToString:@"status"]) {

AVPlayerStatus status=[[change objectForKey:@"new"] intValue];

开关(状态){

case AVPlayerStatusReadyToPlay:{ //就绪

//获取视频时间

CMTimeduration=playitem.duration;

NSString* 时间=[selfformatTimeWithTimeInterVal:CMTimeGetSeconds(duration)];

//显示视频总长度。只需自定义一个标签即可。

self.timeLabel.text=时间;

//开启滑块控制播放进度

self.sliderView.enabled=YES;

[self.avplayer 播放];

休息;

}

case AVPlayerStatusFailed:{ //失败,可以重试

休息;

}

case AVPlayerStatusUnknown:{ //异常

休息;

}

默认:

休息;

}

}

}

通过上面的方法就可以获取到视频的状态和长度,然后就要处理播放过程了。

__weak typeof(self)weakSelf=self;

self.timeObserver=[self.avplayer addPeriodicTimeObserverForInterval:CMTimeMake(1, 1) queue:dispatch_get_main_queue() usingBlock:^(CMTime 时间) {

//当前播放时间

NSTimeInterval nowTime=CMTimeGetSeconds(时间);

//总时间

NSTimeInterval 总时间=CMTimeGetSeconds(weakSelf.avplayer.currentItem.duration);

//滑块进度

weakSelf.sliderView.value=nowTime/totaltime;

//倒计时

weakSelf.nowtimeLabel.text=[weakSelfformatTimeWithTimeInterVal:nowTime];

}];

上面的代码可以动态显示播放时间和播放进度。具体的展示风格根据个人的实际情况而定!

文章到此结束,如果本次分享的深入解析iOS平台下的音视频播放技术和的问题解决了您的问题,那么我们由衷的感到高兴!

用户评论

在哪跌倒こ就在哪躺下

真爱iPhone!就喜欢它流畅的画面和超低的卡顿感。

    有7位网友表示赞同!

不浪漫罪名

这个界面好清爽啊,看得舒服眼睛都不累

    有19位网友表示赞同!

隔壁阿不都

希望能支持更多高清格式,看画质更清!

    有14位网友表示赞同!

自繩自縛

苹果设备在这几个方面做的很棒啊!

    有7位网友表示赞同!

执拗旧人

以后不用担心视频播放卡顿,手机流畅得不得了!

    有12位网友表示赞同!

喜欢梅西

现在想看哪个视频都可以随时看了,真方便!

    有6位网友表示赞同!

♂你那刺眼的温柔

学习学习,想自己也做一个手机音视频APP。

    有17位网友表示赞同!

﹏櫻之舞﹏

苹果还是牛!

    有5位网友表示赞同!

蔚蓝的天空〃没有我的翅膀

期待以后能够有更丰富的功能!

    有9位网友表示赞同!

我一个人

希望支持一些新兴的视频格式

    有6位网友表示赞同!

三年约

看视频太香了,现在玩手机时间感觉加长一点。

    有15位网友表示赞同!

服从

这个播放器好用,我之前用其他播放器经常会卡顿

    有13位网友表示赞同!

念初

苹果手机音视频处理效果是真的好!

    有14位网友表示赞同!

心亡则人忘

想看视频就打开手机,太方便了!

    有13位网友表示赞同!

人心叵测i

感觉苹果在视频方面越来越专业了!

    有10位网友表示赞同!

封心锁爱

这个标题把我好奇ちゃった,赶紧去看文章了解下。

    有18位网友表示赞同!

来自火星球的我

希望未来iOS系统能够支持多画面播放功能!

    有19位网友表示赞同!

病房

现在看视频体验简直太棒了,画面清晰流畅

    有17位网友表示赞同!

【深入解析iOS平台下的音视频播放技术】相关文章:

1.动物故事精选:寓教于乐的儿童故事宝库

2.《寓教于乐:精选动物故事助力儿童成长》

3.探索动物旅行的奇幻冒险:专为儿童打造的童话故事

4.《趣味动物刷牙小故事》

5.探索坚韧之旅:小蜗牛的勇敢冒险

6.传统风味烤小猪,美食探索之旅

7.探索奇幻故事:大熊的精彩篇章

8.狮子与猫咪的奇妙邂逅:一场跨界的友谊故事

9.揭秘情感的力量:如何影响我们的生活与决策

10.跨越两岸:探索彼此的独特世界

免责声明:部分作品来自网友发布,或收集于互联网,目的在于更好的传递 好内容 ,正能量内容。如果侵犯了您的权益,或者您不想在本站发布,请及时联系我们,我们第一时间删除信息!

上一篇:六:传奇悲歌——史上最悲催的男人 下一篇:一(8)班班级执勤日特别报道