【问题标题】:React Native playing iOS Slo-mo videosReact Native 播放 iOS 慢动作视频
【发布时间】:2020-12-30 10:33:28
【问题描述】:

我正在使用 react-native-image-crop-picker (v0.34.1) 从 iPhone 中选择慢动作视频。

选择视频后,我正在使用 react-native-video (v5.0.2) 播放视频。

视频的慢动作效果不会反映在视频的播放中。我找不到有关如何实现这一目标的任何信息。谁能指出我正确的方向?

谢谢

【问题讨论】:

  • 当你操作 rate 属性时会发生什么?
  • rate 属性会减慢整个视频的速度,但是,iOS 创建的慢动作视频允许视频的小片段以较慢的速度播放,所以这不是我想要的.
  • 但是不能用道具自己造假吗? iOS 变慢了,我不知道,我猜是慢动作视频的中间 80%。所以当你达到 10% 的进度时,将 rate prop 更改为,比如说 0.2,然后当你达到 90% 的进度时,将 rate prop 改回 1。
  • 我已经考虑过这一点,并试图追踪确定视频的哪些片段以不同的速率播放的数据,但这些数据似乎没有暴露。或者至少我还没有找到找回它的方法。
  • 也许检查onLoad 中的canPlaySlowForward 以查看用户是否选择了慢动作视频?顺便说一句,你是对的,如果数据没有公开,那么它就没有公开,但是你仍然可以选择向用户显示你想要的视频,如果你选择以慢动作显示它,那么你可以使用费率。

标签: ios react-native video-player react-native-video slowmotion


【解决方案1】:

就像我说的,你必须使用它来达到你想要的效果。

试试看:

const [rate,setRate] = useState(1);
const durationRef = useRef();
const checkCurrentTime = useCallback(({currentTime}) => {
  const percentagePlayed = currentTime/durationRef.current;
  setRate(percentagePlayed < 0.1 || percentagePlayed > 0.9 ? 1 : 0.2)
},[durationRef]);

return (
   <Video
     ...
     rate={rate}
     onLoad(({duration}) => durationRef.current = duration)
     onProgress={checkCurrentTime}
   />
)

【讨论】:

    【解决方案2】:

    如果其他人遇到此问题,我已找到解决此问题的方法。

    我已从使用 react-native-image-crop-picker 库切换到结合 react-native-convert-ph-asset 使用 react-native-cameraroll。这将正确地提供嵌入在视频剪辑中的 slomo 数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-13
      • 1970-01-01
      • 2022-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-16
      • 1970-01-01
      相关资源
      最近更新 更多