资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

在线视频(音频)播放

在线视频(音频)播放

为了减少视频展示类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能力集成