[英]VideoView Streaming: Audio works but video is black
I have a very strange issue. 我有一个很奇怪的问题。 I am using a steam video and I play it on my app but the issue is that Audio works but video is not working. 我正在使用蒸汽视频,并且在我的应用程序上播放它,但问题是音频有效,但视频不起作用。 It shows a black screen (See image for reference.) I have no idea what the issue is. 它显示黑屏(请参阅图像以供参考。)我不知道问题是什么。 Audio works fine but video shows black screen. 音频工作正常,但视频显示黑屏。
Any ideas of what the issue can be? 对这个问题有什么想法?
Here is my code for reference: 这是我的代码供参考:
public class Video_Low_Mission extends Activity {
// Put in your Video URL here
private String VideoURL = "rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov";
// Declare some variables
private ProgressDialog pDialog;
VideoView videoview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set the layout from video_main.xml
setContentView(R.layout.activity_video__low__mission);
// Find your VideoView in your video_main.xml layout
videoview = (VideoView) findViewById(R.id.VideoView);
// Execute StreamVideo AsyncTask
new StreamVideo().execute();
}
// StreamVideo AsyncTask
private class StreamVideo extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Create a progressbar
pDialog = new ProgressDialog(Video_Low_Mission.this);
// Set progressbar title
pDialog.setTitle("Mission TV (Low Quality)");
// Set progressbar message
pDialog.setMessage("Buffering...");
pDialog.setIndeterminate(false);
// Show progressbar
pDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
return null;
}
@Override
protected void onPostExecute(Void args) {
try {
// Start the MediaController
MediaController mediacontroller = new MediaController(
Video_Low_Mission.this);
mediacontroller.setAnchorView(videoview);
// Get the URL from String VideoURL
Uri video = Uri.parse(VideoURL);
videoview.setMediaController(mediacontroller);
videoview.setVideoURI(video);
videoview.requestFocus();
videoview.setOnPreparedListener(new OnPreparedListener() {
// Close the progress bar and play the video
public void onPrepared(MediaPlayer mp) {
pDialog.dismiss();
videoview.start();
}
});
} catch (Exception e) {
pDialog.dismiss();
// Error Here
Log.e("Error", e.getMessage());
e.printStackTrace();
}
}
}
// Not using options menu for this tutorial
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.video__low__mission, menu);
return true;
}
XML: XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<VideoView
android:id="@+id/VideoView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
</RelativeLayout>
Thanks :) 谢谢 :)
You can try vitamio framework, it supports .mov format. 您可以尝试vitamio框架,它支持.mov格式。 Check also this decription . 也检查这个解题 。
我使用以下代码解决了这个问题,希望它对您有用。
videoView.setBackgroundColor(Color.TRANSPARENT);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.