普通视图
-
Buzzing
- 创纪录涨势过后,避险策略占据上风Risk-Off Strategies Are Winning the Day After Record Run (www.barrons.com)04-16
-
Buzzing

- “Imagine Dragons”乐队成员试水电子游戏市场The Imagine Dragons Brothers Try to Take on the Video-Game Market (www.bloomberg.com)02:00
“Imagine Dragons”乐队成员试水电子游戏市场
-
Buzzing

- 特朗普的这些威胁中,有一条与众不同One of These Trump Threats Is Not Like the Others (www.theatlantic.com)01:59
特朗普的这些威胁中,有一条与众不同
-
Buzzing
- 伊朗战争迫使美国的亚洲盟友向其对手示好 - The New York TimesIran War Forces America’s Friends in Asia to Court Its Rivals (news.google.com)04-17 #The New York Times
伊朗战争迫使美国的亚洲盟友向其对手示好 - The New York Times
-
Buzzing
- WhiteFiber Inc. (WYFI) 凭借托管和云服务业务的增长,成为数据中心板块的领军股WhiteFiber Inc. (WYFI) a Top Data Center Stock on Colocation and Cloud Services Business Growth (finance.yahoo.com)04-16
WhiteFiber Inc. (WYFI) 凭借托管和云服务业务的增长,成为数据中心板块的领军股
-
Buzzing
- 某鞋类品牌转型为人工智能服务提供商,股价飙升Shoe brand’s shares soar as it reinvents itself as AI provider (finance.yahoo.com)04-16
某鞋类品牌转型为人工智能服务提供商,股价飙升
-
Buzzing
- 据报道,普华永道将重组全球咨询业务PwC to revamp global consulting operations – report (finance.yahoo.com)04-16
据报道,普华永道将重组全球咨询业务
-
Buzzing
- 跌幅达50%却依然坚挺:3只值得您现在关注的成长股Down 50% and Still Standing: 3 Growth Stocks Worth Your Attention Now (finance.yahoo.com)04-16
跌幅达50%却依然坚挺:3只值得您现在关注的成长股
-
国外新闻头条
- 莫兰·扎加:海湾国家对伊朗的羞辱作出反应 - The Times of IsraelMoran Zaga: The Gulf states react to humiliation by Iran (news.google.com)04-17 #The Times of Israel
莫兰·扎加:海湾国家对伊朗的羞辱作出反应 - The Times of Israel
-
Buzzing

- 伊朗在停火期间“完全”开放霍尔木兹海峡Iran Opens Hormuz Strait Completely’ During Ceasefire Period (www.bloomberg.com)00:00
伊朗在停火期间“完全”开放霍尔木兹海峡
-
Buzzing

- 枪声平息后,暴力仍将如影随形地伴随非洲各地的儿童,持续多年After the guns fall silent, violence follows children home across Africa for years to come (phys.org)00:00 #Social #Sciences
枪声平息后,暴力仍将如影随形地伴随非洲各地的儿童,持续多年
-
Buzzing
- 特朗普告诉路透社,美国将从伊朗回收铀US to recover uranium from Iran, Trump tells Reuters (www.reuters.com)04-17
特朗普告诉路透社,美国将从伊朗回收铀
-
Buzzing
- 在阿拉巴马州被美国移民及海关执法局(ICE)拘留的玛丽-特蕾莎·罗斯-马赫已获释Marie-Thérèse Ross-Mahé Detained by ICE in Alabama Is Released (nyti.ms)04-17
在阿拉巴马州被美国移民及海关执法局(ICE)拘留的玛丽-特蕾莎·罗斯-马赫已获释
-
Buzzing
- 缅甸废除所有死刑 - The TelegraphMyanmar scraps all death sentences (news.google.com)04-17 #The Telegraph
缅甸废除所有死刑 - The Telegraph
-
Buzzing
- 摩根士丹利在Bicycle Therapeutics plc(BCYC)调整研发管线重点之际更新其展望Morgan Stanley Updates Bicycle Therapeutics plc (BCYC) Outlook Amid Pipeline Refocus (finance.yahoo.com)21:58
摩根士丹利在Bicycle Therapeutics plc(BCYC)调整研发管线重点之际更新其展望
D4vd 和 Celeste Rivas Hernandez 是谁?
-
Buzzing
- 当世界目光聚焦伊朗之际,朝鲜正加速推进其核武器计划 - WSJAs World Looks at Iran, North Korea Accelerates Its Nuclear-Weapons Program (news.google.com)04-17 #WSJ
当世界目光聚焦伊朗之际,朝鲜正加速推进其核武器计划 - WSJ
-
Buzzing

- 在研究生阶段,想要躲避低迷的就业市场变得更加困难It’s Harder to Hide From a Bad Job Market in Grad School (www.bloomberg.com)18:00
在研究生阶段,想要躲避低迷的就业市场变得更加困难
-
张鑫旭-鑫空间-鑫生活

