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

纵享丝滑!Cesium + ffmpegserver 生成高质量动态视频【逐帧生成】

工作中需要提供一些在三维场景下的视频动画素材,屏幕录制会出现掉帧等其他问题,看到 ffmpegserver 后,眼前一亮

Cesium + ffmpegserver 生成高质量视频

1.自建 ffmpegserver

首先,克隆 ffmpegserver 仓库代码

git clone https://github.com/greggman/ffmpegserver.js.git

安装依赖

cd ffmpegserver.js && npm install

启动服务

npm start

ffmpegserver 中有两个 demo 案例,可以打开源代码看看具体实现

效果的预览地址是:

1.普通 canvas案例: http://localhost:8080/test.html

2.threejs 案例 http://localhost:8080/test2.html

原理是通过一帧一帧截取图片,最后用 ffmpeg 逐帧将图片合成为视频。

2. 在 cesium中 集成

以定点环绕来举例

首先,初始化 CCapture 实例

const capturer = new CCapture({format: 'ffmpegserver',framerate: 60,onProgress: () => {},extension: '.mp4',name: 'cesium'
});

开始环绕

const lat = 45.2013
const lng = 82.08887889
const position = Cesium.Cartographic.fromDegrees(lng, lat);
// 获取点位所在地形高度
const updatedPosition = await Cesium.sampleTerrainMostDetailed(viewer.terrainProvider, [position]);
const [destination] = updatedPosition;
const height = destination.height;capturer.start();const center = Cesium.Cartesian3.fromDegrees(lng, lat, height);
let heading = Cesium.Math.toRadians(40.0);
const pitch = Cesium.Math.toRadians(-45.0);
const range = 2000.0;
let totalRotation = 0
const speed = 1; // 环绕速度,每帧转多少度capturer.capture(viewer.canvas);function showVideoLink(url, size) {size = size ? ' [size: ' + (size / 1024 / 1024).toFixed(1) + 'meg]' : ' [unknown size]';let filename = url;const slashNdx = filename.lastIndexOf('/');if (slashNdx >= 0) {filename = filename.substr(slashNdx + 1);}// 视频下载链接console.log("http://127.0.0.1:8080" +  url)
}function animate() {if (totalRotation >= 360) {if (screenRecording) {capturer.stop();capturer.save(showVideoLink);}totalRotation = 0;return;}viewer.render();capturer.capture(viewer.canvas); // 一定要加这一行,不然视频是纯黑的totalRotation += speed;heading = Cesium.Math.toRadians(x);viewer.camera.lookAt(center, new Cesium.HeadingPitchRange(heading, pitch, range));viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);requestAnimationFrame(animate);
}animate();

相关文章:

纵享丝滑!Cesium + ffmpegserver 生成高质量动态视频【逐帧生成】

工作中需要提供一些在三维场景下的视频动画素材,屏幕录制会出现掉帧等其他问题,看到 ffmpegserver 后,眼前一亮 Cesium ffmpegserver 生成高质量视频 1.自建 ffmpegserver 首先,克隆 ffmpegserver 仓库代码 git clone https://…...

Linux下C++编程-进度条

引言&#xff1a;本篇主要在linux下的C实现进度条的功能。按照多文件编程&#xff0c;同时使用Makefile文件完成多文件的编译、连接。 首先创建头文件&#xff1a; 1. progress.h #pragma once #include <iostream> #include <cstring> #include <iomanip>…...

C语言常见题目(1)交换两个变量的值,数的逆序输出,猜数游戏,两个数比较大小等

我的个人主页&#xff1a;☆光之梦☆的博客_CSDN博客-C语言基础语法&#xff08;超详细&#xff09;领域博主 欢迎各位 &#x1f44d;点赞 ⭐收藏 &#x1f4dd;评论 特别标注&#xff1a;本博主将会长期更新c语言的语法知识&#xff0c;初学c语言的朋友们&#xff0c;可以收藏…...

Springboot使用sqlcipher4加密sqlite数据库

在有些业务场景&#xff0c;需要使用sqlite数据库&#xff0c;但sqlite数据库生的db文件&#xff0c;是明文的&#xff0c;该文件被别人拿到&#xff0c;就可以看到里面的所有数据&#xff0c;非常不安全&#xff0c;市面上有很多对sqlite数据库文件加密的方式&#xff0c;但都…...

指针拔尖(2)(巩固提高,全网最牛,包会,看不懂带电脑来找我)

文章目录 前言变量的声明 一、函数指针二、函数指针数组三、指向函数指针数组的指针四、 回调函数总结 前言 提示&#xff1a;本章是指针拔尖系列的终章&#xff0c;有四大知识点。 一、函数指针 二、函数指针数组 三、指向函数指针数组的指针 四、回调函数 但学习这些知识点我…...

本地部署多语言代码生成模型CodeGeeX2

