gpt4 book ai didi

Android:ExoPlayer - 从视频中获取当前帧数

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:37:29 76 4
gpt4 key购买 nike

我正在开发一个 Android 视频应用程序,我需要在暂停模式下获取正在显示的视频的当前帧编号

我需要向我的服务器发送视频中当前暂停的帧号,并取回有关该帧/时间的项目列表,现在我发送的是当前暂停时间(以毫秒为单位),但效果不是很好,因为服务器根据时间比较发送到它计算的特定帧的时间,但有时比较不准确。

我知道如果使用 MediaMetaDataRetriever 可以从该帧获取位图,我做到了,但它返回位图图像,我需要的是索引。我正在使用 ExoPlayer(如果重要的话,我也需要 MP4 和 HLS 的该功能)。

有没有办法从视频中获取该信息?

最佳答案

我发布了我的问题的解决方案,为了获得精确的帧时间,我简单地从 ExoPlayer 库扩展了 MediaCodecVideoTrackRenderer.java 类,并使用函数中 lastOutputBufferTimestamp 的值:

@Override
protected boolean processOutputBuffer(long positionUs, long elapsedRealtimeUs,
MediaCodec codec, ByteBuffer buffer, MediaCodec.BufferInfo bufferInfo, int bufferIndex,
boolean shouldSkip) {
boolean processed = super.processOutputBuffer(positionUs, elapsedRealtimeUs, codec, buffer,
bufferInfo, bufferIndex, shouldSkip);
if (!shouldSkip && processed) {
lastOutputBufferTimestamp = bufferInfo.presentationTimeUs;
}
return processed;
}

它确实给了我确切的时间,而不是最后说的 mPlayer.getDuration() 或类似时间的舍入时间。如果您的视频中有恒定的 FPS,您可以通过除法计算并获得帧数。我知道确切的帧时间就足够了。

我使用的是 ExoPlayer 版本 r1.5.3,所以我不知道这个解决方案是否适用于更新的版本,因为代码可能已经更改。

关于Android:ExoPlayer - 从视频中获取当前帧数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33626850/

76 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com