无法播放视频

14 video android video-streaming

这是我的视频代码:

    Uri uri = Uri.parse(vidurl);
    MediaController mediaController = new MediaController(this);
    videoView.setMediaController(mediaController);
    videoView.requestFocus();
    videoView.setVideoURI(uri);

    videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            videoView.start();
        }
    });
Run Code Online (Sandbox Code Playgroud)

我尝试播放的视频存储在我的服务器中.他们使用自定义相机从同一个应用程序发送到那里.这是视频捕获参数:(以防万一有什么问题,我尝试了每个组合,VP8格式确实流,除了输出没有音频并且侧向旋转)

    mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
    mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

    if (currentCameraId == Camera.CameraInfo.CAMERA_FACING_BACK) {
        mMediaRecorder.setOrientationHint(90);
    } else {
        mMediaRecorder.setOrientationHint(270);
    }

    mMediaRecorder.setVideoSize(list.get(sizex).width, list.get(sizex).height);
    mMediaRecorder.setVideoEncodingBitRate(1500000);
    mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
    mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    mMediaRecorder.setVideoFrameRate(30);
    mMediaRecorder.setMaxDuration(15000);
    mMediaRecorder.setOutputFile(getVidFile().getAbsolutePath());
Run Code Online (Sandbox Code Playgroud)

我一直试图解决这个问题很长一段时间,但我现在已经没有想法了.我想在视频中播放这些视频.但不是那样,我必须等待10-20秒.之后,任何一个视频开始或它给我一个错误,视频无法播放.

附加信息:

项目最小sdk是18,但我可以改变它,如果这将有所帮助.

我的测试设备是Asus Zenfone 2(5.0)

我没有测试任何其他设备

视频存储在godaddy linux主机中.www.mydomain.com/videos/

视频编码是h264 Baseline Profile

正如推荐的那样,Moov原子位于顶部(在fytp之后(或类似的东西))

我尝试使用像exomedia这样的第三方视频播放器库

有些视频可以正常工作,例如:

http://www.html5videoplayer.net/videos/toystory.mp4

我检查了那些视频编码.它以h264 MAIN PROFILE编码(根据我的研究,大多数Android设备不支持主配置文件,建议使用基线配置文件)并且MOOV ATOM位于最后位置.但这个视频播放得很好... dafuq?

编辑:该toystory视频的属性工作:

1

2

这是一个从我的应用程序捕获的视频与上面给出的参数(注意moov原子在正确的位置,但这仍然不起作用)

3

4

小智 1

当您的视频从服务器流式传输到应用程序时,使用哪种网络协议?也许 VideoView 不支持您正在使用的网络协议。VideoView 仅支持有限的协议。根据android文档“支持的媒体格式”:

音视频播放支持以下网络协议:

--RTSP(RTP、SDP)

--HTTP/HTTPS渐进式流媒体 --HTTP/HTTPS直播流协议草案:

MPEG-2 TS media files only

Protocol version 3 (Android 4.0 and above)

Protocol version 2 (Android 3.x)

Not supported before Android 3.0
Run Code Online (Sandbox Code Playgroud)

--注意:Android 3.1之前不支持HTTPS。