replay视频播放器_怎么让手机音乐跟视频一起放

replay视频播放器_怎么让手机音乐跟视频一起放以前项目中需要播放在线视频和在线音频,当时就研究了一下。下面只显示核心代码。1.AVPlayer(负责视频操作,例如播放,暂停,声音的大小,跳到指定的时间)2.AVPlayerLayer(负责视频的可视化区域,视频的播放模式,注意是CALayer,不能接手触摸)3.AVPlayItem(表示AVPlayer播放的资源对象,可以监听其状态)全屏的实现有2种方式1.可以

大家好,又见面了,我是你们的朋友全栈君。

以前项目中需要播放在线视频和在线音频,当时就研究了一下。下面只显示核心代码。

1.AVPlayer (负责视频操作,例如播放,暂停,声音的大小,跳到指定的时间)

2.AVPlayerLayer(负责视频的可视化区域,视频的播放模式,注意是CALayer,不能接手触摸)

3.AVPlayItem (表示AVPlayer播放的资源对象,可以监听其状态)

全屏的实现有2种方式

1.可以通过transform 来让view旋转(缺点是不能触发屏幕的旋转)。2可以通过autolayout 来实现

当视频或音频播放完之后,我们可以使App 自动去播放下一首视频或者音频。这是我们就需要为去注册一个通知,用这个通知去实现监听avplayer.currentItem 

代码如下

//AVPlayerItem添加播放完成通知

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackFinished:) name:AVPlayerItemDidPlayToEndTimeNotification object:self.player.currentItem];

//播放完成之后会执行这个函数

-(void)playbackFinished:(NSNotification *)notification{

    MyLog(@”视频播放完成);

    AVPlayerItem * p = [notification object];

    //关键代码

    [p seekToTime:kCMTimeZero];

    [self pause];

    self.playBtn.selected=NO;

    self.playBtn.hidden=NO;

    if([_delegate respondsToSelector:@selector(playNextMusic)]){  //在这里我们可以去实现播放下一首视频和视频的操作。

        [self.delegate playNextMusic];

    }

}

//监听当前资源的状态属性,监听网络加载情况属性,监控缓存区大小此时我们都需要监听AVPlayerItem,

 //监控状态属性,注意AVPlayer也有一个status属性,通过监控它的status也可以获得播放状态

    [playerItem addObserver:self forKeyPath:@”status” options:NSKeyValueObservingOptionNew context:nil];

//监控网络加载情况属性

    [playerItem addObserver:self forKeyPath:@”loadedTimeRanges” options:NSKeyValueObservingOptionNew context:nil];

//监控缓冲区大小

    [playerItem addObserver:self forKeyPath:@”playbackBufferEmpty” options:NSKeyValueObservingOptionNew context:nil];

//我们可以使用这个方法来来显示当前的播放时的时间,代码如下

    [self performSelectorInBackground:@selector(initPlayTime) withObject:nil]; 




有时音乐播放器和视频播放器还需要一个播放进度条。 

待续……………………..



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125308.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jenkins自定义构建参数_jenkins参数化构建

    jenkins自定义构建参数_jenkins参数化构建前言当我们的自动化项目越来越多的时候,在代码仓库会提交不同的分支来管理,在用jenkins来构建的时候,我们希望能通过参数化构建git仓库的分支。下载安装GitParameter插件系统管理-

    2022年7月29日
    3
  • React教程(详细版)

    React教程(详细版)一、简介(背景)1.1、概念它是一个将数据渲染为HTML视图的js库1.2、原生js痛点用dom的API去操作dom,繁琐且效率低用js直接操作dom,浏览器会进行大量的回流和重绘原生jjs没有组件化的编程方案,代码复用性低,哪怕有模块话的概念,但模块化也只能拆解一个个js,对样式和结构也没办法拆解,组件化就相当于3剑客整体拆解,成为一个个的小功能1.3、React特点采用组件化模式,声明式编码,提高开发效率和组件复用性在ReactNative中可以用react预发进行安卓、io

    2022年7月16日
    15
  • apimodelproperty注解不生效(注解是什么)

    https://blog.csdn.net/weixin_44356055/article/details/109451892

    2022年4月14日
    475
  • D. 【NOIP2012普及组真题】文化之旅

    D. 【NOIP2012普及组真题】文化之旅题解:–这是一道真水题,说实话,正解不会,因为我们的测试数据所有的文化都不排斥,这就很美丽了……..–华丽丽的Floyd就来了…–注意极大值不要超范围了,是真绝望!代码:#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#inc…

    2022年8月22日
    5
  • oracle linux 设置ip[通俗易懂]

    oracle linux 设置ip[通俗易懂]1.ifconfig查看网卡是否启动(两个一个127.0.0.1)2.若只是一个查看所有网卡 ifconfig-a 获取未启动的网卡名3.启动网卡 ifconfigeht0up 注: eht0;未启动的网卡名4.修改网卡配置文件eth0 1.修改/etc/sysconfig/network-scripts/etho文件 参数详解 …

    2022年5月4日
    178
  • 计算机内核态和用户态,用户态和内核态的区别是什么[通俗易懂]

    计算机内核态和用户态,用户态和内核态的区别是什么[通俗易懂]用户态和内核态的区别是,内核态运行操作系统程序,操作硬件,用户态运行用户程序;当程序运行在3级特权级上时,可以称之为运行在用户态,当程序运行在0级特权级上时,称之为运行在内核态。本文操作环境:windows10系统、thinkpadt490电脑。区别分析如下:1.操作系统需要两种CPU状态内核态(KernelMode):运行操作系统程序,操作硬件用户态(UserMode):运行用户程序2.指…

    2022年9月17日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号