【发布时间】:2015-08-25 08:40:30
【问题描述】:
我知道在 stackoverflow 上有无数个问题描述了这个错误,我已经详细讨论了每个问题。不幸的是,没有一个解决方案对我有用。我无法相信流式传输视频是如此痛苦。
这是我的代码。
MainActivity.java
public class MainActivity extends AppCompatActivity{
VideoView videoview;
private static final String VIDEO_URL = "http://www.law.duke.edu/cspd/contest/finalists/viewentry.php?file=docandyou";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
videoview = (VideoView) findViewById(R.id.VideoView);
try {
MediaController mediacontroller = new MediaController(
MainActivity.this);
mediacontroller.setAnchorView(videoview);
videoview.setMediaController(mediacontroller);
videoview.setVideoURI(Uri.parse(VIDEO_URL));
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
videoview.requestFocus();
videoview.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
// Close the progress bar and play the video
public void onPrepared(MediaPlayer mp) {
videoview.start();
}
});
}
}
activity_main.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<VideoView
android:id="@+id/VideoView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
</RelativeLayout>
AndroidManifest.xml
.......
<uses-permission android:name="ANDROID.PERMISSION.INTERNET"/>
<uses-permission android:name="ANDROID.PERMISSION.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="ANDROID.PERMISSION.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
........
现在我尝试从这个网址播放视频,
http://www.law.duke.edu/cspd/contest/finalists/viewentry.php?file=docandyou
但总是报错
E/MediaPlayer﹕ Unable to create media player
W/VideoView﹕ Unable to open content: http://www.law.duke.edu/cspd/contest/finalists/viewentry.php?file=docandyou
java.io.IOException: setDataSource failed.: status=0x80000000
此类问题的一个常见答案是尝试使用不同的视频文件,因为并非所有设备都支持每种视频编解码器。我通过从上面的链接下载视频并将其添加到捆绑包中的原始文件夹来确保这一点。应用程序从原始文件夹播放相同的视频,没有任何问题。
那么为什么 VideoPlayer 不能播放来自公共域的视频,而它可以在本地播放呢?
【问题讨论】:
-
陷入同样的问题..
标签: android video-streaming ioexception android-video-player