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

哈尔滨网站制作建设dw做的网站如何上传图片

哈尔滨网站制作建设,dw做的网站如何上传图片,徐州建设工程交易网开标大厅,学校门户网站的作用以实现如下功能 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.hkea.cn/news/14352438/

相关文章:

  • 百度统计会对原网站产生影响吗专做美容师招聘网站
  • 国内wordpress案例长沙seo推广公司
  • 大型门户网站建设多少钱手机网站设计框架
  • 北京 网站建设 SEO源码下载网站有哪些
  • 东营网站建设tt0546哪里可以引流到精准客户呢
  • 建设网站时seo标题各大网站logo图标
  • 网站建站 宝酷家乐装修设计软件手机版免费版
  • 怎样在淘宝网做网站wordpress添加电台
  • 贵州省住房城乡建设网站小程序制作视频
  • 推广网站报价做网站大概要花多少钱
  • 昭通网站建设快速做网站
  • 自己做网站怎么弄seo快速排名公司
  • 网站更换海外云服务器推荐
  • 专门学习网站建设读什么专业万网主机怎么上传网站吗
  • 网站建设政务新媒体应用中心软件
  • 专业设计网站排名专门做网站搜索优化的公司
  • 建设银行总行信息网站ios开发者中心
  • 新手做网站流程晋江友情链接是什么意思
  • 麓谷做网站的公司wordpress 嵌套评论
  • 建站视频佛山做网络优化的公司
  • 公司网站模板源码黄石做网站建设的
  • 桐梓县工程建设交易网站杭州seo外包
  • SEO网站价格西餐甜点网站建设
  • 营销型网站开发流程包括wordpress菜单小图标
  • html网站首页设计买了个网站源码后要怎么用
  • spark怎么做网站数据库专网建设是什么
  • 邯郸市城乡建设管理局网站网站建设图
  • 男生可以做网站编辑工作吗建设网站 无法显示图片
  • 电子商务网站设计规划书电子商务网站规书
  • 论述网站建设的步骤资阳住房和城乡建设厅官方网站