android - Android 应用程序中的 HTML5 视频播放器无法在某些手机上运行,​​为什么?

标签 android html5-video

<分区>

我正在使用带有 mp4 视频的 HTML5 视频标签,有些手机播放这个视频很好......但是有些手机不能播放这个视频......

我怀疑在应用程序中哪个视频播放器可以播放?有任何内置视频播放器或需要使用浏览器视频播放器为其安装任何编解码器吗?

最佳答案

它仅使用手机的编解码器。问题出在解码时,因为它没有使用 android videoview 和覆盖。

尝试为您的应用将 harwareacceleration 设置为 true。它应该工作。但是有些手机可能没有硬件加速,所以解码失败。

但正确的方法是编写 android videoplayer 来播放这样的 View :

VideoPlayerActivity.java:

包 com.camera.manual;

导入android.app.Activity; 导入 android.content.pm.ActivityInfo; 导入 android.net.Uri; 导入 android.os.Bundle; 导入 android.util.Log; 导入 android.view.Window; 导入 android.view.WindowManager; 导入 android.widget.MediaController; 导入 android.widget.Toast; 导入 android.widget.VideoView;

public class VideoPlayerActivity extends Activity {

    private boolean mResumed = false;
    private boolean mFocused = false;
    private boolean mControlResumed = false;
    private VideoView videoView = null;
    private int stopPosition = 0;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTheme(R.style.Theme_TransparentVideo);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);

        setContentView(R.layout.video_view);

        videoView =(VideoView)findViewById(R.id.myvideoview);
        MediaController mediaController= new MediaController(this);
        mediaController.setAnchorView(videoView);        
        Uri uri=Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.slow);        
        videoView.setMediaController(mediaController);
        videoView.setVideoURI(uri);        
        videoView.requestFocus();
        videoView.start();
    }

    @Override
    public void onPause() {
        super.onPause();
        mResumed = false;
        if (mControlResumed) {
            if (null != videoView)
                videoView.pause();
            stopPosition = videoView.getCurrentPosition();
            mControlResumed = false;
        }
    }


    @Override
    public void onResume() {
        super.onResume();
        mResumed = true;
        if (mFocused && mResumed && !mControlResumed) {
            if(null != videoView) {
                //videoView.resume();
                videoView.seekTo(stopPosition);
                videoView.start();
            }
            mControlResumed = true;
        }
    }


    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        mFocused = hasFocus;
        if (mFocused && mResumed && !mControlResumed) {
            if (null != videoView) {
                //videoView.resume();
                videoView.seekTo(stopPosition);
                videoView.start();
            }
            mControlResumed = true;
        }
    }
} 

video_view.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<VideoView android:id="@+id/myvideoview"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:layout_gravity="center" />

</FrameLayout> 

然后在 JavaScriptInterface 中定义一个这样的函数:

public void launchVideoView () {

    Intent intent = new Intent();
    intent.setClass(mContext, VideoPlayerActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    mContext.startActivity(intent);
}

然后在需要播放视频的时候调用这个函数

关于android - Android 应用程序中的 HTML5 视频播放器无法在某些手机上运行,​​为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18377075/

相关文章:

android - Android使用Gradle在启动画面上显示版本名称

android - 如何使用 Volley 发送 http get 请求并将数据存储到 Map with Keys?

android - Firebase 推送通知

javascript - Html Canvas 视频流

android - 按下网页 View 中嵌入式YouTube fragment 中的播放按钮,启动YouTube应用

android - 同时获取logcat和内核日志

android - 有没有办法让 VideoView 在 Android 应用程序上继续在后台播放?

ios - "No Source Video Found"错误仅适用于 HLS 流、Kaltura CE 6 和 Wowza 4.1

asp.net-mvc-3 - MVC3 操作中的 HTML5 视频无法正常工作

javascript - 获取最后一个索引 "buffered.end(0)"吗?