我在Android中有播放视频的应用程序,如
https://play.google.com/store/apps/details?id=com.vlcforandroid.vlcdirectprofree&hl=en
我想在我的应用中集成此应用。我有视频流的Url,我想在这个应用程序(Vlc Direct)中打开这个视频,不知道吗?
我使用以下方式打开此应用程序:
Intent i = new Intent(Intent.ACTION_MAIN);
PackageManager manager = getPackageManager();
i = manager.getLaunchIntentForPackage("com.vlcdirect.vlcdirect");
i.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(i);
但它是如何从视频流或其他任何视频流播放器开始的?
答案 0 :(得分:3)
更喜欢,
Intent i = new Intent(Intent.ACTION_MAIN);
i.setComponent(new ComponentName("com.vlcdirect.vlcdirect", "com.vlcdirect.vlcdirect.URLStreamerActivity"));
i.putExtra("url", url);
startActivity(i);
假设组件,活动和有效负载如图所示,并且显式或隐式导出活动 - 我不知道实际值,或者活动是否已导出。 vlcdirect不记录此内容,但您可以
询问开发人员,或
在您从该应用内的网址流式传输时查看日志,以识别组件和活动;对.apk进行dedex和反编译,以确认有效载荷;必要时重复有效载荷类;如果未导出活动,则在开发人员忽略您之后放弃并放弃。
理想情况下,您会广播“查看此网址的流”意图,而vlcdirect或任何其他合适的应用程序会选择它,但我不知道vlcdirect或任何其他应用是否会响应此类。
答案 1 :(得分:3)
需要明确告知VLC类型:
Intent i = new Intent(Intent.ACTION_VIEW);
i.setPackage("org.videolan.vlc.betav7neon");
i.setDataAndType(Uri.parse("http://ip:8080"), "video/h264");
startActivity(i);
即。只是“视频/ *”对我不起作用
答案 2 :(得分:0)
以前的答案对我不起作用。经过一番搜索后,我找到了the official docs here。
基本上,这是:
int vlcRequestCode = 42; //request code used when finished playing, not necessary if you only use startActivity(vlcIntent)
Uri uri = Uri.parse("file:///storage/emulated/0/Movies/KUNG FURY Official Movie.mp4"); //your file URI
Intent vlcIntent = new Intent(Intent.ACTION_VIEW);
vlcIntent.setPackage("org.videolan.vlc");
vlcIntent.setDataAndTypeAndNormalize(uri, "video/*");
vlcIntent.putExtra("title", "Kung Fury");
vlcIntent.putExtra("from_start", false);
vlcIntent.putExtra("subtitles_location", "/sdcard/Movies/Fifty-Fifty.srt"); //subtitles file
startActivityForResult(vlcIntent, vlcRequestCode);
您可以删除不必要的部分。