android - 如何从 URL 流式传输实时视频?
问题描述
我想将此链接嵌入到我的 android 应用程序中。我试过这样做,但视频无法加载。我也收到错误 java.io.FileNotFoundException: No content provider:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_cctv, container, false);
try {
String cctv = "http://121.58.202.110:8080/jpeg?cam=4";
VideoView videoView = getView().findViewById(R.id.cctvfragment);
MediaController mediaController = new MediaController(getActivity());
mediaController.setAnchorView(videoView);
Uri video = Uri.parse(cctv);
videoView.setMediaController(null);
videoView.setVideoURI(video);
videoView.start();
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
}
});
} catch (Exception e) {
// TODO: handle exception
Log.d("CctvDebug", "ERROR LOADING VIDEO");
}
return view;
}
解决方案
在这个问题上,原生视频视图对于较新且(*我认为)不再更新的 url 非常有限。尝试改用Vitamio视频播放器。它对于各种流媒体功能非常有用。
<io.vov.vitamio.widget.VideoView
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:id="@+id/VideoView"/>
另外,不要立即调用start()
方法。仅在您的OnPreparedListener()
回调中调用它。
Vitamio.isInitialized(getApplicationContext());
mVideoView.setVideoPath(path);
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
// optional need Vitamio 4.0
mediaPlayer.setPlaybackSpeed(1.0f);
}
});
或者您也可以使用KickFlip。设置非常简单,
Kickflip.initWithApiKey(API_KEY, API_SECRET);
Kickflip.startBroadcastActivity(this, mBroadcastListener);
编辑:
所以我从昨天开始尝试在流上工作。我无法在 vitamio 上解决这个问题(不幸的是)。尽管尝试使用您提供的网址并通过 vlc 应用程序进行流式传输。虽然我没有尝试过,但您也许可以使用LibVLC。我最终使用了带有一些设置的 webview,因此它看起来不像使用 webview。
webView = findViewById(R.id.wvWebview);
webView.loadUrl("http://121.58.202.110:8080/jpeg?cam=4");
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
推荐阅读
- python - Pygame,旋转图像而无需在每次迭代中加载图像
- tsql - 具有特定条件的 STRING_AGG
- html - CSS 灵活的 Sticky Header,它可能会增长并向下推下项目
- python - 我想使用列表理解重写下面的代码。所以基本上我想从列表中删除重复元素
- python-3.x - 如何更新 django 模型中的相关字段
- mysql - 查询将所有内容连接到一行而不是单独的行
- angular - 如何在不显示输入字段的情况下显示角度日期选择器
- sorting - XSLT 3.0 中的日期排序
- firebase - Flutter 不应用带有整数的 firebase 过滤器
- html - 需要用列表编号创建标题