&#x1f3e0; Homepage&#xff5c;&#x1f4bb; GitHub&#xff5c;&#x1f6e0; Tools VS Code, Jetbrains&#xff5c;&#x1f917; HF Repo&#xff5c;&#x1f4c4; Paper &#x1f44b; Join our Discord, Slack, Telegram, WeChat BF16/FP16版本&#xff5c;BF16…...

C语言刷题练习(Day2)

✅作者简介&#xff1a;大家好我是&#xff1a;侠客er&#xff0c;是一名普通电子信息工程专业的大学学生&#xff0c;希望一起努力&#xff0c;一起进步&#xff01; &#x1f4c3;个人主页&#xff1a;侠客er &#x1f525;系列专栏&#xff1a;C语言刷题练习 &#x1f3f7;️…...

docker- harbor私有仓库部署与管理

什么是 harbor harbor是一个开源的云原生镜像仓库&#xff0c;它允许用户存储、签名、和分发docker镜像。可以将 harbor 看作是私有的docker hub &#xff0c;它提供了更新安全性和控制性&#xff0c;让组织能够安全的存储和管理镜像 harbor RBAC&#xff08;基于角色访问控制…...

自动化测试的优缺点

自动化测试的优势 能够极大地提升测试的效率&#xff0c;测试人员可以迅速地在指定平台部署测试脚本且对相应功能进行测试。 “弱化”了软件测试人员个体差异对测试结果的影响。 提高整个测试团队的技能水平。 自动化测试的缺陷 自动化测试的缺陷在于&#xff1a;总是按照…...

深度学习基础知识 Dataset 与 DataLoade的用法解析

深度学习基础知识 Dataset 与 DataLoade的用法解析 1、Dataset2、DataLoader参数设置&#xff1a;1、pin_memory2、num_workers3、collate_fn分类任务目标检测任务 1、Dataset 代码&#xff1a; import torch from torch.utils import dataclass MyDataset(torch.utils.data.D…...

【ElasticSearch】深入探索 DSL 查询语法,实现对文档不同程度的检索,以及对搜索结果的排序、分页和高亮操作

文章目录 前言一、Elasticsearch DSL Query 的分类二、全文检索查询2.1 match 查询2.2 multi_match 查询 三、精确查询3.1 term 查询3.2 range 查询 四、地理坐标查询4.1 geo_bounding_box 查询4.2 geo_distance 查询 五、复合查询5.1 function score 查询5.2 boolean 查询 六、…...

使用wireshark解密ipsec ISAKMP包

Ipsec首先要通过ikev2协议来协商自己后续协商所用的加解密key以及用户数据的esp包用的加解密包。 ISAKMP就是加密过的ike-v2的加密包&#xff0c;有时候我们需要解密这个包来查看协商数据。如何来解密这样的包? 首先导出strongswan协商生成的各种key. 要能导出这些key&#…...

算法进阶-搜索

算法进阶-搜索 题目描述&#xff1a;给定一张N个点M条边的有向无环图&#xff0c;分别统计从每个点除法能够到达的点的数量 **数据规模&#xff1a;**1 < n < 3e4 **分析&#xff1a;**这里我们可以使用拓扑排序根据入边对所有点进行排序&#xff0c;排序后我们按照逆序&…...

时空智友企业流程化管控系统 sessionid泄露漏洞 复现

文章目录 时空智友企业流程化管控系统 sessionid泄露漏洞 复现0x01 前言0x02 漏洞描述0x03 影响平台0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 时空智友企业流程化管控系统 sessionid泄露漏洞 复现 0x01 前言 免责声明&#xff1a;请勿利用文章内的相关技术从…...

QT编程,QMainWindow、事件

目录 1、QMainWindow 2、事件 1、QMainWindow QMenuBar&#xff1a;菜单栏 QMenu: 菜单 QAction: 动作 QToolBar: 工具栏 QStatusBar: 状态栏 setWindowTitle("主窗口"); //: 前缀 文件名 setWindowIcon(QIcon(":/mw_images/10.png")); resize(640, 4…...

人工智能在教育上的应用2-基于大模型的未来数学教育的情况与实际应用

大家好&#xff0c;我是微学AI ,今天给大家介绍一下人工智能在教育上的应用2-基于大模型的未来数学教育的情况与实际应用&#xff0c;随着人工智能(AI)和深度学习技术的发展&#xff0c;大模型已经开始渗透到各个领域&#xff0c;包括数学教育。本文将详细介绍基于大模型在数学…...

C++学习day5

目录 作业&#xff1a; 1> 思维导图 2> 多继承代码实现沙发床 1>思维导图 2> 多继承代码实现沙发床 #include <iostream>using namespace std; //创建沙发类 class sofa { private:string sitting; public:sofa(){cout << "sofa的无参构造函数…...

1.软件开发-HTML结构-元素剖析

