【问题标题】:HTTP streaming from VLC player to AVD using Android VideoView使用 Android VideoView 从 VLC 播放器到 AVD 的 HTTP 流式传输
【发布时间】:2011-12-16 10:37:01
【问题描述】:

我正在尝试在 android 模拟器 (v. 2.3.3 - Eclipse IDE) 上流式传输 3gp 视频。我在端口 9090 上使用 HTTP 准备了一个带有 VLC 媒体播放器的流,没有任何转码。为了测试流媒体,我打开了一个新的 VLC 实例并连接到我的本地 ip (192.168.1.107:9090) 我看到视频没有任何问题。现在我在我的 Activity 类的 onCreate(Bundle) 方法上使用此代码在 Android 上尝试:

VideoView video = (VideoView) findViewById(R.id.video);
String uri = "http://192.168.1.107:9090";
video.setVideoURI(Uri.parse(uri));
video.setMediaController(new MediaController(this));
video.requestFocus();
video.start();

但当应用程序启动时,会出现以下消息:“无法重现视频”。这里是logcat:

D/MediaPlayer(454): Couldn't open file on client side, trying server side
E/MediaPlayer(454): error (1, -2147483648)
E/MediaPlayer(454): Error (1,-2147483648)
D/VideoView(454): Error: 1,-2147483648

我也尝试使用 URI 10.0.2.2:9090 获得相同的结果,使用 127.0.0.1:9090 获得相同的消息和错误范围 (1, -111)

请注意,如果我在本地播放相同的视频效果很好:

String uri = "android.resource://" + getPackageName() + "/" + R.raw.myvideo;

我使用Windows 7 x64

编辑:我也尝试将视频上传到我的 Dropbox 的公共文件夹中,但出现同样的错误,但使用原始的 link 可以正常工作!我的本地网络有问题吗?错误(1,x)是什么意思?

Edit2:我在本地网络上启动了 XAMPP 会话,并将视频放在一个文件夹中。 ip地址是这样的:

String uri = "http://192.168.1.107:8080/myfolder/myvideo.3gp";

它可以工作,即使这不是正确的流式传输,而是类似于主动下载(作为我第一次编辑中网络上的示例)。

【问题讨论】:

  • 如果您在桌面浏览器中打开 URL,流是否工作?安卓浏览器怎么样?
  • @PeterKnego Google Chrome 下载一个名为“download”的文件,没有任何扩展名。 Android 浏览器也下载一个文件,但在下载文件夹中,我在我的 ip 和 下读取“失败”。
  • 我建议尝试使用更具体的 url 192.168.1.107:9090/myfile.3gp 而不是裸域:端口。另外,请尝试在真实设备上进行测试。
  • @yorkw 我试过了,但错误与不同的范围(1,-1004)相同。不幸的是,我没有安卓设备。
  • Android 也应该能够查看 rtsp: 流,虽然我已经能够从我的 HTC Desire 手机在网络上打开一些测试流,但我无法设置 VLC 来流式传输 rtsp Android 媒体播放器支持(在 VLC 中播放良好,但连接到它创建的 rtsp 流时)。

标签: java android streaming vlc android-videoview


【解决方案1】:

您是否检查过您的本地网络服务器提供的视频是否在 HTTP 响应标头中设置了正确的 Content-Type(或 mime 类型)?

您的原始链接使用Content-Type: video/3gpp

对于 VLC,您可以在选项页面上指定内容或 mime 类型。根据documentation,您必须编辑选项字符串并添加

:mime=video/3gpp

【讨论】:

  • 我不知道 VLC 以哪种方式在 HTTP 中发送流。我只是使用this 之类的东西来流式传输视频。
  • 对不起,我不明白在哪里我必须指定mime类型。
  • 打开您在第一条评论中发布的链接,然后向下滚动到“选项”部分。在那里您可以看到必须修改的“生成的流输出字符串”。
  • 好的,我已经修改了这样的字符串::sout=#duplicate{dst=http{mux=ffmpeg{mux=flv},dst=:9090/},dst=display} :no-sout-rtp-sap :no-sout-standard-sap :ttl=1 :sout-keep:mime=video/3gp,但是显示的错误是一样的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-19
  • 2015-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多