【问题标题】:AVI/MP4 on videoview视频视图上的 AVI/MP4
【发布时间】:2015-03-28 20:55:17
【问题描述】:

我正在尝试在我的应用中的 videoview 上运行 avi/mp4 视频,但是当应用打开时出现“无法播放此视频”时,我正在我的手机上进行测试。

videoView = (VideoView)findViewById(R.id.videoView);
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(videoView);
videoView.setMediaController(mediaController);
videoView.setVideoPath("/sdcard/"+file);
videoView.start();

日志:

03-28 20:52:30.723    8474-8474/mjksites.loopvideo D/MediaPlayer﹕ getMetadata
03-28 20:52:30.842    8474-8491/mjksites.loopvideo W/MediaPlayer﹕ info/warning (3, 0)
03-28 20:52:32.530    8474-8490/mjksites.loopvideo E/MediaPlayer﹕ error (1, -1004)
03-28 20:52:32.538    8474-8474/mjksites.loopvideo E/MediaPlayer﹕ Error (1,-1004)
03-28 20:52:32.538    8474-8474/mjksites.loopvideo D/VideoView﹕ Error: 1,-1004

【问题讨论】:

    标签: android video android-videoview mp4 avi


    【解决方案1】:

    Android 不支持 AVI 视频容器格式 - 您看到的消息是您尝试播放不受支持的视频格式时收到的正常消息。

    有关支持格式的最新列表,请参见此处:

    请注意,您说您正在尝试播放“avi/mp4”视频 - 这是不寻常的,因为 AVI 和 MP4 是替代视频容器,因此视频通常是一种格式或其他格式。

    更新答案

    好的 - 我在 cmets 中查看了下面发布的视频,它肯定会在 Android 4.4.2 设备上播放。

    以下代码有效(它播放了您的视频)并且可能对在您的应用中尝试有用(更新为使用您自己的视图 ID、视频路径等)。它用于片段,但如果这是您的用例,您可以为活动更改它:

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    
        rootView = inflater.inflate(R.layout.fragment_item_detail, container, false);
    
        //Create the video player and set the video path
        videoPlayerView = (VideoView) rootView.findViewById(R.id.video_area);
        if (videoPlayerView == null) {
            Log.d("ItemDetailFragment","onCreateView: videoPlayerView is null");
            return null;
        }
    
        //Set the video path and make sure the first frame is shown instead of a black screen
        videoPlayerView.setVideoPath(selectedVideoItem.videoPath); 
        videoPlayerView.seekTo(100);
    
        //Set the MediaController (the video control bar) to match the size of the VideoView - this trick 
        //from a StackOverflow answer makes sure it is sized correctly, calling setAnchroView after the
        //Video is actually loaded and hence knows it right sze.
        final Context mContext = this.getActivity();
        videoPlayerView.setOnPreparedListener(new OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                //Add a listener for the size change to correctly set the controls
                mp.setOnVideoSizeChangedListener(new OnVideoSizeChangedListener() { 
                    @Override
                    public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
                        //Add Media Controller and set its position on the screen.
                        mediaController = new MediaController(mContext);
                        videoPlayerView.setMediaController(mediaController);
                        mediaController.setAnchorView(videoPlayerView);
                    }
                });
            }
        });
    
        return rootView;
    }
    

    另外,请确保您的应用具有读取外部存储的权限,因为媒体播放器错误有时是由潜在问题引起的,而且报告的帮助不大。以下行应在您的清单中:

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    

    【讨论】:

    • 我指的是 AVI 或 MP4 视频,而不是两种格式的视频。
    • 好吧,AVI 会给出错误消息,但使用 mp4 'contaner' 的视频应该可以播放,只要它们与上面链接中的详细信息相匹配。要检查的一件事是视频的“配置文件” - 它是受支持的基线,还是其他东西,例如主线,未包含在链接列表中。如果您能够分享无法播放的 mp4 视频,那将会有所帮助。
    • 顺便说一句 - 您检查视频的路径是否正确?我不确定上面的那个实际上会到达我使用过的设备上的 SD 卡。您保存在 SD 卡上的视频的通常路径是:Environment.getExternalStorageDirectory() + videoFileName;
    • 这是视频:ebookfrenzy.com/android_book/movie.mp4,这很有趣,因为当我播放 url 时,它可以正常播放,但是当我下载电影并尝试播放时,却无法正常播放。不幸的是,我必须先下载视频。
    • 03-29 20:34:23.159 15295-15312/mjksites.loopvideo W/MediaPlayer: 信息/警告 (3, 0) 03-29 20:34:27.215 15295-15312/mjksites.loopvideo E/MediaPlayer: 错误 (1, -1004) 03-29 20:34:27.218 15295-15295/mjksites.loopvideo E/MediaPlayer: 错误 (1,-1004) 03-29 20:34:27.218 15295-15295/mjksites .loopvideo D/VideoView﹕错误:1,-1004 03-29 20:34:55.651 15295-15295/mjkites.loopvideo D/MediaPlayer﹕getMetadata 03-29 20:34:55.703 15295-15312/mjksites.loopvideo W/MediaPlayer ﹕ 信息/警告 (3, 0)
    猜你喜欢
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 2018-07-25
    相关资源
    最近更新 更多