收藏
回答

VideoDecoder 的 getFrameData API无法使用?

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug VideoDecoder 微信iOS客户端 7.0.12 2.11.0

首先尝试使用 微信开发工具调试,显示:

于是,尝试使用真机调试

代码很简单,初始化一个videoDecoder然后通过start函数载入一个本地视频地址。然后尝试seek stop。

然后报错:

回答关注问题邀请回答
收藏

6 个回答

  • 社区技术运营专员-娇华
    社区技术运营专员-娇华
    2020-06-01

    你好,用手机预览调试。

    2020-06-01
    有用
    回复 10
    • TTc
      TTc
      2020-06-01
      你好,手机预览我也尝试过了。附上截图。
      2020-06-01
      回复
    • TTc
      TTc
      2020-06-01
      另外,文档中也没有示例。社区中也没有相关的问题。这个API就像是没人用一样。。。希望官方可以把这块的文档示例优化一下。
      2020-06-01
      回复
    • TTc
      TTc
      2020-06-01
      2020-06-01
      回复
    • 社区技术运营专员-娇华
      社区技术运营专员-娇华
      2020-06-01回复TTc
      请具体描述问题出现的流程,并提供能复现问题的简单代码片段https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html
      2020-06-01
      回复
    • TTc
      TTc
      2020-06-01
      https://developers.weixin.qq.com/s/TlIT0Mmv7Yhl
      2020-06-01
      回复
    查看更多(5)
  • 星光刀锋
    星光刀锋
    03-13

    可以获取,将start函数中的source换成临时地址或者网络地址试试(我用的网络地址测试的),getFrameData需要循环调用才可

    03-13
    有用 1
    回复 1
    • TTc
      TTc
      03-14
      可以提供一个 可运行的代码片段吗?
      03-14
      回复
  • 源同学
    源同学
    2020-12-08

    videodecoder能用了不,半年过去了还是用不了呀,微剪是不是调了内部api~

    2020-12-08
    有用 1
    回复
  • 郑子信
    郑子信
    2020-06-04
        let video = wx.createVideoDecoder()
        console.log(video)
        video.on('start'(v) => {
          console.log("start", v);
          video.seek(0);
        })
        video.on('seek'(e) => {
          console.log("seek", e.position);
          console.log("frameData", video.getFrameData())
        })
        video.on('stop'() => console.log(2))
        video.start({source: '/assets/crop.mp4', mode: 0})
        setTimeout(() => video.seek(1.0), 1000);
    

    在seek之后getFrameData好像就可以了,不要stop。我在android机上稍微试了两下能正常输出frameData。时间是seek事件的e.position,帧内容是getFrameData()。

    不过不知道具体什么时候会出现“当缓存区满的时候可能暂停取不到数据”,或者怎么避免这个问题,或者怎么从这个问题中恢复。还不敢用。


    ————update1

    getFrameData()是每次调用都会获取下一帧,seek0之后,不停地调用getFrameData()就能获取每一帧的数据。(遇到null就需要等待一会儿吧(?),这一点还需要测试)

    要注意返回的frameData的dts和pts时间戳和时间的对应关系,确定哪一次返回的是哪一帧,这个我还要测试一下,尤其是返回的帧是按pts顺序还是dts顺序。

    seek成功后,接下来的几帧似乎还是在seek之前的时间,等到把之前解码的帧消耗掉才会返回新的数据。所以似乎是需要stop后再start+seek才能保证?或者是根据pts时间戳筛选获得的帧,把不是当前时间的帧都扔掉。

    2020-06-04
    有用 1
    回复 3
    • TTc
      TTc
      2020-06-04
      用你的代码,就这样。。。。IOS iphoneX
      2020-06-04
      回复
    • 。
      2020-06-10回复TTc
      有的手机可能有问题,刚开始我的11也报这样的错,后来莫名其妙就好了
      2020-06-10
      回复
    • 。
      2020-06-10
      应该按pts读取的
      2020-06-10
      回复
  • 腾讯微剪
    腾讯微剪
    2020-11-26

    有视频录制、剪辑相关需求的小伙伴,可以尝试下【微剪】插件哦,小程序首款视频剪辑工具,接入方便。也可以搜索【微剪插件演示】小程序体验一下。

    2020-11-26
    有用
    回复 2
    • TTc
      TTc
      2020-11-27
      太卡了吧。。有点卡扎菲的赶脚
      2020-11-27
      回复
    • 腾讯微剪
      腾讯微剪
      2020-12-07回复TTc
      用户体验和性能部分我们在持续优化中呢,你也可以说下具体卡顿的部分,我们重点关注下
      2020-12-07
      回复
  • one
    one
    2020-06-16

    请问下你的能用了吗?我的真机调试报这个错

    thirdScriptError

    Cannot read property 'MediaToolKit' of undefined

    TypeError: Cannot read property 'MediaToolKit' of undefined

    2020-06-16
    有用
    回复 1
    • TTc
      TTc
      2020-07-04
      不能用 等成熟了再说
      2020-07-04
      回复
登录 后发表内容
问题标签