Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.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
Java 使用Android VideoView从VLC播放器到AVD的HTTP流_Java_Android_Streaming_Vlc_Android Videoview - Fatal编程技术网

Java 使用Android VideoView从VLC播放器到AVD的HTTP流

Java 使用Android VideoView从VLC播放器到AVD的HTTP流,java,android,streaming,vlc,android-videoview,Java,Android,Streaming,Vlc,Android Videoview,我正在尝试在android emulator(v.2.3.3-EclipseIDE)上传输3gp视频。我使用VLC media player在端口9090上使用HTTP准备流,无需任何转码。为了测试流媒体,我打开了一个新的VLC实例,并连接到我的本地ip(192.168.1.107:9090),我看到的视频没有任何问题。现在,我在我的Activity类的onCreate(Bundle)方法上使用以下代码在Android上进行了尝试: VideoView视频=(VideoView)findview

我正在尝试在android emulator(v.2.3.3-EclipseIDE)上传输3gp视频。我使用VLC media player在端口9090上使用HTTP准备流,无需任何转码。为了测试流媒体,我打开了一个新的VLC实例,并连接到我的本地ip(192.168.1.107:9090),我看到的视频没有任何问题。现在,我在我的Activity类的onCreate(Bundle)方法上使用以下代码在Android上进行了尝试:

VideoView视频=(VideoView)findviewbyd(R.id.video);
字符串uri=”http://192.168.1.107:9090";
setVideoURI(Uri.parse(Uri));
video.setMediaController(新MediaController(this));
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;
我使用的是
Windows7x64

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

Edit2:我在本地网络上启动了一个XAMPP会话,并将视频放在一个文件夹中。ip地址如下所示:

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

它可以工作,即使这不是正确的流式传输,但类似于活动下载(如我第一次编辑时在web上的示例)。

您是否检查过您的本地web服务器是否使用HTTP响应头中设置的正确的
内容类型(或mime类型)交付视频

您的原始链接使用
内容类型:视频/3gpp

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

:mime=video/3gpp

如果在桌面浏览器中打开URL,流是否工作?Android浏览器怎么样?@PeterKnego谷歌Chrome下载一个名为“下载”的文件,没有任何扩展名。Android浏览器也下载了一个文件,但在下载文件夹中,我在我的ip和下读到“失败”。我建议尝试使用更具体的url,而不是裸域:端口。另外,试着在真实的设备上测试它。@yorkw我已经试过了,但是错误是相同的,范围不同(1,-1004)。不幸的是,我没有安卓设备。安卓还应该能够查看rtsp:streams,尽管我已经能够从我的HTC Desire手机在网上打开一些测试流,但我无法设置安卓媒体播放器支持的VLC到rtsp流(尽管连接到它创建的rtsp流时,VLC可以很好地播放).我不知道VLC以何种方式在HTTP中发送流。我只是使用了一些类似于流式传输视频的东西。抱歉,我不明白我必须在哪里指定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
,但是显示的错误是相同的。