Android 如何从内容提供商播放视频
我可能使用了错误的搜索标签,但它在这里。 在我正在开发的应用程序中,用户可以上传图片和视频 这是通过录音或画廊。我目前正在尝试显示用户刚刚录制的视频。在MediaStore.ACTION\u VIDEO\u CAPTURE的意图之后,我从Intent.getData()获取Uri 公开的Android 如何从内容提供商播放视频,android,video,android-contentprovider,android-videoview,Android,Video,Android Contentprovider,Android Videoview,我可能使用了错误的搜索标签,但它在这里。 在我正在开发的应用程序中,用户可以上传图片和视频 这是通过录音或画廊。我目前正在尝试显示用户刚刚录制的视频。在MediaStore.ACTION\u VIDEO\u CAPTURE的意图之后,我从Intent.getData()获取Uri 公开的 void getCameraVideo() { Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
void getCameraVideo() {
Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
if (takeVideoIntent.resolveActivity(ctx.getPackageManager()) != null) {
ctx.startActivityForResult(takeVideoIntent, FETCHER_VIDEOCAMERA);
} else {
Toast.makeText(ctx, Language.translate("error_phone_has_no_camera_app"), Toast.LENGTH_LONG).show();
ErrorClass.log("Tried to take video, but phone has no camera.");
}
}
所以我的视频有这个内容Uri,现在我应该如何开始在视频视图中播放这个视频呢?对于这个问题,我似乎找不到任何像样的解决办法
我只是在我正在播放视频的活动中尝试了这一点,但它只会产生一个黑色的视频视图
view = new VideoView(activity);
((VideoView) view).setVideoURI(uri);
((VideoView) view).start();
我确信已经有人解决了这个问题,我就是找不到它。您可能需要调用videoView.play()来查看您的uri是否正确。提供一个代码片段可以帮助我们解决您的问题,但接下来就是 由于您在活动中实现了这一点,因此您应该能够从布局中访问VideoView。因此我假设你应该能做这样的事情
String video_url = "some_url";
VideoView videoView = (VideoView)findViewById(R.id.video_view_id);
MediaController controls = new MediaController(YourActivityClassName.this);
videoView.setMediaController(controls);
videoView.setVideoURI(Uri.parse(video_url));
videoView.start();
希望这能对你有所帮助。如果没有,请告诉我们,我们可以进一步帮助您
另外,请查看android文档以了解有关videoview的更多信息:
一次尝试如下
view.setVideoURI(Uri.parse(path));
view.requestFocus();
view.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
//start playing here
mp.start();
}
}
希望这能对您有所帮助。添加更多的代码…为什么不使用开始重新编码时有意传递的相同的
uri
?我正在使用uri我得到一个结果,我没有传递任何uri。我看到您在发布解决方案后修改了问题并添加了start()方法。如果知道你在我发布我的答案后添加了这个,那会很好:)是的,但那是我忘记添加的东西。但这不是我要求反馈的问题。仅供参考,我确实声明了我从意图中获得了内容Uri,我没有链接到远程或本地视频文件的字符串。我理解视频视图没有问题,只是不知道如何正确加载视频。嗯,你从意图中检索的Uri对象中的原始数据是什么?也许这有助于缩小问题的范围。我不太确定,但就在一分钟前,我真的看了一段视频。但总的来说是黑色的。我很困惑。我会让你知道的;)VideoView没有play()方法。正如我在上面的回答中提到的,它被称为start(),这似乎是我的案例中的解决方案。可能是因为在我的例子中,视图还没有从一开始就在舞台上。是的,只要阅读VideoView文档,它就会指定以下内容:[OnPreparedListener]注册一个回调,以便在加载媒体文件并准备就绪时调用。这就解释了你之前的陈述,你说你之前看了一分钟的视频。视频一定是在某个时候加载得更快了。