Java的新项目学成在线笔记-day14(四)

1.2.3.5 视频处理生成m3u8 
下边是完整的视频处理任务类代码,包括了生成m3u8及生成mp4的代码。

[AppleScript] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

@Component public class MediaProcessTask {     private static final Logger LOGGER = LoggerFactory.getLogger(MediaProcessTask.class);

      //ffmpeg绝对路径   

 @Value("${xc‐service‐manage‐media.ffmpeg‐path}") 

   String ffmpeg_path;     

 //上传文件根目录 

   @Value("${xc‐service‐manage‐media.upload‐location}")  

  String serverPath; 

     @Autowired 

   MediaFileRepository mediaFileRepository;  

      @RabbitListener(queues = "${xc‐service‐manage‐media.mq.queue‐media‐processtask}")     public void receiveMediaProcessTask(String msg) throws IOException {  

      Map msgMap = JSON.parseObject(msg, Map.class);   

     LOGGER.info("receive media process task msg :{} ",msgMap);  

      //解析消息     

   //媒资文件id     

   String mediaId = (String) msgMap.get("mediaId");  

      //获取媒资文件信息   

     Optional<MediaFile> optional = mediaFileRepository.findById(fileMd5);  

      if(!optional.isPresent()){         

   return ;   

     }      

  MediaFile mediaFile = optional.get();   

     //媒资文件类型     

   String fileType = mediaFile.getFileType()

       if(fileType == null || !fileType.equals("avi")){//目前只处理avi文件  

          mediaFile.setProcessStatus("303004");//处理状态为无需处理      

      mediaFileRepository.save(mediaFile);    

        return ;    

    }else{     

       mediaFile.setProcessStatus("303001");//处理状态为未处理  

          mediaFileRepository.save(mediaFile)

       }      

 //生成mp4     

   String video_path = serverPath + mediaFile.getFilePath()+mediaFile.getFileName();  

      String mp4_name = mediaFile.getFileId()+".mp4";  

      String mp4folder_path = serverPath + mediaFile.getFilePath();   

     Mp4VideoUtil videoUtil = new  Mp4VideoUtil(ffmpeg_path,video_path,mp4_name,mp4folder_path);   

     String result = videoUtil.generateMp4();

if(result == null || !result.equals("success")){         

   //操作失败写入处理日志    

        mediaFile.setProcessStatus("303003");//处理状态为处理失败    

        MediaFileProcess_m3u8 mediaFileProcess_m3u8 = new MediaFileProcess_m3u8();   

         mediaFileProcess_m3u8.setErrormsg(result);       

     mediaFile.setMediaFileProcess_m3u8(mediaFileProcess_m3u8);   

         mediaFileRepository.save(mediaFile);     

       return ;   

     }      

  //生成m3u8 

       video_path = serverPath + mediaFile.getFilePath()+mp4_name;//此地址为mp4的地址  

      String m3u8_name = mediaFile.getFileId()+".m3u8";      

  String m3u8folder_path = serverPath + mediaFile.getFilePath()+"hls/";  

      HlsVideoUtil hlsVideoUtil = new  HlsVideoUtil(ffmpeg_path,video_path,m3u8_name,m3u8folder_path)

       result = hlsVideoUtil.generateM3u8();   

     if(result == null || !result.equals("success")){     

       //操作失败写入处理日志     

       mediaFile.setProcessStatus("303003");//处理状态为处理失败   

         MediaFileProcess_m3u8 mediaFileProcess_m3u8 = new MediaFileProcess_m3u8();     

       mediaFileProcess_m3u8.setErrormsg(result);    

        mediaFile.setMediaFileProcess_m3u8(mediaFileProcess_m3u8);    

        mediaFileRepository.save(mediaFile);    

        return ;     

   }       

 //获取m3u8列表  

      List<String> ts_list = hlsVideoUtil.get_ts_list();  

      //更新处理状态为成功  

      mediaFile.setProcessStatus("303002");//处理状态为处理成功    

    MediaFileProcess_m3u8 mediaFileProcess_m3u8 = new MediaFileProcess_m3u8();  

      mediaFileProcess_m3u8.setTslist(ts_list);     

   mediaFile.setMediaFileProcess_m3u8(mediaFileProcess_m3u8)

       //m3u8文件url     

   mediaFile.setFileUrl(mediaFile.getFilePath()+"hls/"+m3u8_name);  

      mediaFileRepository.save(mediaFile);     

   } }


说明:
mp4转成m3u8如何判断转换成功?
第一、根据视频时长来判断,同mp4转换成功的判断方法。
第二、最后还要判断m3u8文件内容是否完整。 

猜你喜欢

转载自blog.csdn.net/czbkzmj/article/details/91802727