【优选源码】 网页端在线一起看Plook程序源码(一起看在线聊天看视频)
最近更新 2023年04月01日
资源编号 28906

【优选源码】 网页端在线一起看Plook程序源码(一起看在线聊天看视频)

2023-04-01 网站源码 0 4,490
郑重承诺丨优选源码库客服QQ3500710050【充值开通会员请加客服】
侵权投诉:
如侵权·投诉·请联系邮箱3500710050@qq.com下架处理
¥ 0赞助币

普通用户免费升级普通用户

开通VIP尊享优惠特权
立即下载 升级会员
详情介绍
【本站是赞助会员制度,赞助会员请加客服】请勿商业运营,违法使用和传播!资源仅供研究学习使用!解压密码为:www.youxuanma.cn和www.yxymk.net和www.yxymk.com注:大家下载源码都记得自己扫扫后门使用D盾,网站站长工具分类有软件也可以百度下载
注:发现搬砖[未登记],代下,共享账号封禁【每个都会记录ip,多ip封禁账号】,【在使用本系统时,使用方必须在国家相关法律法规范围内并经过国家相关部门的授权许可,禁止用于一切非法行为。使用用途仅限于测试、实验、研究为目的,禁止用于一切商业运营,本团队不承担使用者在使用过程中的任何违法行为负责 所有源码请自测!不保证你源码完整性有效性所有源码都是全网搜集 免责声明:本资源并未取得原始权利人的授权,不可商用,仅可用于学习分析底层代码,CSS等,禁止用于商业行为。如因擅自商用引起的相关纠纷及法律责任,由使用人全部承担。支持正版,人人有责,请于下载后24小时内删除,谢谢支持!
如果蓝奏云下载失效把wws.lanzous.com/xxxx改成wws.lanzoux.com/xxxx【s改成x或i】或【wws改成wwt】注意事项: 本资源来源于网络购买或收集整理,仅供个人学习研究交流,请勿商用;

【优选源码】 网页端在线一起看Plook程序源码(一起看在线聊天看视频)

一、这是一件悲伤的故事

我是一名程序员,我和我的女友是异地恋,so sad!!!

一次视频时,她突然来了一句:“我们已经很久没有一起看电影了吧。。。。。。”

“呃。。。好像是”,毕竟离得那么远,一起看电影有点难啊。

女友“哦”了下,我们便陷入了沉默。

视频结束,心情有点忧伤。是啊,已经很久没有好好陪她了吧。

突然想到市面上有不少可以一起看电影的APP。找了下,确实不少,像微光之类的 APP 人气都很火。下载了一个,发现还是挺有意思的,确实能解决异地一起看电影的需求。

于是“啪”的一下,灵光一现,哄女友开心的方法有了,哦耶!!!我可以自己去实现一个 demo 呀!

作为一名优质的程序员,鉴于职业探索精神以及在 ZEGO 即构科技的从业经验,想到实现一个类似功能的 demo 还是很可以的。

说干就干,熬夜小 case,通宵搞出了demo,效果如下:

【优选源码】 网页端在线一起看Plook程序源码(一起看在线聊天看视频)

前面铺设了这么长,相信你们也不是来看我晒狗粮的(狗头保命)。那么现在就和我一起来看看我是怎么实现这个让女朋友欢心的“一起看电影”的功能吧,文章有点长,但是绝对很干货,大家可以耐心看完。

二、开始准备

在开始实现一起看电影的demo之前,我们需要做一些开发前的准备工作:

01 开发环境准备

首先第一步就是准备开发环境,需要确保开发环境满足以下要求:

  • Android Studio 2.1 或以上版本。
  • Android SDK 25、Android SDK Build-Tools 25.0.2、Android SDK Platform-Tools 25.x.x 或以上版本。
  • Android 4.1 或以上版本,且支持音视频的 Android 设备。
  • Android 设备已经连接到 Internet。

02 账户注册

