如何在实际完全加载视频之前开始在 MediaPlayer 中播放视频

Posted

技术标签:

【中文标题】如何在实际完全加载视频之前开始在 MediaPlayer 中播放视频【英文标题】:How to start playing a video in MediaPlayer before actually completely loading a video 【发布时间】:2021-04-24 04:27:16 【问题描述】:

我用VideoViewMediaPlayer 编写了一个VideoViewActivity。现在开始播放大约 11MB 的视频大约需要 10-15 秒,4 秒存储在本地存储中。我听说对于本地存储视频,MediaPlayerExoPlayer 更好。如何在加载第一位后立即开始播放视频,以便减少按下播放和实际开始播放之间的延迟。顺便说一句,为了比较,whatsapp 一点击就立即加载和播放大小甚至 30MB 的视频!!!

【问题讨论】:

【参考方案1】:

MediaPlayer 尽早解码和播放媒体。当我们必须使用来自本地来源的媒体流时,最好使用 MediaPlayer。另一方面,ExoPlayer 可以用于流媒体源,例如来自网站或存储桶。

在这两种情况下,各自的播放器都需要一堆必须播放的解码帧数据。如果您使用的格式很复杂,解码可能需要很长时间。

就whatsapp而言,它获取原始文件并专门压缩它以在其媒体管理器中使用。

我会推荐使用 exoplayer,因为它更容易处理和更短的准备时间。还支持流式传输。

【讨论】:

Whatsapp 压缩原始文件.. 当然。但是我的一个压缩文件本身有 30mb,它会立即启动。他们是怎么做到的? 据我推测,文件的编码存在差异。这意味着您的编码文件与 whatsapp 文件的编码文件不同。这种差异会导致 whatsapp 的解码时间更短。

以上是关于如何在实际完全加载视频之前开始在 MediaPlayer 中播放视频的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在完全加载之前告诉 .ogg 视频的文件大小?

如何在继续使用 Javascript 之前完全加载页面?

如何强制 html5 视频完全加载?

按块加载视频/音频 html

AngularJS:如何在页面完全加载之前显示预加载或加载?

在尝试加载 YouTube 视频之前,如何判断它是不是可嵌入?