APP下载

基于微信小程序的家庭影院用电影放映控制客户端研发

2022-04-19刘知一

现代电影技术 2022年4期
关键词:家庭影院客户端程序

刘 斌 刘知一

(中国电影科学技术研究所(电影技术质量检测所),北京 100086)

1 前言

数字技术的迅速推广和数字电视的逐步普及,激发了人们对新一代家庭影院产品的需求,形成拉动中国家庭影院市场发展的动力。产品的智能化、简约化和个性化成为家庭影院市场新的需求热点,也预示着一定的市场发展空间。为了进一步打造便捷易用的家庭影院,满足用户个性化的放映需求,本文的研究针对家庭影院设计了基于微信小程序的放映控制客户端,实现在家庭影院中选购影片、放映控制的功能。

2 背景简介

移动客户端作为面向用户的窗口,在电影放映的过程中发挥着重要的作用,各类型影院对移动客户端也有着不同的需求和应用。商业影院的客户端主要用于影片信息展示、排期展示、选座购票等功能;点播影院更偏向小型化、私人化,排片放映的选择权交到了用户手上,对应的客户端主要包括影片信息展示、放映控制等功能,以实现现场随点随播的效果。在应用程序客户端和微信小程序的应用方面,以上两种模式均有较为丰富的发展。

家庭影院是由环绕声放大器 (或环绕声解码器与多通道声频功率放大器组合)、多个 (4个以上)扬声器系统、大屏幕电视 (或投影电视)及高质量A/V 节目源构成的具有环绕声影院视听效果的家用视听系统。相对于商业影院、点播影院,家庭影院则将放映系统安置到了家庭环境中,观影对象相对较为稳定,同时有着更高的个性化和私密化需求,对应客户端需要具备影片信息展示、放映控制等功能,也能实现影片的下载。目前家庭影院主要以应用程序客户端为主,微信小程序上暂时没有相应功能的客户端。而作为嵌入微信里的功能丰富、操作简洁的轻量级应用,微信小程序能较好地适应家庭影院个性化的需求,同时能够使客户端的开发、下载和使用更加便捷。本文将以微信小程序为依托,研讨放映控制客户端的设计方案。

3 基本工作原理

微信小程序开发基本分为四类文件,包括json文件、js文件、wxml文件、wxs文件。

json文件:小程序页面相关的配置,可决定页面文件的路径、窗口表现、设置网络超时时间、设置整体框架等(其中app.json为全局设置,可设置顶部显示栏、底部菜单栏、页面注册等)。

js文件:设置变量、函数、初始化,进行数据逻辑处理、页面动态修改等。

wxml文件:页面设计,包括简单逻辑判断、从逻辑层取值、控件设置、控件位置布局等。

wxss文件:布局设计,自定布局方式,包括样式(绝对/相对布局)、大小、背景、位置、颜色、方向等。

3.1 登录

家庭影院作为家用视听系统,需要通过验证用户和放映设备的绑定关系,来保证用户能够有效的控制到所绑定的放映设备。

相对于应用程序端,微信小程序基于微信平台,进入客户端后无需注册或输入用户名和密码登录,只需通过微信账号验证即可。微信平台会为不同的用户生成一个当前小程序的openid,作为对应用户在这个小程序的唯一标识。对于拥有多个小程序的开发者,开发者可以通过微信开放平台账号绑定所有小程序,微信将会根据用户的微信ID 映射出一个unionid,作为这个用户在整个开放平台的唯一标识。

如图1所示在微信小程序启动过程中,用户访问小程序触发小程序内自带的wx.login方法,获取到微信登录凭证code并上传到后端系统,后端系统(开发者服务器)通过code和后端存储的商户信息,借助微信接口服务从微信后台获取会话信息,以验证小程序登录的有效性。该会话信息包含用户唯一标识openid、会话密钥等信息,其中会话密钥是由微信服务器生成的针对用户数据进行加密签名的密钥,安全起见不应该传输到客户端,故由后端系统存储会话信息,并生成令牌与客户端之间做接口对接校验。客户端需要从微信后台获取其它信息时,再由后端系统通过用户对应的会话信息向微信后台发起请求,将获取到的信息反馈给客户端,后续微信小程序与后端系统所有交互均携带该令牌。

图1 登录流程

在维持登录状态时,微信小程序的执行环境并不同于浏览器环境,没有cookie,因此一般将令牌放入HTTP请求头部或者置于请求内容中。

3.2 获取用户信息

登录后当小程序需要获取用户的基本信息时,向后端系统发起查询,若存在该用户的基本信息,则直接返回给小程序,否则需要用户通过点击微信小程序上的授权按钮触发wx.get User Info方法获取到用户信息,包括微信昵称、头像、性别、省市等,并将该信息录入至后端系统存储,以便后续用户信息的获取。

3.3 支付和退款

