当前位置: 首页 > news >正文

创造网站软件重庆专业做网站公司

创造网站软件,重庆专业做网站公司,中国建设在线平台官网,wordpress表白墙模板以实现如下功能 1、支持音频文件转mp3#xff1b;2、支持视频文件转mp4#xff1b;3、支持视频提取音频#xff1b;4、支持视频中提取缩略图#xff1b;5、支持按时长拆分音频文件#xff1b; 1、工具类 由于部分原因#xff0c;没有将FfmpegUtil中的静态的命令行与Ty…以实现如下功能 1、支持音频文件转mp32、支持视频文件转mp43、支持视频提取音频4、支持视频中提取缩略图5、支持按时长拆分音频文件 1、工具类 由于部分原因没有将FfmpegUtil中的静态的命令行与Type枚举类结合使用。 import lombok.extern.slf4j.Slf4j;import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import java.util.concurrent.TimeUnit;/***** author xuancg* 要求系统内置ffmpeg工具环境* date 2024/9/23*/ Slf4j public class FfmpegUtil {private static final String CONVERT_MP3 ffmpeg -i %s -y %s;private static final String CONVERT_MP4 ffmpeg -i %s -c:v libx264 -c:a copy -y %s;private static final String EXTRACT_MP3 ffmpeg -i %s -q:a 0 -map a -y %s;private static final String EXTRACT_ICON ffmpeg -i %s -ss 0.5 -vframes 1 -r 1 -ac 2 -ab 128k -y -f mjpeg %s;private static final String SPLIT_AUDIO_BY_SIZE ffmpeg -i %s -f segment -segment_time %d -c copy -y %s;private static final SetString MP3_TYPE new HashSet(Arrays.asList(mp3, wav, aac, flac));private static final SetString MP4_TYPE new HashSet(Arrays.asList(mp4, avi, flv, mpeg, wmv));/**** 音视频文件格式化如果存在目标文件会强制覆盖* 1、支持音频文件转mp3* 2、支持视频文件转mp4* 3、支持视频提取音频* 4、支持视频中提取缩略图* 5、支持按时长拆分音频文件*/public static boolean convertMedia(MediaConvertBo convertBo) {File src convertBo.getSrc();File dest convertBo.getDest();if (null src || !src.isFile()) {log.error(原始文件不存在);return false;}if (null ! dest dest.isFile()) {log.info(目标文件已存在);}long start System.currentTimeMillis();Process process null;BufferedReader reader null;try {String cmd createCmd(convertBo);if(null cmd){return false;}log.info(ffmpeg执行命令 cmd);// 执行命令process Runtime.getRuntime().exec(cmd);// 获取命令输出结果reader new BufferedReader(new InputStreamReader(process.getErrorStream()));String line;while ((line reader.readLine()) ! null) {log.debug(line);}// 明确自己的命令需要执行多长时间否则可以一直等待int timeout convertBo.getTimeout();if (timeout 0) {process.waitFor();} else {process.waitFor(timeout, TimeUnit.SECONDS);}return dest.isFile() dest.length() 10;} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {log.error(剪裁视频超时source src.getAbsolutePath());} finally {if (null ! process) {process.destroy();}if (null ! reader) {try {reader.close();} catch (IOException e) {log.error(关闭流失败 e.getMessage());}}log.info(耗时ms (System.currentTimeMillis() - start));}return false;}public static boolean isMp4File(File file){String name file.getName();String suffix name.substring(name.lastIndexOf(.) 1);return MP4_TYPE.contains(suffix);}public static boolean isMp3File(File file){String name file.getName();String suffix name.substring(name.lastIndexOf(.) 1);return MP3_TYPE.contains(suffix);}private static final String createCmd(MediaConvertBo bo) {File src bo.getSrc();String srcPath src.getAbsolutePath().replace(\\, /);String destPath bo.getDest().getAbsolutePath().replace(\\, /);;if (bo.isConvertMp3()) {if(!isMp3File(src)){log.error(错误的mp3格式);return null;}return String.format(CONVERT_MP3, srcPath, destPath);} else if (bo.isConvertMp4()) {if(!isMp4File(src)){log.error(错误的mp4格式);return null;}return String.format(CONVERT_MP4, srcPath, destPath);} else if(bo.getType() MediaConvertBo.Type.EXTRACT_MP3){if(!isMp4File(src)){log.error(错误的mp4格式);return null;}return String.format(EXTRACT_MP3, srcPath, destPath);} else if(bo.getType() MediaConvertBo.Type.EXTRACT_ICON) {if(!isMp4File(src)){log.error(错误的mp4格式);return null;}return String.format(EXTRACT_ICON, srcPath , destPath);} else if(bo.getType() MediaConvertBo.Type.SPLIT_AUDIO_BY_SIZE){bo.getDest().mkdirs();String name src.getName();String suffix name.substring(name.lastIndexOf(.) 1);// 保持输入输出一致性return String.format(SPLIT_AUDIO_BY_SIZE, srcPath, bo.getSplitSize(), destPath /output_%03d. suffix);}log.error(错误的type);return null;}}2、入参对象 import lombok.Data;import java.io.File;/***** author xuancg* date 2024/9/23*/ Data public class MediaConvertBo {private File src;private File dest;/**0表示持续等待单位秒*/private int timeout 0;/** 拆分时长单位秒*/private int splitSize 60;/**处理类型必传*/private Type type;public boolean isConvertMp3(){return null ! type type Type.CONVERT_MP3;}public boolean isConvertMp4(){return null ! type type Type.CONVERT_MP4;}public enum Type {/**将视频转码成mp4*/CONVERT_MP4,/**将音频转码成mp3*/CONVERT_MP3,/**从视频中提取音频*/EXTRACT_MP3,/**从视频中提取缩略图*/EXTRACT_ICON,/**按时长拆分音频文件*/SPLIT_AUDIO_BY_SIZE,;}}3、junit测试 import org.junit.Test;import java.io.File;/***** author xuancg* date 2024/9/23*/ public class ConvertTest {/*** 1分10秒的wav2M大小转成mp3耗时858ms,200kb大小*/Testpublic void convertmp3(){File src new File(C:\\Users\\Desktop\\音视频素材\\example.wav);File dest new File(C:\\Users\\Desktop\\音视频素材\\example.mp3);MediaConvertBo bo new MediaConvertBo();bo.setType(MediaConvertBo.Type.CONVERT_MP3);bo.setSrc(src);bo.setDest(dest);System.out.println(FfmpegUtil.convertMedia(bo));}/*** 4分13秒视频50M大小提取音频耗时7秒,4M大小*/Testpublic void extractMp3(){File src new File(C:\\User\\Desktop\\音视频素材\\202002041032546186.mp4);File dest new File(C:\\User\\Desktop\\音视频素材\\202002041032546186.mp3);MediaConvertBo bo new MediaConvertBo();bo.setType(MediaConvertBo.Type.EXTRACT_MP3);bo.setSrc(src);bo.setDest(dest);System.out.println(FfmpegUtil.convertMedia(bo));}/*** 耗时500ms,保持原始视频尺寸*/Testpublic void extractIcon(){File src new File(C:\\Users\\Desktop\\音视频素材\\202002041032546186.mp4);File dest new File(C:\\Users\\Desktop\\音视频素材\\202002041032546186.jpg);MediaConvertBo bo new MediaConvertBo();bo.setType(MediaConvertBo.Type.EXTRACT_ICON);bo.setSrc(src);bo.setDest(dest);System.out.println(FfmpegUtil.convertMedia(bo));}/*** 1分钟2秒*/Testpublic void splitAudio(){File src new File(C:\\Users\\Desktop\\音视频素材\\example.wav);File dest new File(C:\\Users\\Desktop\\音视频素材\\example);MediaConvertBo bo new MediaConvertBo();bo.setType(MediaConvertBo.Type.SPLIT_AUDIO_BY_SIZE);bo.setSrc(src);bo.setDest(dest);bo.setSplitSize(60);System.out.println(FfmpegUtil.convertMedia(bo));}}5、maven依赖 dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.13.2/version !-- 版本号可替换为最新版本 --scopetest/scope /dependencydependencygroupIdorg.bytedeco/groupIdartifactIdjavacv/artifactIdversion1.5.8/version /dependency!-- 此版本中主要兼容linux和windows系统如需兼容其他系统平台请引入对应依赖即可 -- dependencygroupIdorg.bytedeco/groupIdartifactIdopencv/artifactIdversion4.6.0-1.5.8/versionclassifierlinux-x86_64/classifier /dependency dependencygroupIdorg.bytedeco/groupIdartifactIdopencv/artifactIdversion4.6.0-1.5.8/versionclassifierwindows-x86_64/classifier /dependency dependencygroupIdorg.bytedeco/groupIdartifactIdopenblas/artifactIdversion0.3.21-1.5.8/versionclassifierlinux-x86_64/classifier /dependency dependencygroupIdorg.bytedeco/groupIdartifactIdopenblas/artifactIdversion0.3.21-1.5.8/versionclassifierwindows-x86_64/classifier /dependency dependencygroupIdorg.bytedeco/groupIdartifactIdffmpeg/artifactIdversion5.1.2-1.5.8/versionclassifierlinux-x86_64/classifier /dependency dependencygroupIdorg.bytedeco/groupIdartifactIdffmpeg/artifactIdversion5.1.2-1.5.8/versionclassifierwindows-x86_64/classifier /dependency
http://www.w-s-a.com/news/796283/

