在react native expo-av中逐帧播放视频

gajydyqb  于 2023-04-22  发布在  React
关注(0)|答案(1)|浏览(153)

我正在努力使用expo-av制作一个逐帧视频播放器。
这就是我实际做的:

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

虽然这对于大多数30fps的视频来说是可以的,但当以高帧率阅读从iPhone拍摄的视频时,它实际上非常有缺陷。我认为这是因为它们的帧率是可变的。
能够正确解析高帧率实际上是我希望我的应用程序做的,所以我有一种方法来解决这个问题使用expo-av或其他视频库的React Native?

6jjcrrmo

6jjcrrmo1#

也许你可以尝试使用expo-video-thumbnails而不是使用ffmpeg来生成缩略图,有一种方法可以让你在特定的时间以毫秒为单位提取缩略图,所以它非常精确,然后你可以将缩略图显示为图片,而不是使用AV播放器。
例如,如果您希望每16ms(约60fps)一帧

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

相关问题