由于小程序依托于微信框架内,所以只支持微信支付的方式。当小程序发起支付时,向后端系统发起支付请求,由后端系统生成本地订单,通过本地订单向微信后台发起订单请求,由微信后台服务器生成微信订单反馈给后端系统,后端系统再将微信订单转发给微信小程序。微信小程序获取到微信订单后,即可使用wx.requestPayment方法根据订单调用微信自带的支付服务。支付成功后客户端将支付状态上报给后端系统,用于更新对应订单的支付状态。

退款方式同支付方式,进入退款流程后,由后端系统通过对应的微信订单向微信后台发起退款请求。无论退款成功或失败,微信后台会向后端系统发送退款状态的通知,后端系统可根据该状态给予客户端退款反馈,并更新后端系统所存储的订单信息,方便统计和对账。

3.4 接口通信

家庭影院的放映过程中,微信小程序作为客户端会响应用户的操作行为,并频繁的向后端系统发起通信,从而实现相应的显示、修改信息、控制操作等功能。由于微信小程序作为依托于微信平台的客户端,无法作为服务器来接收外部的HTTP请求信息,故通过采用wx.request方法发起HTTP 网络请求来调用后端系统、放映系统的接口服务。在放映控制过程中,显示放映状态的功能对实时性要求较高,则需要自动以高频率请求的方式定时与外部通信,以实时获取并显示信息。

在微信小程序的后端系统和微信后台的通信过程中,会常调用微信所提供的功能性接口,如订单申请、退款申请、用户信息获取等。这些接口对保密性要求较高,当获取这些信息时需要用到微信后台所提供的接口调用凭据(access_token)。

接口调用凭据有效期为2小时,故需要后端系统定时获取微信后台服务器新的凭据并加以存储,使后端系统在运行过程中都能够实时向微信后台服务器发起通信请求,为小程序功能的时效性提供保障,提高用户使用体验。

获取接口调用凭据时,需要用到小程序唯一凭证AppID 和小程序唯一凭证密钥AppSecret,小程序的开发者可通过微信公众平台获取这两条信息,并存储在后端系统方便向微信后台发起请求。

4 功能设计

基于微信小程序的电影放映客户端作为终端,主要用于向用户展示影片列表,以供选择播放,同时用户能够通过客户端控制放映设备进行放映,类似于点播影院的移动端播控软件。但不同的是所述电影放映客户端是以微信小程序为依托,包含首页、放映、个人3个功能模块,通过json格式接口与后端系统进行交互,主要实现选购影片、选择播放、放映控制、个人信息查改、购卡续卡、退款等功能,同时通过选购影片的模块,能够将对应影片资源下载到放映设备中以供播放。

电影放映客户端主要与后端系统、放映系统建立连接,从后端系统获取存储的影片、用户、设备等基本信息,其中影片和用户信息用于展示和支持客户端的功能实现,设备信息方便客户端连接用户已绑定的放映设备,从而控制放映,管理员可通过后端系统或院线的管理平台将用户的手机号与放映设备做绑定设置,用户通过微信首次进入到客户端时,客户端会向用户发起授权申请,以获取用户微信对应的手机号。通过后端系统的登陆验证后,用户即可通过客户端控制所绑定的放映设备播放影片。

客户端将控制信息直接发送给放映系统,以控制影片放映,同时获取设备的放映状态信息用于显示和控制。

4.1 首页模块

首页模块是将传统影院中影片分发的窗口从院线的管理平台移动到了客户端,使用户能根据自己的喜好为所绑定的放映设备添加影片内容,这样可以更好地满足家庭影院的个性化需求。

考虑到影片资源传输到放映系统需要一定的时间,需要提前将影片分发至设备片库中才能进行放映,且放映系统虽然能够存储大量的影片,但数量仍是有限的,故方案设计从该模块购买影片后进行分发。该模块主要展示后端系统中的影片库,再通过选择购买的方式将选择的影片分发到所绑定的放映设备,影片分发成功后即可选择放映一场。

如图2所示,用户在成功登录小程序后进入首页模块,能够在广告位看到轮播的广告、影片推荐等信息。该模块可根据影片分类显示影片列表,并具有对影片名称、导演、主演进行模糊搜索的功能,方便用户按分类和关键字查询想要的内容,同时在点击影片海报后即可查看影片详情。用户能够选择多部影片进行购买,点击购买后显示购买列表,可通过会员卡、微信支付。购买的影片分发成功后,将会在放映模块显示。

图2 首页

4.2 放映模块

放映模块与点播影院移动端的播控软件功能类似,用户通过该模块选择影片进行放映。

由于首页模块已将用户想要观看的影片分发到对应的放映系统中,该模块主要展示用户所绑定放映设备的影片库,并实现控制放映设备播放影片的功能,在播放过程中能够即时显示播放进展控制放映,从而能够随看随放,保障观影体验。由于主页模块在购买影片并分发成功后可选择放映一场,影片成功放映后再次播放时会自动进入购买页面,支付后随即播放,实现按场次计费。