- 借助mediabunny纯JS实现视频水印、剪裁、合成等功能by zhangxinxu from https://www.zhangxinxu.com/wordpress/?p=12166 本文可全文转载,但需要保留原作者、出处以及文中链接,AI抓取保留原文地址,任何网站均可摘要聚合,商用请联系授权。 一、推荐使用mediabunny 大约2年前,我更新了大量的音视频处理的文章,不过里面的技术实现大都使用原生代码和WebCodecs API手搓的实现。 因为那个时候,WebCodecs API刚出来,技术还不成熟。 自然而然,就陆续出现了不少基于WebCodecs API封装的音视频处理框架。 经过这些年的发展,有一个媒体工具包异军突起,那就是mediabunny! 项目地址:https://github.com/Vanilagy/mediabunny 2个月前,我在微博介绍过的MP4/MOV视频转WebM格式在线工具就使用了此项目。 mediabunny的能力不仅仅在于视频格式转换与压缩,添加水印、时长剪裁等都不在话下,本文就通过我跑通的demo给大家看下这类需求该如何实现。 二、给视频添加水印 话不多说,先直接上手体验。 您可以狠狠地
借助mediabunny纯JS实现视频水印、剪裁、合成等功能
by zhangxinxu from https://www.zhangxinxu.com/wordpress/?p=12166
本文可全文转载,但需要保留原作者、出处以及文中链接,AI抓取保留原文地址,任何网站均可摘要聚合,商用请联系授权。
一、推荐使用mediabunny
大约2年前,我更新了大量的音视频处理的文章,不过里面的技术实现大都使用原生代码和WebCodecs API手搓的实现。
因为那个时候,WebCodecs API刚出来,技术还不成熟。
自然而然,就陆续出现了不少基于WebCodecs API封装的音视频处理框架。
经过这些年的发展,有一个媒体工具包异军突起,那就是mediabunny!
项目地址:https://github.com/Vanilagy/mediabunny
2个月前,我在微博介绍过的MP4/MOV视频转WebM格式在线工具就使用了此项目。
![]()
mediabunny的能力不仅仅在于视频格式转换与压缩,添加水印、时长剪裁等都不在话下,本文就通过我跑通的demo给大家看下这类需求该如何实现。
二、给视频添加水印
话不多说,先直接上手体验。
您可以狠狠地点击这里:纯前端实现视频添加水印效果demo
选择视频和需要的水印图片,就可以得到最终的效果了,如下截图所示:
![]()
其中,最关键的合成就是下面这部分代码:
let ctx = null;
const conversion = await Conversion.init({
input,
output,
video: {
process: (sample) => {
if (!ctx) {
// 创建canvas
const canvas = new OffscreenCanvas(
sample.displayWidth,
sample.displayHeight
);
ctx = canvas.getContext('2d');
}
ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
sample.draw(ctx, 0, 0);
ctx.drawImage(watermark, 80, 80 * watermark.naturalHeight / watermark.naturalWidth);
return ctx.canvas;
}
}
});
使用Conversion.init解码视频的每一帧(sample),然后使用canvas将画面和水印图重新绘制,再返回当前canvas即可。
其实不仅是水印合成,任何画面特效,字幕添加,遮罩,尺寸设置都可以使用此方法实现,原理都是一样的,都是对图像进行处理。
三、Video视频前后剪裁
同样的,先看实现效果。
您可以狠狠地点击这里:纯前端实现视频首尾剪裁demo
选择任意的视频,然后拖选滑竿选择需要的视频片段,点击红色的剪裁按钮,就可以看到被剪裁后的视频了:
![]()
实际生产环境,拖拽的应该是缩列图的左右两个小翅膀,这里为了简化使用,使用了LuLu UI的双滑块模拟。
其核心实现代码极为简单:
const input = new Input({
formats: ALL_FORMATS,
source: new BlobSource(videoFile),
});
const output = new Output({
format: new Mp4OutputFormat(), // The format of the file
target: new BufferTarget(),
});
const eleRange = range.querySelector('input');
const conversion = await Conversion.init({
input,
output,
trim: {
start: eleRange.from,
end: eleRange.to,
},
});
await conversion.execute();
使用trim参数,指定起止时间就可以了。
完整代码可以访问演示页面。
四、多音频和画面的视频合成
一例胜千言,您可以狠狠地点击这里:纯前端实现画面加音频的视频合成demo
默认提供了字幕、背景图、台词,背景音乐可选,用户可以自己上传,可以合成最终的视频:
![]()
我查了下API,mediabunny中似乎缺少AudioBuffer处理方法,当然,也可能有,我自己没找到。
这里的AudioBuffer剪裁和合并用的是我自己之前手搓的方法。
相关源码在页面左侧(移动端在下方)有完整展示,基本上相关的视频合成都可以实现了。
这里提供下核心实现部分:
// 定义一个视频合成输出
const output = new Output({
format: new Mp4OutputFormat(),
target: new BufferTarget(),
});
// 添加视频轨道,画面源自canvas
const videoSource = new CanvasSource(canvas, {
codec: 'avc',
bitrate: QUALITY_HIGH,
});
output.addVideoTrack(videoSource);
// 添加音轨
const audioSource = new AudioBufferSource({
codec: 'aac',
bitrate: QUALITY_HIGH,
});
output.addAudioTrack(audioSource);
await output.start();
// 获取音频文件
const duration = audioFile.duration;
// 每秒30帧
for (let frame = 0; frame < 30 * duration; frame++) {
draw(frame);
await videoSource.add(frame / 30, 1 / 30);
}
// 获取音频的 audioBuffer……(代码略),然后添加
await audioSource.add(audioBuffer);
await output.finalize();
五、广告时间
推荐下我几年前在掘金上更新的人文类课程《技术写作指南》。
既是关于写作,也是关注个人成长!
OK,就说这么多,如果你觉得本文内容对你的工作与学习有所帮助,欢迎转发,点赞!
😉😊😇
🥰😍😘
本文为原创文章,会经常更新知识点以及修正一些错误,因此转载请保留原出处,方便溯源,避免陈旧错误知识的误导,同时有更好的阅读体验。
本文地址:https://www.zhangxinxu.com/wordpress/?p=12166
(本篇完)