这是我的视频播放代码:
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();
}
});
我尝试播放的视频存储在我的服务器上。它们是使用自定义相机从同一应用程序发送到那里的。以下是视频捕获参数:(以防出现问题,我尝试了每种组合,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());
我已经尝试了很久但现在没有任何想法。我想在videoview中流式传输这些视频。但是相反,我必须等待10-20秒钟。之后,要么视频开始播放,要么会出现无法播放视频的错误。
附加信息:
项目最低sdk为18,但如果那有帮助,我可以更改它。
我的测试设备是Asus Zenfone 2(5.0)
我没有使用其他设备进行测试
视频存储在godaddy linux主机上。 www.mydomain.com/videos/
视频编码为h264基线配置文件
Moov原子位于顶部(在fytp(或类似内容)之后),正如推荐的那样
我尝试过使用第三方视频播放库,例如exomedia
某些视频确实有效,例如:
我检查了该视频的编码。它使用h264 MAIN PROFILE进行编码(从我的研究中得知,大多数Android设备不支持主配置文件,建议使用基线配置文件),而MOOV原子位于最后位置。但是这个视频播放正常...怎么回事?
编辑:那个可用的toystory视频的属性:
这是使用上述参数从我的应用程序捕获的视频(请注意,moov原子在正确位置,但仍然无法播放)