开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术
AR与VR
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
信息服务
智能园区

在线视频(音频)播放

在线视频(音频)播放

为了减少视频展示类Case场景包的大小提升加载速度,使内容展示更灵活,DuMix AR支持网络地址视频以及音频的播放,开发者可以在自己的项目中配置网络视频链接,如电台链接、网络电视地址、直播视频(HLS)等,并提供了音视频缓冲状态、播放状态、播放进度等状态回调和接口查询,开发者可以根据自己的业务灵活配置相应的事件响应。

Sample case: 代码下载

在线视频播放

播放在线视频和在线音频的接口使用原理是一致的,下面以播放在线视频为例提出几点在API使用上以及能力应用上需要注意的地方。

API接口

from_time:设置视频从哪个位置开始播放,单位毫秒。例如:from_time(5000)意为从视频5s处开始播放。

is_remote:是否是网络视频,0为本地视频,1为网络视频。

call_back:传给Lua层视频播放器信息的回调,包含四个字段:action_id、platform、type、data,其中data字段中包含另外的5个字段:error_code、buffer_status、buffer_progress、play_status、play_progress。

get_video_play_info:查询视频播放信息。

注意:

  • API接口详解
  • callback接口在播放视频、暂停视频和停止视频等事件发生变化的时候都会相应发生变化,只要调用了这个接口并且没有停止/暂停播放,会一直返回需要返回的播放器信息。
  • get_viedo_play_info接口可根据项目需求主动获取和查询当前播放器的状态,并根据这些状态做相应的逻辑处理。
    其中:
        video_info = video_id:get_video_play_info ()  
        duration=video_info['duration']  

当应用场景为播放直播视频或者其他不可预计时间的视频时,从字典中获取的视频总时长会为0或者-1。

应用

视频要求

播放在线视频的视频源需要符合以下规范:

1、分辨率:整体宽不超过1920&高不超过1080,且宽&高皆为8的倍数
2、支持视频格式为MP4或者HLS的ts流的在线视频。
3、编码格式最好为H264。
4、直播类视频仅支持HLS协议。

音频要求

音频源格式为MP3。

能力使用

video_id = scene.videoPlane1:video()
                    :path('http://ar-fm.cdn.bcebos.com/ar-website%2FARcasejinji12-21.mp4')
                    :from_time(0)
                    :repeat_count(1)
                    :is_remote(1)
                    :on_complete(function ()
                    end)
                    :start()

与播放本地视频一样,首先需新建一个节点播放器videoPlane1,地址为一个在线播放视频链接,is_remote字段为1表示播放在线视频且播放在线视频时该字段必须设置为1。

 Video.call_back = function(data)

    play_status = data['data']['play_status']
    ARLOG("play_status:"..play_status)
    --首次进入,播放状态是准备成功时,先暂停
       if(tostring(play_status) == "1")then
           if(clickNUM==0)then
              video_id:pause()
              clickNUM=1
           end
       end
    --获取视频的播放进度
       msg_id = data['data']['play_progress']
       ARLOG("progress:"..msg_id)
 
 end
   

play_status和play_progress为data表中的字段,该字段返回的是播放器状态和播放进度,同样从data['platform']、data['type']等字段中可以得到播放器的平台和信息。

示例中获取了播放器状态,1表示准备成功,准备成功后判断是否为首次进入AR,是的话先暂停播放视频并改变标记状态,在后面需要播放视频的时候再调用video_id:start()播放。

video_info = video_id:get_video_play_info()
for key,value in pairs(video_info) do
    ARLOG(key.." :"..tostring(value))
end

buffer_status=video_info['buffer_progress']
  if(tostring(buffer_progress)=="100")then
    scene.fengmian:set_visible(false)
  end 

get_video_play_info可以在需要查询播放器状态的地方使用,既可以遍历获取所有开放的信息,也可以单独取出其中的某个字段,如示例代码,当视频缓冲完成时隐藏封面图片准备播放视频。

上一篇
Logo识别
下一篇
ARKit能力集成