飞道的博客

震惊,java仅用30行代码就实现了视频转音频的批量转换

202人阅读  评论(0)

本功能实现需要用到第三方jar包 jave,JAVE 是java调用FFmpeg的封装工具。

spring boot项目pom文件中添加以下依赖


  
  1. <!-- https://mvnrepository.com/artifact/ws.schild/jave-core -->
  2. <dependency>
  3. <groupId>ws.schild </groupId>
  4. <artifactId>jave-core </artifactId>
  5. <version>3.1.1 </version>
  6. </dependency>
  7. <!-- 以下依赖根据系统二选一 -->
  8. <!-- win系统平台的依赖 -->
  9. <dependency>
  10. <groupId>ws.schild </groupId>
  11. <artifactId>jave-nativebin-win64 </artifactId>
  12. <version>3.1.1 </version>
  13. </dependency>
  14. <!-- linux系统平台的依赖 -->
  15. <dependency>
  16. <groupId>ws.schild </groupId>
  17. <artifactId>jave-nativebin-linux64 </artifactId>
  18. <version>3.1.1 </version>
  19. </dependency>

Java单类实现代码,复制到Spring boot项目中,用idea编辑器 主方法运行。


  
  1. import ws.schild.jave.Encoder;
  2. import ws.schild.jave.EncoderException;
  3. import ws.schild.jave.MultimediaObject;
  4. import ws.schild.jave.encode.AudioAttributes;
  5. import ws.schild.jave.encode.EncodingAttributes;
  6. import java.io.File;
  7. import java.util.Arrays;
  8. public class VideoToAudio {
  9. //要输出的音频格式
  10. private static String outputFormat= "mp3";
  11. /**
  12. * 获得转化后的文件名
  13. * @param sourceFilePath : 源视频文件路径
  14. * @return
  15. */
  16. public static String getNewFileName( String sourceFilePath) {
  17. File source = new File(sourceFilePath);
  18. String fileName=source.getName().substring( 0, source.getName().lastIndexOf( "."));
  19. return fileName+ "."+outputFormat;
  20. }
  21. /**
  22. * 转化音频格式
  23. * @param sourceFilePath : 源视频文件路径
  24. * @param targetFilePath : 目标音乐文件路径
  25. * @return
  26. */
  27. public static void transform( String sourceFilePath, String targetFilePath) {
  28. File source = new File(sourceFilePath);
  29. File target = new File(targetFilePath);
  30. // 设置音频属性
  31. AudioAttributes audio = new AudioAttributes();
  32. audio.setCodec( null);
  33. // 设置转码属性
  34. EncodingAttributes attrs = new EncodingAttributes();
  35. attrs.setOutputFormat(outputFormat);
  36. attrs.setAudioAttributes(audio);
  37. try {
  38. // 音频转换格式类
  39. Encoder encoder = new Encoder();
  40. MultimediaObject mediaObject= new MultimediaObject(source);
  41. encoder.encode(mediaObject, target, attrs);
  42. System.out.println( "转换已完成...");
  43. } catch (EncoderException e) {
  44. e.printStackTrace();
  45. }
  46. }
  47. /**
  48. * 批量转化音频格式
  49. * @param sourceFolderPath : 源视频文件夹路径
  50. * @param targetFolderPath : 目标音乐文件夹路径
  51. * @return
  52. */
  53. public static void batchTransform( String sourceFolderPath, String targetFolderPath) {
  54. File sourceFolder = new File(sourceFolderPath);
  55. if(sourceFolder. list().length!= 0){
  56. Arrays.asList(sourceFolder. list()). forEach(e->{
  57. transform(sourceFolderPath+ "\\"+e, targetFolderPath+ "\\"+getNewFileName(e));
  58. });
  59. }
  60. }
  61. public static void main( String[] args) {
  62. batchTransform( "C:\\Users\\tarzan\\Desktop\\video", "C:\\Users\\tarzan\\Desktop\\audio");
  63. }
  64. }

运行结果截图

测试结果

视频格式为mp4,大小约6.65MB,转为音频格式MP3,大小约1.60MB,转化时间1s左右。


转载:https://blog.csdn.net/weixin_40986713/article/details/115752334
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场