开发环境搭建好之后,我们需要去 ZEGO 官网注册一个账户,进入管理控制台并创建应用、获取开发需要的 AppId 和 AppSign 。

具体的创建应用过程详见此文章:  控制台创建项目流程。

三、实现流程介绍

01 接口规范说明

首先分析 ZEGO 的 API 输入输出规范。根据 API使用文档 来看,调用接口格式如下:

【优选源码】 网页端在线一起看Plook程序源码(一起看在线聊天看视频)

以创建 ZegoExpressEngine 单列对象为列,每个参数都详细的解析其作用。每个接口都描述了作用与用法。

02 一起看电影的项目开发

接下来就万事俱备了,跟着我来着手实操一下,看具体怎么实现一起看电影的项目。

项目分为两部分:播放本地电影的服务端、拉流播放电影的客户端。下面会进行每个部分的详细介绍。

项目设置了最大用户数为3人,服务端占了一位,所以客户端只能同时两人在线观看电影(悄咪咪,确保你们两个人之间不会出现第三者)。

1、服务端 —— 播放电影服务端的实现流程

  • 步骤一: 创建 ZegoExpressEngine 引擎:
/** 定义 SDK 引擎对象 */
ZegoExpressEngine engine;  
/** 填写 appID 和 appSign */
long appID = ;  /** 请通过官网注册获取,格式为 123456789L */
String appSign = ;  /** 64个字符,请通过官网注册获取,格式为"0123456789012345678901234567890123456789012345678901234567890123" */
/** 创建引擎,使用测试环境,通用场景接入 */
engine = ZegoExpressEngine.createEngine(appID, appSign, true, ZegoScenario.GENERAL, getApplication(), null); 
复制代码
  • 步骤二:开启自定义视频采集功能:
ZegoCustomVideoCaptureConfig videoCaptureConfig = new ZegoCustomVideoCaptureConfig();
// 选择 RAW_DATA 类型视频帧数据
videoCaptureConfig.bufferType = ZegoVideoBufferType.RAW_DATA;  engine.enableCustomVideoCapture(true, videoCaptureConfig, ZegoPublishChannel.MAIN);
复制代码
  • 步骤三:设置自定义视频采集回调对象并实现对应方法:
// 将自身作为自定义视频采集回调对象 sdk.setCustomVideoCaptureHandler(new IZegoCustomVideoCaptureHandler() {    
 @Override     
 public void onStart(ZegoPublishChannel channel) {         
 // 收到回调后,开发者需要执行启动视频采集相关的业务逻辑,例如开启摄像头等         ...     
 }    
  @Override     
  public void onStop(ZegoPublishChannel channel) {         
  // 收到回调后,开发者需要执行停止视频采集相关的业务逻辑,例如关闭摄像头等         ...     
  }
  });
复制代码
  •  步骤四:选择要播放的电影,设置房间ID。然后登录房间,将收到自定义视频采集回调通知开始采集:
/** 创建用户 */ ZegoUser user = new ZegoUser("user1"); 

/** 开始登录房间 */ engine.loginRoom("room1", user);    
复制代码
mZegoMediaPlayer.setVideoHandler(new IZegoMediaPlayerVideoHandler() {
    @Override
    public void onVideoFrame(ZegoMediaPlayer zegoMediaPlayer, ByteBuffer[] byteBuffers, int[] ints, ZegoVideoFrameParam zegoVideoFrameParam) {
        
    }
}, ZegoVideoFrameFormat.RGBA32);
复制代码
  •  步骤五:当客户端发送通知开始播放电影,就开始推流(电影流),预加载load 电影,开始播放start()
/** 开始推流 */ engine.startPublishingStream("stream1");
复制代码
mZegoMediaPlayer.loadResource(path, new IZegoMediaPlayerLoadResourceCallback() {
    @Override
    public void onLoadResourceCallback(int code) {
        if (code == 0) {
            mZegoMediaPlayer.start();
            if (callback != null) {
                callback.onLoadResourceCallback(code);
            }
        }
    }
});
复制代码
  • 步骤六:调用发送视频帧方法 sendCustomVideoCaptureRawData 向 SDK 提供视频帧数据。
