admin管理员组文章数量:1642499
文章目录
- 前言
- 一、处理思路?
- 二、更改步骤
- 1. 服务端MediaProcessTask.java
- (1)添加视频格式判断的代码
- (2)上传mp4文件考虑
- 2.前端手动上传media_list.vue
- 总结
前言
学成在线教程中老师讲只处理了avi格式的文件,后面我经过命令行的测试和工具类测试最后发现代码是可以处理常见的视频格式的例如:avi,mp4,mov,rmvb,flv。本人技术有限实现有问题敬请原谅
一、处理思路?
上传文件时对文件的格式是没有任何限制的,当我们发送mq消息处理视频的过程中会对视频的格式进行验证,所以需要更改代码只需要增加对格式的判断即可
二、更改步骤
1. 服务端MediaProcessTask.java
(1)添加视频格式判断的代码
//String[] fileTypeList={"avi","mp4","mov","rmvb","flv"}
if (!fileType.equals("avi")&&!fileType.equals("mp4")&&!fileType.equals("mov")&&!fileType.equals("rmvb")&&!fileType.equals("flv")){
//视频格式不是常见的avi等,设置状态为无需处理
mediaFile.setProcessStatus("303004");
this.mediaFileRepository.save(mediaFile);//更新下状态
log.warn("此上传的文件格式不是常见的视频格式avi,mp4,mov,rmvb,flv,无需处理,mediaId:"+mediaId);
return;
}else {
//格式正确需要处理设置处理状态为处理中
mediaFile.setProcessStatus("303001");
this.mediaFileRepository.save(mediaFile);//更新下状态
}
(2)上传mp4文件考虑
如果上传的是mp4文件就不需要执行转换mp4的操作
//在转换成mp4这个代码块中增加一个判断如果视频格式为mp4不执行
//视频格式不是mp4的才执行转换为mp4
if (!fileType.equals("mp4")){
//需要转换的视频文件的路径
String video_path=this.serverPath+mediaFile.getFilePath()+mediaFile.getFileName();
String mp4_name = mediaFile.getFileId()+".mp4";
String mp4folder_path = this.serverPath+mediaFile.getFilePath();//与avi文件还在同一目录
//创建工具类对象调用工具类
Mp4VideoUtil mp4VideoUtil=new Mp4VideoUtil(this.ffmpeg_path,video_path,mp4_name,mp4folder_path);
//调用方法进行处理
String result = mp4VideoUtil.generateMp4();
//判断是否成功
if (result==null|| !result.equals("success")){
//记录处理失败的状态
mediaFile.setProcessStatus("303003");
//定义失败的原因
MediaFileProcess_m3u8 mediaFileProcess_m3u8=new MediaFileProcess_m3u8();
mediaFileProcess_m3u8.setErrormsg(result);
//更新到media_file集合中
mediaFile.setMediaFileProcess_m3u8(mediaFileProcess_m3u8);
this.mediaFileRepository.save(mediaFile);//更新下状态
log.error(mediaFile.getFileOriginalName()+"原视频文件转mp4视频文件失败,mediaId:"+mediaId);
return;
}
}
2.前端手动上传media_list.vue
//处理失败的文件
// String[] fileTypeList={"avi","mp4","mov","rmvb","flv"}
process (mediaId,processStatus,fileStatus,fileType) {
if (fileStatus=="301002"&&(fileType=="avi"||fileType=="mp4"||fileType=="mov"||fileType=="rmvb"||fileType=="flv")){//基本要求一个上传成功,一个视频格式为avi或常见格式
//一种情况发送消息了处理失败,另一种情况消息发送失败根本没有处理(这种情况,后台设置了处理状态为失败)两种情况都可以根据状态进行重新处理
if (processStatus=="303003") {
//表示文件上传成功发送消息处理失败的媒资文件,需要重新发送MQ消息进行视频的处理
mediaApi.media_process(mediaId).then((res)=>{
if(res.success){
this.$message.success('开始处理,请稍后查看处理结果或处理状态');
}else{
this.$message.error('操作失败,请刷新页面重试');
}
})
}else {
this.$message.warning('视频处理状态进行中或者无需处理,请勿重复处理');
}
}else{
this.$message.error('系统暂只支持常见视频格式处理。例如avi,mp4,mov,rmvb,flv');
}
},
总结
手动发送消息处理视频更详细的讲解参考
https://blog.csdn/weixin_45305953/article/details/108729836
本人技术有限如有任何问题,或者更好的解决方法直接评论私聊我即可
版权声明:本文标题:学成在线-处理常见视频格式avi,mp4,mov,rmvb,flv 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1729338781a1197304.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论