gpt4 book ai didi

android - 如何在 Android 中播放 HLS 视频?

转载 作者:太空狗 更新时间:2023-10-29 15:07:32 26 4
gpt4 key购买 nike

这是来自 justin.com 或 twitch.tv 的流媒体视频这个CHANNEL
转到 here并选择任何直播流,从他们那里获取 url 并添加 html://.../hls在屏幕上出现
enter image description here

伙计们告诉我:

Android is weird in that it will not work on Android Chrome but willwork in the stock Android browser (well, previous stock Androidbrowser now that Chrome is the stock browser). It'll also work on allSafari browsers.

我已经实现了这段代码

stream = (WebView) findViewById(R.id.webView1);
stream.getSettings().setJavaScriptEnabled(true);
stream.getSettings().setPluginsEnabled(true);
stream.setBackgroundColor(Color.parseColor("#000000"));
stream.getSettings().setUseWideViewPort(true);
stream.setWebViewClient(new HelloWebViewClient());
stream.getSettings().setAppCacheEnabled(true);
stream.getSettings().setDomStorageEnabled(true);
stream.getSettings().setSaveFormData(true);
stream.getSettings().setLoadWithOverviewMode(true);
stream.getSettings().setUseWideViewPort(true);
stream.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
stream.setScrollbarFadingEnabled(false);
stream.loadUrl("http://www.twitch.tv/arteezy/hls");
stream.setVisibility(View.VISIBLE);

private class HelloWebViewClient extends WebViewClient
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
}

但它打开视频中的第一张图片并停止缓存...WebView 似乎没有缓存视频...怎么了?

已更新

以下代码流仅播放 2 秒后停止

stream = (WebView) findViewById(R.id.webView1);
stream.getSettings().setJavaScriptEnabled(true);
stream.getSettings().setJavaScriptEnabled(true);

stream.getSettings().setPluginsEnabled(true);

stream.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);

stream.setBackgroundColor(Color.parseColor("#000000"));
stream.getSettings().setUseWideViewPort(true);
// mWebView.loadUrl("data/game.swf");
//mWebViewChat.getSettings().setBuiltInZoomControls(true);
// mWebView.loadUrl("file:///android_asset/live.swf?channel=d2l");
stream.setWebViewClient(new HelloWebViewClient());
final Activity MyActivity = this;
stream.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress)
{
MyActivity.setTitle("Loading...");
MyActivity.setProgress(progress * 100);
if (progress*100 == 100){
stream.clearFormData();
stream.clearHistory();
stream.clearCache(true);
}

}
});
stream.getSettings().setAppCacheEnabled(true);
stream.getSettings().setDomStorageEnabled(true);
stream.getSettings().setSaveFormData(true);

stream.getSettings().setLoadWithOverviewMode(true);
stream.getSettings().setUseWideViewPort(true);

stream.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
stream.setScrollbarFadingEnabled(false);
stream.clearFormData();
stream.clearHistory();
stream.clearCache(true);

stream.getSettings().setAppCacheEnabled(true);
stream.getSettings().setDatabaseEnabled(true);
stream.getSettings().setDomStorageEnabled(true);
stream.getSettings().setPluginsEnabled(true);

stream.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
stream.getSettings().setPluginState(PluginState.ON);
stream.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);// no need I think

stream.getSettings().setLoadWithOverviewMode(true);
stream.getSettings().setUseWideViewPort(true);
stream.getSettings().setBuiltInZoomControls(true);
stream.setInitialScale(1);

stream.setWebChromeClient(new WebChromeClient());
stream.getSettings().setJavaScriptEnabled(true);

stream.getSettings().setPluginsEnabled(true);

stream.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);

stream.setBackgroundColor(Color.parseColor("#000000"));
stream.getSettings().setUseWideViewPort(true);
// mWebView.loadUrl("data/game.swf");
//mWebViewChat.getSettings().setBuiltInZoomControls(true);
// mWebView.loadUrl("file:///android_asset/live.swf?channel=d2l");
stream.setWebViewClient(new HelloWebViewClient());
stream.getSettings().setAppCacheEnabled(true);
stream.getSettings().setDomStorageEnabled(true);
stream.getSettings().setSaveFormData(true);

stream.getSettings().setLoadWithOverviewMode(true);
stream.getSettings().setUseWideViewPort(true);

stream.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
stream.setScrollbarFadingEnabled(false);
stream.clearFormData();
stream.clearHistory();
stream.clearCache(true);

stream.getSettings().setAppCacheEnabled(true);
stream.getSettings().setDatabaseEnabled(true);
stream.getSettings().setDomStorageEnabled(true);
stream.loadUrl("http://www.twitch.tv/arteezy/hls");

最佳答案

此代码适用于我:(Android 5.1 Nexus 4)

public class TwitchFragment extends Fragment implements View.OnClickListener {

@Nullable
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container,
final Bundle savedInstanceState) {
final View root = inflater.inflate(R.layout.fragment_twitch, null, false);

Button buttonTwitch = (Button) root.findViewById(R.id.buttonTwitch);
buttonTwitch.setOnClickListener(this);

return root;
}

@Override
public void onClick(final View v) {
FrameLayout layout = (FrameLayout) getView();
assert layout != null;
layout.removeView(v);

WebView webView = new WebView(ESportLiveScoreApplication.getInstance());

layout.addView(webView);

WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setUseWideViewPort(false);
webSettings.setDomStorageEnabled(true);
webSettings.setSaveFormData(true);
webSettings.setLoadWithOverviewMode(true);

final WebChromeClient webChromeClient = new WebChromeClient();

webView.setWebChromeClient(webChromeClient);
webView.loadUrl("http://www.twitch.tv/h2p_gucio/hls");
}
}

我不知道为什么,但只有当我将 WebView 放入 FrameLayout 时它才有效:)

关于android - 如何在 Android 中播放 HLS 视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20473757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com