// 将采集的数据传给ZEGO SDK
int totalDataLength = byteBuffers[0].capacity();
if (tempByteBuffer == null || tempByteBuffer.capacity() != totalDataLength) {
    tempByteBuffer = ByteBuffer.allocateDirect(byteBuffers[0].capacity()).put(byteBuffers[0]);
} else {
    tempByteBuffer.clear();
    tempByteBuffer.put(byteBuffers[0]);
}
ZegoSDKManager.getInstance().getStreamService().sendCustomVideoCaptureRawData(tempByteBuffer, tempByteBuffer.capacity(), zegoVideoFrameParam); 
复制代码
  • 步骤七:当客户端没有观众在房间或者服务器退出播放房间,结束推流将收到自定义视频采集回调通知停止采集。

2、客户端——拉流播放电影客户端的实现流程

首先,播放电影的客户端分别有以下几项功能:

  • A、B 端观众的电影拉流渲染、电影播放\暂停。
  • A、B 端观众音视频的推拉流、摄像头的翻转开关、麦克风的开关。
  • A、B 端观众的房间实时消息的发送接收。

接下来,我们将根据上述提到的具体功能展开为大家介绍:

(1)针对于电影播放功能的流程介绍

  • A 端观众通过后台设置的 RoomID 成功登录房间,如果输入的 RoomID 不存在,就会通过判断当前 A 端是房间内第一人,退出房间提示房间不存在;或者房间内已经满员就会登录失败并提示 房间已满员。

    *  点击电影播放按钮  setRoomExtraInfo() 进行消息的通知

    *  后台手机端 收到 onRoomExtraInfoUpdate() 的回调 进行电影的播放

    *  观众端会收到电影播放的推流 ,获取电影推流 StreamID 进行拉流播放

  • B 端 通过输入 RoomID 进入播放房间 ,进行电影的拉流显示:
/**  
*  开始拉流,设置远端拉流渲染视图,视图模式采用 SDK 默认的模式,等比缩放填充整个 View 
*  如下 play_view 为 UI 界面上的 SurfaceView/TextureView/SurfaceTexture 对象  
*/ 
engine.startPlayingStream("stream1", new ZegoCanvas(play_view));
复制代码
  • AB端观众都可以通过 setRoomExtraInfo(String roomID,String key,String value,null) 来对视频媒体进行 播放/暂停。
  • AB端观众都可以通过 setRoomExtraInfo(String roomID,String key,String value,null) 来对视频媒体进行 播放/暂停。

一起看电影 setRoomExtraInfo 的参数意义如下:

  1. key: roomInfo
  2. value:  0 、1、2、3
  3. 0: 代表load start 电影
  4. 1:电影是播放状态
  5. 2:电影是暂停状态
  6. 3:房间已经被关闭

(2)针对于音视频推拉流的过程

  • 通过 ZEGO 音视频服务进行推拉流
  • A端观众进入房间后,向 ZEGO 音视频云服务推流,需要自己生成唯一的 StreamID ,然后开始预览并推流。等到B端观众进入房间后,会收到SDK 的流更新通知,从中筛选出 B端观众流 StreamID 进行拉流
  • B端观众进入房间后,向 ZEGO 音视频云服务推流,需要自己生成唯一的 StreamID ,然后开始预览并推流。同时筛选出 A端观众流 StreamID 进行拉流
  • AB端观众可以各自控制自己的 翻转摄像头、开/关摄像头、开/关麦克风 的功能:
//切换前后摄像头 front 是否采用前置摄像头;true 表示使用前置摄像头;false 表示使用后置摄像头
expressEngine.useFrontCamera(front);

// 开/关摄像头 enable 是否打开摄像头;true 表示打开摄像头;false 表示关闭摄像头
expressEngine.enableCamera(enable);

