|
|
|
@ -98,6 +98,7 @@ class Video extends React.PureComponent { |
|
|
|
|
|
|
|
|
|
static propTypes = { |
|
|
|
|
preview: PropTypes.string, |
|
|
|
|
frameRate: PropTypes.string, |
|
|
|
|
src: PropTypes.string.isRequired, |
|
|
|
|
alt: PropTypes.string, |
|
|
|
|
width: PropTypes.number, |
|
|
|
@ -125,6 +126,10 @@ class Video extends React.PureComponent { |
|
|
|
|
muted: PropTypes.bool, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static defaultProps = { |
|
|
|
|
frameRate: 25, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
state = { |
|
|
|
|
currentTime: 0, |
|
|
|
|
duration: 0, |
|
|
|
@ -298,7 +303,7 @@ class Video extends React.PureComponent { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
handleKeyDown = e => { |
|
|
|
|
const frameTime = 1 / 25; |
|
|
|
|
const frameTime = 1 / this.getFrameRate(); |
|
|
|
|
|
|
|
|
|
switch(e.key) { |
|
|
|
|
case 'k': |
|
|
|
@ -531,6 +536,17 @@ class Video extends React.PureComponent { |
|
|
|
|
this.props.onCloseVideo(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
getFrameRate () { |
|
|
|
|
if (this.props.frameRate && isNaN(this.props.frameRate)) { |
|
|
|
|
// The frame rate is returned as a fraction string so we
|
|
|
|
|
// need to convert it to a number
|
|
|
|
|
|
|
|
|
|
return this.props.frameRate.split('/').reduce((p, c) => p / c); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return this.props.frameRate; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
render () { |
|
|
|
|
const { preview, src, inline, onOpenVideo, onCloseVideo, intl, alt, letterbox, fullwidth, detailed, sensitive, link, editable, blurhash } = this.props; |
|
|
|
|
const { containerWidth, currentTime, duration, volume, buffer, dragging, paused, fullscreen, hovered, muted, revealed } = this.state; |
|
|
|
|