【发布时间】:2012-11-23 08:12:08
【问题描述】:
我在使用 Android 的 MediaPlayer 播放某个 .3gp 文件(来自 Dropbox 链接)时遇到问题。然而,该文件在 Dropbox Android 应用程序中神奇地播放而没有问题。
我正在尝试使用它来播放它:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://www.dropbox.com/s/zpiqwmxka6llavt/SketchyFile.3gp"));
startActivity(intent);
我的清单包含
<uses-permission android:name="android.permission.INTERNET" />
这会给出“无法播放此视频”错误。
Logcat 显示:
I/NuCachedSource2(89): new range: offset= 2245017
I/ChromiumHTTPDataSource(89): connect to https://dl.dropbox.com/0/view/a1crokuhpprsaeo/SketchyFile.3gp @2245017
I/NuCachedSource2(89): ERROR_END_OF_STREAM
E/MediaPlayer(3629): error (1, -2147483648)
E/MediaPlayer(3629): Error (1,-2147483648)
D/VideoView(3629): Error: 1,-2147483648
如果我尝试从 Dropbox Android 应用播放,Dropbox 的视频播放器可以正常播放。
根据 ffmpeg 的 ffprobe 工具,我可以验证媒体类型对 Android 来说不是奇特的东西。
Dropbox 是否在执行一些奇怪的转码伏都教,有没有办法让我以类似的方式进行这项工作?
编辑:这里还有一些insight into DropBox's encoding voodoo。
【问题讨论】:
-
可以直接播放SD卡的视频吗?
-
任何可能只是一个身份验证问题,即视频不是公开的,因此 Dropbox 应用程序可以访问它,因为它已登录,但不是作为原始 URL 传递给另一个 Android没有 Dropbox 登录会话的组件?
-
不太可能,因为我故意将视频公开,并且可以从新的浏览器会话中访问它。似乎涉及 URL 重定向(logcat 中的保管箱 URL 不同),但将其设置为其中任何一个都没有区别。
标签: android ffmpeg video-streaming media-player dropbox