// 是否开启麦克风 enable 是否开启麦克风;true 表示开启麦克风;false 表示静音(关闭)麦克风
expressEngine.muteMicrophone(!enable);
复制代码

都是跟推拉流有关,则以用户 A 拉取用户 B 的流为例,流程如下图:

【优选源码】 网页端在线一起看Plook程序源码(一起看在线聊天看视频)

想要了解更加具体的实现流程,可参考官方文档 音视频实现流程。

(3)针对于房间实时聊天消息的发送显示

  • AB 端观众都可以在房间内发送消息;
  • 调用 sendBroadcastMessage 接口向同一房间内的B端观众发送广播消息,长度不能超过 1024 字节。通过 onIMSendBroadcastMessageResult 回调获取消息发送结果;
// 发送广播消息,每个登录房间的用户都会通过 onIMRecvBroadcastMessage 回调收到此消息【发送方不会收到该回调】
engine.sendBroadcastMessage(roomID, msg, new IZegoIMSendBroadcastMessageCallback() {    
   /** 发送广播消息结果回调处理 */     
   @Override     
   public void onIMSendBroadcastMessageResult(int errorCode, long messageID) {          
     //发送消息结果成功或失败的处理     
   }
 });
复制代码
  • 实现 IZegoEventHandler 中的 onIMRecvBroadcastMessage 回调,当发送方成功发送广播消息后,同一房间内的其他用户通过此回调接收相关信息,包括消息内容、消息 ID、发送时间及发送方信息。
/**      
  * 接收房间弹幕消息通知      
  *      
  * @param roomID 房间 ID      
  * @param messageList 收到的消息列表      
  */     
public void onIMRecvBarrageMessage(String roomID, ArrayList<ZegoBarrageMessageInfo> messageList){         
    // 收到其他用户发送消息的处理     
}
复制代码
  • 发送接收到的消息显示到UI界面。

四、效果呈现(附 demo 源码下载)

01 播放电影端的效果图

【优选源码】 网页端在线一起看Plook程序源码(一起看在线聊天看视频)

(电影播放端)

02 观众端的效果图

【优选源码】 网页端在线一起看Plook程序源码(一起看在线聊天看视频)

(电影观众端)

【优选源码】 网页端在线一起看Plook程序源码(一起看在线聊天看视频)

(电影播放时示意图)

附上demo给大家进行体验,一起看电影一共分为两部分,安装密码为 1:

1)服务端demo : 看电影服务端

2)客户端demo :   一起看电影

安装方式如下:

1)先启动 服务端demo ,选择电影设置房间ID;

2)客户端 demo 通过输入设置的房间ID 进入播放电影房。

源码下载: 百度网盘 请输入提取码(密码:qrep)

五、结语

牛顿曾说:我看得远,是因为我站在巨人的肩膀上!

基于 ZEGO 即构科技的音视频功能,一番操作下来,很简单就开发出来一款《一起看电影》的 demo,总体来说还是很简单就可以实现的。

让异地恋女友开心的方法近在咫尺,赶快行动起来体验音视频开发的乐趣吧

