在线视频(音频)播放
所有文档

          AR开放平台

          在线视频(音频)播放

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