我使用 Filereader 读取本地视频文件(mp4),因此我可以将其显示在视频标签中。
我需要剪切 mp4 文件的一部分(即从 5 到 10 秒)并将其上传到服务器上。
我当前的解决方案:我使用“from”和“to”参数将整个视频文件上传到服务器上,在服务器上使用 ffmpeg 剪切它,上传到 s3 并返回 url 视频。
也许只能用 JS/HTML 才能实现?我找到了 Blob.slice 方法,但我不知道如何使用它来剪切视频部分。
Thanks!
mp4 视频文件由“原子”组成,就像文件中的信息或数据块。
它们包含有关电影中曲目的标题和元数据(音频、视频、字幕等)以及媒体数据本身。
这些概念很简单,但是当您查看一个 mp4 文件时,它会非常复杂 - 苹果开发人员网站上有一个很好的示例(https://developer.apple.com/library/content/documentation/QuickTime/RM/Fundamentals/QTOverview/QTOverview_Document/QuickTimeOverview.html https://developer.apple.com/library/content/documentation/QuickTime/RM/Fundamentals/QTOverview/QTOverview_Document/QuickTimeOverview.html):
如果您通过简单地从文件中的某个点到其他点获取字节来获取 mp4 文件的“切片”,您可以看到您将丢失标头信息等,具体取决于您从哪里开始,并且也很可能从“原子”的中间。
当您想要剪切部分视频时,像 ffmpeg 这样的工具可以完成提取和重组文件的艰苦工作。
有些项目在 Bowser 中运行 ffmpeg,但我不确定它们的实用性或采用程度如何 - 无论如何,这个项目似乎很受欢迎:
- https://github.com/bgrins/videoconverter.js https://github.com/bgrins/videoconverter.js
2023 年 2 月更新
Web 汇编语言使浏览器中的计算密集型操作变得更加可行。下面的 ffmpeg WASM 项目使用 WASM 在浏览器中实现 ffmpeg,根据我的经验,它运行良好。
- https://github.com/ffmpegwasm/ffmpeg.wasm https://github.com/ffmpegwasm/ffmpeg.wasm
您确实需要意识到 SharedArrayBuffer 支持的必要性:
只有支持 SharedArrayBuffer 的浏览器才能使用 ffmpeg.wasm,您可以在此处查看完整列表。
上面提到的链接在这里:https://caniuse.com/sharedarraybuffer https://caniuse.com/sharedarraybuffer
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)