相关文章:

  • 国外买域名的网站廊坊网站制作网页
  • 抚顺市城市建设档案馆网站制作网页时经常用的一种动态位图格式是
  • 公司网站站群是什么运营网站
  • 昆明网站建设大全安徽教育机构网站建设
  • 广州网站排名怎么优化中华衣柜网
  • 怎样围绕网站专题发展来做ppt城乡住建局官网
  • 安卓手机app制作关键词优化公司
  • 江苏固茗建设有限公司网站深圳网站建设深圳网
  • 高性能网站建设指南北京城乡建设官方网站
  • 企业网站找谁做做淘宝相关网站
  • 商业网站网站建设wordpress关闭前端公共库
  • 打开山东城市建设职业学院网站下载了wordpress后
  • 四川网站建设设计城乡建设网站证件查询系统
  • 企业邮箱哪里买栾城seo整站排名
  • 长沙网站建设zh68网页制作技术实训报告
  • 电商网站的功能手机广告设计与制作软件
  • 做网站前端需要编程基础吗杭州市住房和城乡建设局
  • 网站开发一般学多久网站建设投标方案
  • 北京网站建设报价表制作短视频的软件有哪些
  • 长沙企业网站开发西安建设公司网站
  • 做图的兼职网站网站开发用了哪些知识要点
  • php网站怎么做静态化微慕wordpress插件
  • 电商营业执照wordpress利于seo
  • 那些网站主做玄幻小说营销策略都有哪些方面
  • 同一源代码再建设一个网站建立网站免费
  • 网站更换服务器影响做seo必须有网站吗
  • 免费网页模板网站php微信微网站怎么做
  • 网站的优点和缺点腾讯企点是什么软件
  • 谷歌英文网站推广网页设计好看的网站
  • 衡水网站建设集团各大网站注册