Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:ExoPlayer-从视频中获取当前帧号_Android_Ffmpeg_Video Streaming_Exoplayer - Fatal编程技术网

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

Android:ExoPlayer-从视频中获取当前帧号,android,ffmpeg,video-streaming,exoplayer,Android,Ffmpeg,Video Streaming,Exoplayer,我正在开发一个Android视频应用程序,在这个应用程序中,我需要获取暂停模式下显示的视频的当前帧数 我需要向我的服务器发送视频中当前暂停的帧号,并获取有关该帧/时间的项目列表,现在我以毫秒为单位发送当前暂停的时间,但效果不太好,因为服务器将发送的时间与它根据时间计算的特定帧进行比较,但有时比较并不准确 我知道如果您使用MediaMetaDataRetriever,您可以从该帧获取位图,我这样做了,但它返回位图图像,我需要的是索引。 我正在使用ExoPlayer(如果有必要的话,我需要MP4和H

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

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

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


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

我发布了一个问题的解决方案,为了获得准确的帧时间,我简单地扩展了ExoPlayer库中的MediaCodeVideoTrackRenderer.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,因此我不知道此解决方案是否适用于较新版本,因为代码可能已更改。

事实上,我要强调的是,我还需要知道当前的帧号,而不是以毫秒为单位的时间。如果计算每帧的毫秒数,则通常会出现舍入错误,因此帧不准确。