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

番禺区移动端网站制作北京网站搭建多少钱

番禺区移动端网站制作,北京网站搭建多少钱,专科计算机哪个专业最吃香,怎么查看网站哪个公司做的实现功能 点击【选择文件】按钮可以选择视频#xff0c;当点击【开始处理】按钮之后#xff0c;会先将视频上传到服务器#xff0c;然后开始进行视频倒叙播放的处理#xff0c;当视频处理完毕之后会将输出的文件路径返回#xff0c;同时在页面中将处理好的视频展示出来。…实现功能 点击【选择文件】按钮可以选择视频当点击【开始处理】按钮之后会先将视频上传到服务器然后开始进行视频倒叙播放的处理当视频处理完毕之后会将输出的文件路径返回同时在页面中将处理好的视频展示出来。 效果展示 转换成功效果展示 上传成功 处理后 代码实现 说明 前端代码是使用vue编写的。 后端接口的代码是使用nodejs进行编写的。 前端代码 templatediv idapp!-- 显示上传的视频 --divh2将要处理的视频/h2videov-forvideo in uploadedVideos:keyvideo.src:srcvideo.srccontrolsstylewidth: 200px/video/div!-- 上传视频按钮 --input typefile changeuploadVideo acceptvideo/* /!-- 显示处理后的视频 --divh2已处理后的视频/h2videov-forvideo in processedVideos:keyvideo.src:srcvideo.srccontrolsstylewidth: 200px/video/divbutton clickprocessVideos开始处理/button/div /templatescript setup import axios from axios; import { ref } from vue;const uploadedVideos ref([]); const processedVideos ref([]); let videoIndex 0;const uploadVideo async (e) {const files e.target.files;for (let i 0; i files.length; i) {const file files[i];const videoSrc URL.createObjectURL(file);uploadedVideos.value.push({ id: videoIndex, src: videoSrc, file });} };const processVideos async () {const formData new FormData();for (const video of uploadedVideos.value) {formData.append(video, video.file); // 使用实际的文件对象}try {const response await axios.post(http://localhost:3000/user/single/process,formData,{headers: {Content-Type: multipart/form-data,},});const processedVideoSrc response.data.path;processedVideos.value.push({id: videoIndex,src: http://localhost:3000/ processedVideoSrc,});} catch (error) {console.error(Error processing video:, error);} }; /script 补充说明  acceptvideo/*指定了只接受视频文件类型这将过滤掉非视频文件使得用户在选择文件时只能看到并选择视频文件。 video/*是一个通配符表示所有已知的视频文件类型。如果你只想接受特定的视频格式例如MP4和WebM你可以指定他们如下所示 accept.mp4, .webm 或者如果你想要更精确地控制可以使用MIME类型 acceptvideo/mp4, video/webm 后端代码 routers 》users.js var express require(express); var router express.Router(); const multer require(multer); const ffmpeg require(fluent-ffmpeg); const path require(path); const upload multer({dest: public/uploads/,storage: multer.diskStorage({destination: function (req, file, cb) {cb(null, public/uploads); // 文件保存的目录},filename: function (req, file, cb) {// 提取原始文件的扩展名const ext path.extname(file.originalname).toLowerCase(); // 获取文件扩展名并转换为小写// 生成唯一文件名并加上扩展名const uniqueSuffix Date.now() - Math.round(Math.random() * 1E9);const fileName uniqueSuffix ext; // 新文件名cb(null, fileName); // 文件名}}) }); const fs require(fs);// 处理单个视频文件 router.post(/single/process, upload.single(video), (req, res) {console.log(req.file)const videoPath req.file.path;// 使用filename进行拼接是为了防止视频被覆盖const outputPath public/processed/reversed_${req.file.filename};ffmpeg().input(videoPath).outputOptions([-vf reverse// 反转视频帧顺序]).output(outputPath).on(end, () {res.json({ message: Video processed successfully., path: outputPath.replace(public, ) });}).on(error, (err) {console.log(err)res.status(500).json({ error: An error occurred while processing the video. });}).run(); });module.exports router;multer配置项说明 配置选项 dest指定了文件的临时存储路径如果提供了storage选择则dest可能不会被使用。storage使用multer.diskStorage() 来定义文件如何存储在磁盘上。destination函数 这个函数用于指定文件存储的目录req请求对象file包含了关于上传文件的信息cb回调函数用于通知multer存储路径filename函数 这个函数用于生成存储在磁盘上的文件名req请求对象file含有文件的相关信息cb回调函数用于通知穆拉特人文件名在这里我们生成了一个唯一的文件名该文件名包含当前时间戳和一个随机数以避免文件名冲突并保留了原始文件的扩展名。 ffmpeg()说明 当你调用 ffmpeg() 时实际上创建了一个 ffmpeg 实例。这个实例可以用来设置输入文件、输出文件以及一系列的处理选项。 ffmpeg() 返回的是一个 Command 对象这个对象包含了用于设置和执行 ffmpeg 命令的方法。这些方法可以链接起来形成一个流式操作链。 .input()指定输入文件路径.output()指定输出文件路径.on()、.once()监听事件比如完成、错误等.run()执行ffmpeg命令.cancel()取消正在运行的命令.getCommand()获取将要执行的完整命令字符串 典型的ffmpeg命令执行流程 初始化创建 ffmpeg 示例并指定输入文件设置输出文件使用 .output() 方法来设置文件路径添加命令行参数使用 .addOption() 或者链式调用 .option() 方法来添加额外的 ffmpeg参数监听事件监听 end 或 error 事件来处理命令执行的结果执行命令调用 .run() 方法来开始执行命令 routers 》index.js var express require(express); var router express.Router();router.use(/user, require(./users));module.exports router;app.js var createError require(http-errors); var express require(express); var path require(path); var cookieParser require(cookie-parser); var logger require(morgan);var indexRouter require(./routes/index);var app express();// view engine setup app.set(views, path.join(__dirname, views)); app.set(view engine, jade);app.use(logger(dev)); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, public)));// 使用cors解决跨域问题 app.use(require(cors)());app.use(/, indexRouter);// catch 404 and forward to error handler app.use(function (req, res, next) {next(createError(404)); });// error handler app.use(function (err, req, res, next) {// set locals, only providing error in developmentres.locals.message err.message;res.locals.error req.app.get(env) development ? err : {};// render the error pageres.status(err.status || 500);res.render(error); });module.exports app;
http://www.dnsts.com.cn/news/270338.html