用户在进入放映模块后,能够看到已经成功分发到所绑定放映设备的影片列表,同样可根据影片分类、模糊搜索从设备片库中查询想要的影片内容。选择想要观看的影片即进入影片控制放映页。该页可看到影片详情和该影片的播放状态信息,同时作为控制界面,能够控制影片播放、暂停、终止。可实时显示当前影片的播放进度,且与放映系统的播放进度一致。

4.3 个人模块

个人模块主要展示用户个人信息、会员卡信息、订单信息和系统信息等。个人信息栏包括显示个人信息、修改个人信息、上传头像等功能。会员卡栏按已购会员卡和所有会员卡两种分类显示,同时用户能够通过该模块购买会员卡,或者为已有的会员卡续费。订单信息栏能显示用户所有订单列表,包括影片、会员卡的支付订单,并具有申请退款功能,能够根据订单的支付状态判断能否退款。系统信息包括用户协议、版本号等客户端系统的信息,以供用户查看。

4.4 后端系统

后端系统主要用于为客户端提供HTTP接口服务,并与放映系统、微信后台通过HTTP接口进行交互,对传输数据加以验证、处理、记录和中转,从而响应客户端的请求,以支持各个功能的实现。

后端系统采用MySQL 数据库存储信息,通过CDN 存储图片文件以供客户端引用,通过Python语言搭建后端接口服务,以json格式数据同客户端交互。接口服务从不同的数据库表中将相应的数据提取出来,并处理成客户端需要的数据结构,使客户端不用经过数据解析和筛选,直接赋值变量后即可显示,减少客户端数据处理压力,提高运行速率。该接口服务也能够响应客户端的请求,完成相关的业务逻辑处理。接口服务分为以下几类:

(1)影片放映类接口,能够为首页模块和放映模块提供对应的广告列表、导航列表、影片列表、影片详情等信息,支持放映控制的功能。

(2)个人信息类接口,为个人模块提供用户个人信息、订单列表、客户端系统信息、会员卡列表、支付时选择会员卡的列表等,支持修改用户信息的功能。

(3)支付类接口,支持购买影片、购买会员卡、订单退款的功能。

(4)登录接口,生成与客户端的通信令牌,用以验证接口信息的有效性,同时存储微信平台反还的会话信息。

5 对比应用程序客户端

在功能实现上,应用程序客户端和本文所述的电影放映客户端都可以实现可视化界面展示、影片库展示和搜索、放映控制、支付等功能。以智能影库播放器为例,具有片库浏览、分类导航、影片搜索、影片下载、选片放映、放映控制等基本功能。电影放映客户端也设计具备同样的功能,在设计方面添加了会员卡支付、退款等个性化模块。

在开发层面上,相比于微信小程序开发,应用程序客户端能够加入更多复杂的功能,灵活性强,且支持多种支付方式,但需要分别对Android 和iOS两种系统进行开发,并配置开发环境,开发成本也相对较高。微信小程序则更偏向于精简的设计开发,依托于微信平台能够适用Android和iOS两种系统,且具有第三方接口,开发成本低,但只能支持微信的支付方式,且整个小程序所有代码包的大小不能超过20MB,对复杂功能的开发有着一定的限制,如图片处理或文档编辑,小程序是无法满足的。

在实现复杂度高、功能丰富繁多的产品等方面,应用程序客户端仍是不可替代的。相对来说基于微信小程序的开发,可借助于微信平台,开发难度相对较低,也能减少开发时间和资金的投入,并打造简约实用的终端应用,让客户端个性化的功能得以实现。合理设计和应用小程序能在实现丰富的功能的基础上,节约开发成本,同时也能为人们在使用的过程中提供更多便利。

6 总结

随着数字电影技术的飞速发展,商业影院、点播影院、校园院线、家庭影院等多种电影放映模式的逐渐普及,同时不同类型影院也需要根据其运营模式来确定放映控制端的功能实现。应用于家庭影院的发展,微信小程序将区别于应用程序客户端,以新的方式为影院提供开发便捷、功能精简的放映控制窗口,同时满足个性化观影需求,提升观影体验。本文主要考虑家庭影院具有个性化与私人化的特点,采用微信小程序的开发方式,将微信工具的普遍性和便利性与家庭影院的放映控制相结合,设计了电影放映客户端,并按业务流程、功能设计详细探讨了该客户端的实现方案,未来可根据需求的变化继续完善相关功能,并应用于家庭影院中,让个人片库管理、控制放映更加简易方便,促进家庭影院个性化、便利化的发展。

①放映控制相关的接口服务在放映系统中运行,并与客户端直接对接,以响应放映请求。

猜你喜欢

家庭影院客户端程序
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
给Windows添加程序快速切换栏
为什么你买了家庭影院就闲置了?
简化化学平衡移动教学程序探索
“程序猿”的生活什么样
虚拟专用网络访问保护机制研究
新闻客户端差异化发展策略
英国与欧盟正式启动“离婚”程序程序
家庭影院并不遥远
不可能完成的任务