元素的嵌套 代码注释 ctrl/ URL url 统一资源定位符 一个给定的独特资源在web上的地址 URI...

QTableWidget 表格增删数据

QTableWidgetQTableWidgetQTableWidget部分使用方法&#xff0c;如在表格中插入或删除一行数据以及清空表格数据等。在添加数据时&#xff0c;设置了条件判断如正则表达式&#xff0c;若用户输入的数据不合法&#xff0c;则添加失败并提示用户错误的地方&#xff0c;便于用户修…...

Tableau:商业智能(BI)工具

Tableau入门 1、Tableau概述2、Tableau Desktop2.1、初识Tableau Desktop2.2、Tableau工作区2.3、数据窗格与分析窗格2.4、功能区和标记卡2.4.1、列和行功能区2.4.2、标记卡2.4.3、筛选器功能区2.4.4、页面功能区2.4.5、附加功能区、图例、控件 3、Tableau视图4、Tableau工作簿…...

LANCZOS智能压缩+RGB自动转换:Anything to RealCharacters预处理模块详解

LANCZOS智能压缩RGB自动转换&#xff1a;Anything to RealCharacters预处理模块详解 1. 项目概述 Anything to RealCharacters是一款专为RTX 4090显卡设计的2.5D转真人图像转换系统。该系统基于通义千问Qwen-Image-Edit-2511图像编辑模型&#xff0c;集成了专门优化的写实化权…...

vscode-react-native终极入门指南:5分钟搭建React Native开发环境

vscode-react-native终极入门指南&#xff1a;5分钟搭建React Native开发环境 【免费下载链接】vscode-react-native VSCode extension for React Native - supports debugging and editor integration 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-react-native …...

JavaScript中全局执行上下文与函数上下文的生成过程

全局执行上下文在JS引擎启动时创建&#xff0c;函数执行上下文在每次调用时创建&#xff1b;前者作用域链仅含全局环境&#xff0c;后者在创建阶段就基于定义位置固定作用域链&#xff1b;var和function声明被提升并初始化&#xff0c;let/const仅注册于词法环境而处于暂时性死…...

Xilinx Aurora 8B/10B IP核(5):GT资源规划实战——从PCB引脚到IP核Lane的映射法则

1. 从PCB引脚到IP核Lane的映射挑战 刚接触Xilinx Aurora 8B/10B IP核配置时&#xff0c;最让我头疼的就是这个"物理到逻辑"的映射问题。记得第一次调试时&#xff0c;明明IP核配置界面显示链路已建立&#xff0c;但实际硬件就是无法通信&#xff0c;后来发现是Lane分…...

PP-DocLayoutV3部署实操:Linux环境权限配置+start.sh执行问题解决

PP-DocLayoutV3部署实操&#xff1a;Linux环境权限配置start.sh执行问题解决 1. 项目概述与核心价值 PP-DocLayoutV3是一个专门用于处理非平面文档图像的布局分析模型&#xff0c;能够智能识别文档中的各种元素布局。与传统的矩形框检测不同&#xff0c;它支持多点边界框预测…...

智能游戏助手:重新定义MOBA类游戏体验

智能游戏助手&#xff1a;重新定义MOBA类游戏体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 在MOBA类游戏的激烈对抗中&#xff0c;每一秒…...

PaveBench:一个用于路面病害感知与交互式视觉语言分析的多功能基准

作者 Dexiang Li, Zhenning Che, Haijun Zhang∗, Dongliang Zhou∗, Zhao Zhang, Yahong Han ∗ 通讯作者 https://arxiv.org/pdf/2604.02804v1 摘要 路面状况评估对道路安全与养护至关重要。现有研究已取得显著进展。然而&#xff0c;大多数研究侧重于分类、检测和分割等传统…...

不止于找Flag:从BUUCTF流量分析题,我总结出这3个Wireshark高效排查思路

从CTF到实战&#xff1a;Wireshark流量分析的三大高阶排查策略 在网络安全领域&#xff0c;流量分析就像数字世界的法医鉴定。当我在一次企业内网渗透测试中&#xff0c;面对超过50GB的混杂流量数据时&#xff0c;那些曾经在BUUCTF等CTF比赛中磨练出的Wireshark技巧突然变得无比…...

如何用BiliTools实现B站视频智能学习:从信息焦虑到知识掌控的转变

如何用BiliTools实现B站视频智能学习&#xff1a;从信息焦虑到知识掌控的转变 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliT…...

OpenClaw人人养虾:健康检查(macOS)

如何从菜单栏应用查看关联频道是否健康。 菜单栏 状态点现在反映 Baileys 健康状态&#xff1a; 绿色&#xff1a;已关联 socket 最近已打开。橙色&#xff1a;正在连接/重试。红色&#xff1a;已登出或探测失败。 次要行显示 "linked auth 12m" 或显示失败原因。…...