在react native中逐帧播放视频



我正在努力使用expo-av制作逐帧视频播放器。

我实际上是这样做的:

  • ffmpeg-kit-react-native(FFprobeKit.getMediaInformation(src))解析视频信息
  • 手动计算帧长
  • 当按下"下一帧"按钮时,我用video.setPositionAsync(position + frameRateLength, { toleranceMillisBefore: 0, toleranceMillisAfter: 0 })
  • 更新视频位置

虽然这对于大多数30fps视频来说是ok的,但当读取从iPhone以高帧率拍摄的视频时,它实际上是非常错误的。我想这是因为他们有一个可变的帧率。

能够正确解析高帧率实际上是我想要我的应用程序做什么,所以是否有办法解决这个问题使用expo-av或其他视频库的反应原生?

也许你可以尝试用expo-video-thumbnails来生成缩略图,而不是使用ffmpeg,有一种方法可以让你在毫秒内提取缩略图,所以它是相当精确的,然后你可以将缩略图显示为图片,而不是使用AV播放器。

例如,如果你想每16毫秒(约60fps)一个帧

let thumbnailsArray =[];
for (let i=0, i<yourVideoLength/16, i++) {
const { uri } = await VideoThumbnails.getThumbnailAsync(yourVideoUrl,{time: 16*i});
thumbnailsArray.push(uri);
}

相关内容

  • 没有找到相关文章

最新更新