当前位置:网站首页 > Java基础 > 正文

java分割教程视频



/

 * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> filePath 要处理的文件路径 * </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)"> 分割后的文件路径 * </span><span style="color: rgba(128, 128, 128, 1)">@throws</span><span style="color: rgba(0, 128, 0, 1)"> Exception 文件 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)"> List</span>&lt;String&gt; cutVideo(String filePath) <span style="color: rgba(0, 0, 255, 1)">throws</span><span style="color: rgba(0, 0, 0, 1)"> Exception { File file </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> File(filePath); </span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 0, 1)">file.exists()) { </span><span style="color: rgba(0, 0, 255, 1)">throw</span> <span style="color: rgba(0, 0, 255, 1)">new</span> FileNotFoundException(filePath + "文件不存在"<span style="color: rgba(0, 0, 0, 1)">); } </span><span style="color: rgba(0, 0, 255, 1)">if</span> (!filePath.endsWith(".mp4"<span style="color: rgba(0, 0, 0, 1)">)) { </span><span style="color: rgba(0, 0, 255, 1)">throw</span> <span style="color: rgba(0, 0, 255, 1)">new</span> Exception("文件格式错误"<span style="color: rgba(0, 0, 0, 1)">); } </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">从ffmpeg获得的时间长度00:00:00格式</span> String videoTimeString =<span style="color: rgba(0, 0, 0, 1)"> getVideoTime(file); log.info(</span>"从ffmpeg获得的时间长度00:00:00格式:{}"<span style="color: rgba(0, 0, 0, 1)">,videoTimeString); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">将时长转换为秒数</span> <span style="color: rgba(0, 0, 255, 1)">int</span> videoSecond =<span style="color: rgba(0, 0, 0, 1)"> parseTimeToSecond(videoTimeString); log.info(</span>"将时长转换为秒数:{}"<span style="color: rgba(0, 0, 0, 1)">,videoSecond); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">视频文件的大小</span> <span style="color: rgba(0, 0, 255, 1)">long</span> fileLength =<span style="color: rgba(0, 0, 0, 1)"> getVideoFileLength(file); log.info(</span>"视频文件的大小:{}"<span style="color: rgba(0, 0, 0, 1)">,fileLength); List</span>&lt;String&gt; cutedVideoPaths = <span style="color: rgba(0, 0, 255, 1)">new</span> ArrayList&lt;String&gt;<span style="color: rgba(0, 0, 0, 1)">(); </span><span style="color: rgba(0, 0, 255, 1)">if</span> (fileLength &lt;=<span style="color: rgba(0, 0, 0, 1)"> blockSize) { log.info(</span>"如果视频文件大小不大于预设值,则直接返回原视频文件"<span style="color: rgba(0, 0, 0, 1)">); cutedVideoPaths.add(filePath); } </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> { log.info(</span>"超过预设大小,需要切割"<span style="color: rgba(0, 0, 0, 1)">); </span><span style="color: rgba(0, 0, 255, 1)">int</span> partNum = (<span style="color: rgba(0, 0, 255, 1)">int</span>) (fileLength /<span style="color: rgba(0, 0, 0, 1)"> blockSize); log.info(</span>"文件大小除以分块大小的商:{}"<span style="color: rgba(0, 0, 0, 1)">,partNum); </span><span style="color: rgba(0, 0, 255, 1)">long</span> remainSize = fileLength %<span style="color: rgba(0, 0, 0, 1)"> blockSize; log.info(</span>"余数:{}"<span style="color: rgba(0, 0, 0, 1)">,remainSize); </span><span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> cutNum; </span><span style="color: rgba(0, 0, 255, 1)">if</span> (remainSize &gt; 0<span style="color: rgba(0, 0, 0, 1)">) { cutNum </span>= partNum + 1<span style="color: rgba(0, 0, 0, 1)">; } </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> { cutNum </span>=<span style="color: rgba(0, 0, 0, 1)"> partNum; } log.info(</span>"cutNum:{}"<span style="color: rgba(0, 0, 0, 1)">,cutNum); </span><span style="color: rgba(0, 0, 255, 1)">int</span> eachPartTime = videoSecond /<span style="color: rgba(0, 0, 0, 1)"> cutNum; log.info(</span>"eachPartTime:{}"<span style="color: rgba(0, 0, 0, 1)">,eachPartTime); String fileFolder </span>=<span style="color: rgba(0, 0, 0, 1)"> file.getParentFile().getAbsolutePath(); log.info(</span>"fileFolder:{}"<span style="color: rgba(0, 0, 0, 1)">,fileFolder); String fileName[] </span>= file.getName().split("\."<span style="color: rgba(0, 0, 0, 1)">); log.info(</span>"fileName[]:{}"<span style="color: rgba(0, 0, 0, 1)">,fileName); </span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> i = 0; i &lt; cutNum; i++<span style="color: rgba(0, 0, 0, 1)">) { List</span>&lt;String&gt; commands =<span style="color: rgba(0, 0, 0, 1)"> Lists.newArrayList(); commands.add(</span>"ffmpeg"<span style="color: rgba(0, 0, 0, 1)">); commands.add(</span>"-ss"<span style="color: rgba(0, 0, 0, 1)">); commands.add(parseTimeToString(eachPartTime </span>*<span style="color: rgba(0, 0, 0, 1)"> i)); </span><span style="color: rgba(0, 0, 255, 1)">if</span> (i != cutNum - 1<span style="color: rgba(0, 0, 0, 1)">) { commands.add(</span>"-t"<span style="color: rgba(0, 0, 0, 1)">); commands.add(parseTimeToString(eachPartTime)); } commands.add(</span>"-i"<span style="color: rgba(0, 0, 0, 1)">); commands.add(filePath); commands.add(</span>"-codec"<span style="color: rgba(0, 0, 0, 1)">); commands.add(</span>"copy"<span style="color: rgba(0, 0, 0, 1)">); commands.add(fileFolder </span>+ File.separator + fileName[0] + "_part" + i + "." + fileName[1<span style="color: rgba(0, 0, 0, 1)">]); cutedVideoPaths.add(fileFolder </span>+ File.separator + fileName[0] + "_part" + i + "." + fileName[1<span style="color: rgba(0, 0, 0, 1)">]); newRunCommand(commands); } } </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> cutedVideoPaths; }</span></pre> 

  • 上一篇: java心法教程
  • 下一篇: java编程做游戏教程
  • 版权声明


    相关文章:

  • java心法教程2025-12-15 11:02:01
  • java教程粤语2025-12-15 11:02:01
  • java mybatis教程 酷2025-12-15 11:02:01
  • 后端开发java教程2025-12-15 11:02:01
  • java进阶教程整理2025-12-15 11:02:01
  • java编程做游戏教程2025-12-15 11:02:01
  • java语音教程2025-12-15 11:02:01
  • java 实用教程答案2025-12-15 11:02:01
  • java虚拟机教程视频2025-12-15 11:02:01
  • java11教程pdf2025-12-15 11:02:01