首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何确定视频是否刚刚使用完expo.video?ReactNative/Expo.io

如何确定视频是否刚刚使用完expo.video?ReactNative/Expo.io
EN

Stack Overflow用户
提问于 2017-08-27 01:01:33
回答 2查看 2.9K关注 0票数 5

例如,如果我有一个组件:

代码语言:javascript
复制
import React, { Component } from 'react';
import { Video } from 'expo';
let styles = require('../stylesheet.js');
export default class Player extends Component {
  render(){
    return(
     <Video
      ref={this._handleVideoRef}
      source={require(//file)}
      rate={1.0}
      volume={1.0}
      muted={false}
      useNativeControls
      resizeMode="cover"
      shouldPlay
      style={styles.player} />
      )
  }
}

我在文档(https://docs.expo.io/versions/latest/sdk/av.html)中看到使用"playbackstatus.didJustFinish“和onPlaybackStatusUpdate,但是他们的例子对我来说没有多大意义。谁能告诉我如何使用我的代码来确定视频是否已经结束?

EN

回答 2

Stack Overflow用户

发布于 2018-06-10 04:06:25

如果其他人来寻找答案,下面是OP和docs的组合(https://docs.expo.io/versions/latest/sdk/av.html):

代码语言:javascript
复制
import React, { Component } from 'react';
import { Video } from 'expo';

export default class Player extends Component {
  _onPlaybackStatusUpdate = playbackStatus => {
    if (playbackStatus.didJustFinish)
      // The player has just finished playing and will stop.
  };

  render(){
    return(
      <Video
        ref={this._handleVideoRef}
        source={require(//file)}
        onPlaybackStatusUpdate=
          {(playbackStatus) => this._onPlaybackStatusUpdate(playbackStatus)}/>
        resizeMode="cover"
        style={styles.player}
    );
  }
}
票数 8
EN

Stack Overflow用户

发布于 2019-03-28 16:43:10

mauriii answer对我来说从来不起作用,因为当playbackStatus.didJustFinish变成true时,onPlaybackStatusUpdate没有被调用,但是在console.logging playbackstatus之后,我注意到还有另外两个字段durationMillis和positionMillis,所以当这两个值相等时,我们就知道视频是完整的

所以要更新这个答案

代码语言:javascript
复制
export default class Player extends Component {
  _onPlaybackStatusUpdate = playbackStatus => {
    if (playbackStatus.durationMillis === playbackStatus.positionMillis)
      // The player has just finished playing and will stop.
  };

  render(){
    return(
      <Video
        ref={this._handleVideoRef}
        source={require(//file)}
        onPlaybackStatusUpdate=
          {(playbackStatus) => this._onPlaybackStatusUpdate(playbackStatus)}/>
        resizeMode="cover"
        style={styles.player}
    );
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45897748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档