我使用改装2将视频文件(从摄像机捕获)发送到我的PHP服务器,视频成功上传到服务器中的一个文件夹(我与FileZilla进行了检查,视频存在于文件夹中),我将视频分配到一个URL,我转到同一个URL(使用浏览器),它无法播放视频。
在Url中就是这样(例如:mydomain.cc/video/VID_2014.mp4)
所以我测试了一个随机视频,通过邮递员发送,视频的URL可以播放。
像这样:
我在Android中获取的视频文件路径
onActivityResult
捕获视频后,看起来像这样
/存储/模拟/0/DCIM/ABC/VID_20171008_183129。mp4
这是我发送视频文件的代码
private void uploadVideoToServer(String pathToVideoFile){
File videoFile = new File(pathToVideoFile);
RequestBody videoBody = RequestBody.create(MediaType.parse("video/*"), videoFile);
MultipartBody.Part vFile = MultipartBody.Part.createFormData("video", videoFile.getName(), videoBody);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(SERVER_PATH)
.addConverterFactory(GsonConverterFactory.create())
.build();
VideoInterface vInterface = retrofit.create(VideoInterface.class);
Call<ResultObject> serverCom = vInterface.uploadVideoToServer(vFile);
serverCom.enqueue(new Callback<ResultObject>() {
@Override
public void onResponse(Call<ResultObject> call, Response<ResultObject> response) {
ResultObject result = response.body();
if(!TextUtils.isEmpty(result.getSuccess())){
Toast.makeText(MainActivity.this, "Result " + result.getSuccess(), Toast.LENGTH_LONG).show();
Log.d(TAG, "Result " + result.getSuccess());
}
}
@Override
public void onFailure(Call<ResultObject> call, Throwable t) {
Log.d(TAG, "Error message " + t.getMessage());
}
});
}
public interface VideoInterface {
@Multipart
@POST("video.php")
Call<ResultObject> uploadVideoToServer(@Part MultipartBody.Part video);
}
所以我的问题是,为什么安卓摄像头拍摄的视频无法在Url中播放?这有关系吗?
因为我后来担心我需要使用Url显示回我的应用程序,如果有问题怎么解决?
所以,有人请给我一个完整的解决方案,这样做。。
编辑:
我使用ffmpeg检查了编解码器,结果如下。。