这是我的视频代码:
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());
我一直试图解决这个问题很长一段时间但我现在已经没有想法了。我想在视频中播放这些视频。但不是那样,我必须等待10-20秒。之后,视频开始播放或者出现视频无法播放的错误。
其他信息:
项目最小sdk为18,但如果有帮助我可以更改它。
我的测试设备是Asus Zenfone 2(5.0)
我没有使用任何其他设备进行测试
视频存储在godaddy linux主机中。 www.mydomain.com/videos /
视频编码是h264 Baseline Profile
Moov原子位于顶部(在fytp之后(或类似的东西)),正如推荐的那样
我尝试使用像exomedia
这样的第三方视频播放器库有些视频可以播放,例如:
我查看了视频编码。它以h264 MAIN PROFILE编码(根据我的研究,主要配置文件不支持大多数Android设备,建议使用基线配置文件)并且MOOV ATOM位于最后位置。但是这个视频播放得很好...... dafuq?
编辑:该玩具视频的属性:
以下是我的应用程序从上面给出的参数中捕获的视频(请注意moov原子位于正确的位置,但这仍然不起作用)
答案 0 :(得分: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
- 注意:Android 3.1之前不支持HTTPS。