5

在我的应用程序中,我需要为用户提供渐进式下载(视频文件)的预览。

为了实现这一点,我使用VideoView组件来显示正在下载的视频(.mp4、.3gpp)的内容。

问题是我无法通过http://rtsp://协议访问远程媒体,所以我被迫VideoView.setVideoPath在下载时使用播放视频的本地副本。

不幸的是,似乎在无法使用StageFright框架的 Android 设备上(因此以及我的经验中的OpenCore某些设备),无法正确处理渐进式下载:它只能播放在组件初始化期间识别的视频部分。Tegra2-basedVideoView

所以要明确一点:如果用户在只下载了 5% 的视频时按下“播放”,VideoView 将只显示 5% 的视频,无论在此期间是否下载了更多视频内容。

根据我的经验,这个问题不会影响使用StageFright框架的设备(例如:Nexus One 2.2、Nexus One 2.3.4)。

谁能指出一个可能的解决方案?提前致谢

4

2 回答 2

2

如果您尝试播放 .h264,则需要将 MOV 原子移动到文件的前面。这些告诉编解码器电影的长度等等。

试试 qtfaststart

http://ffmpeg.zeranoe.com/builds/

于 2013-08-18T17:35:53.940 回答
1

VideoView 是 Android 应用程序框架中用于视频播放用例的现成类。它在内部使用 MediaPlayer 类来实现播放。MediaPlayer 根据某些标准(如文件格式、内容来源等)使用内部可用的媒体框架。

所以限制来自底层框架而不是 VideoView。如果您仍然怀疑 VideoView,请使用媒体播放器编写您自己的视频播放器活动。你会看到同样的结果。

此外,并非所有版本的 Android(读作 stagefright)都支持渐进式下载。

也许您可以使用 DownloadManager 类从 http 服务器下载内容,并提供媒体播放器/视频视图的路径以便快速预览。

沙什316

于 2011-07-20T15:09:54.410 回答