相关文章:

  • 网站设计服务合同手机在线logo生成器
  • 邢台集团网站建设价格哪里可以做外贸网站
  • 有哪些可以做问卷赚钱的网站网站推广的方法有sem推广
  • 企业网站开发知名品牌有哪些网站建设的重要性意义与价值
  • wordpress仿站函数九江市网站建设
  • 360搜索怎么做网站自然优化旅游网站建设方案
  • 网站报价模板婚庆手机版网站建设
  • 长春营销型网站设计杭州网站设计步骤
  • 玉泉路做网站wordpress最新版获取标签
  • unity可以做网站吗网页设计工资一般多少杭州
  • 商城展示网站建设做网站除了有服务器还需要什么软件
  • 网站后端建设有口碑的镇江网站优化
  • 心馨人生珠海网站建设常州做的网站的公司网站
  • 做投票页面什么网站好江苏省城乡住房建设厅网站
  • 柳州柳北建设局网站wordpress常用hook
  • 网站浮动窗口怎么设置湖北网站建设价格
  • 网站建设服务器维护内容全网营销推广公司
  • 浦口区网站建设质量推荐郴州市住房和城乡建设局网站
  • 龙岗外贸网站建设公司价格专业网站建站企业
  • 临沂网站设计制作江阴房产网510房产网
  • iis网站属性中国十大咨询机构
  • 手机网站首页布局设计网站建设及 维护合同
  • 网站百度地图怎么做北京住房和城乡建设部官方网站
  • 网站收录量是什么意思seo推广的方法
  • 文件下载网站源码网站建设 全包 制作
  • 中山企业建网站四川网站建设培训班
  • 常州微网站建设文档网站的301重定向怎么做
  • 网站开发学什么语言好模板网站做外贸可以吗
  • 北京建网站实力公司哪个网站做译员好
  • 网站开发下载功能如何实现wordpress htaccess