作者:ZEGO即构
链接:https://juejin.cn/post/7008745527198105631
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
资源下载
免费资源
文件2地址点击下载
客服QQ3500710050
付费资源
此资源仅限注册用户下载,请先
客服QQ3500710050

    免责申明 1、本站提供的源码不拥有任何权利,其版权归原著者拥有。 2、保证站内提供的所有可下载资源(软件等等)都是按“原样”提供,本站未做过任何大规则的修改;但本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 3、优选源码库平台服务中的任何信息或材料的删除、存储失败、错误提供或未及时提供不承担任何责任。 4、优选源码库平台其许可方不对通过优选源码库网主题服务得到的或在其上刊登广告所推介的产品或服务、通过由优选源码库平台服务提供的任何链接而得到的产品或服务,以及通过在优选源码库网平台服务中所提供的任何链接而得到的任何信息或建议做任何担保,对因通过服务下载或访问网上的任何信息或材料而导致的任何伤害不承担任何责任。 5、优选源码库平台服务包含的下载资源信息内的所有内容并不反映亦不代表任何优选源码库平台之意见。 6、优选源码库平台服务包含的下载资源信息内的所有内容并不反映亦不代表任何优选源码库平台之意见。优选源码库平台作为模板共享网络服务提供者,对非法转载,盗版行为的发生不具备充分的监控能力,但是当版权拥有者提出侵权指控并出示充分的版权证明材料时,优选源码库网平台负有移除盗版和非法转载作品以及停止继续传播的义务。 7、优选源码库平台对他人在网站上实施的此类侵权行为不承担法律责任,侵权的法律责任概由会员本人承担,向囤主题发布作品的作者视为同意囤主题就前款情况采取的相应措施。 8、优选源码库平台在满足前款条件下采取移除等相应措施后不为此向原发布人承担违约责任或其他法律责任,包括不承担因侵权指控不成立而给原发布人带来损害的赔偿责任。 9、本网站所有源码、模板、视频、软件和资料均为软件作者提供和站长从互联网收集整理而来,仅供学习和研究使用,请勿用于其他用途。如果版权拥有者发现自己作品被侵权,请及时向囤主题提出权利通知,将身份证明、权属证明、具体链接(URL)及详细侵权情况证明发往(邮箱:3500710050@qq.com)指出,优选源码库平台在收到上述法律文件后,在7个工作日内移除相关涉嫌侵权的内容。 使用说明 1、优选源码库平台提供的资源仅供您学习和研究使用,不用于商业性目的。 2、您不得使用优选源码库平台提供的资源来销售产品或资源。 3、您不得将优选源码库的资源索引,将其重新排版后挪作他用,或在您的网站上设立素材虎产品主页或其他页面的镜像网页。 4、如果您想将优选源码库平台服务用于商业目的,必须事先与优选源码库平台签定协议,有关详细信息,请与我们联系。 5、保证不会以任何违反任何适用于您作为优选源码库平台产品服务的使用者的任何管辖地的法律或法规的方式使用优选源码库平台产品服务。 隐私条款 优选源码库平台尊重并保护所有使用囤主题服务的用户的个人隐私权,优选源码库平台资源网不会主动地泄露给第三方,本服务条款的解释权与修改权属于优选源码库平台. 声明:本站发布的文章及附件仅限用于学习和研究目的.请勿用于商业或非法用途,否则后果请用户自负。 本站所有资源不带技术支持,下载资源请24小时内删除,如用于违法用途,或者商业用途,一律使用者承担。 1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请不要用于商业用途! 3. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 本站所有内容均来源于网络,本站转载处于传递更多信息和学习之目的,并不意味着赞同其观点或证实其内容的真实性、合法性、安全性! 8. 因为部分软件被修改者加入了加群链接等宣传信息,所以请不要胡乱添加,如涉及交易请谨慎对待!! 9. 如转载涉及版权等问题,请立即联系管理员,我们会予以更改或删除相关文章链接,保证您的权利! 10. 请遵循相关法律法规,对使用本站信息和服务所造成的一切后果,本站不做任何承诺! 11. 因资源特殊性,已发布违规资源处理公告,但用户未删除文件的,一切后果皆有使用者承担! 12. 本站所下载的所有资源,请于下载后的24小时内删除!

    优选源码库 网站源码 【优选源码】 网页端在线一起看Plook程序源码(一起看在线聊天看视频) https://yxymk.net/28906.html

    本资源网每日更新精品源码 TG:yxymknet

    常见问题
    • www.youxuanma.cn www.yxymk.net www.yxymk.com 如果以上解压密码都不正确请联系客服QQ3500710050
    查看详情

    相关文章

    官方客服团队

    为您解决烦忧 - 24小时在线 专业服务