- 博客(34)
- 资源 (2)
- 问答 (3)
- 收藏
- 关注

原创 三分钟构建高性能WebSocket服务 | 超优雅的Springboot整合Netty方案
前言每当使用SpringBoot进行Weboscket开发时,最容易想到的就是spring-boot-starter-websocket(或spring-websocket)。它可以让我们使用注解,很简单的进行Websocket开发,让我们更多的关注业务逻辑。它底层使用的是Tomcat,且不说把整个Tomcat放进一个WebSocket服务中是否会太重,但在大数据量高并发的场景下,它的表现并不...
2018-09-20 15:12:52
4036
原创 Rust 如何轻松实现 RTMP 流媒体推送?深入解析直播推流场景与解决方案
借助 Rust 和 ez-ffmpeg 库,开发者可以更高效、安全地实现 RTMP 推流需求。无论是公共直播平台还是本地环境,都能快速上手,让直播应用开发变得简单而稳定。
2025-04-04 15:38:32
149
原创 Rust 中的高效视频处理:利用硬件加速应对高分辨率视频
在视频处理领域,随着4K、8K甚至更高分辨率内容的普及,传统的CPU计算方式逐渐显得力不从心。硬件加速技术通过利用GPU等专用硬件分担编解码任务,不仅能大幅提升处理效率,还能释放CPU资源,为用户带来更流畅的体验。在Rust中,FFmpeg是一个广泛使用的底层库,而基于其封装的工具则让开发者能更轻松地调用这些功能。无论是优化视频处理速度,还是降低资源占用,硬件加速都已成为现代开发中不可或缺的技术手段。在Rust中,通过简洁的接口和强大的生态支持,开发者可以轻松应对高性能视频处理的挑战。
2025-04-02 14:52:41
522
原创 从0到1:Rust 如何用 FFmpeg 和 OpenGL 打造硬核视频特效
视频特效如今无处不在:短视频平台的滤镜美化、直播间的实时美颜、影视后期的电影级调色,甚至 AI 生成内容的动态效果。本文将带你用 Rust 结合 FFmpeg 和 OpenGL,优雅、高效地搞定视频特效开发,从基础滤镜到硬核动态效果,3 分钟上手,彻底告别上述痛点!无论是短视频滤镜、直播美颜,还是 AI 视频处理,Rust + FFmpeg + OpenGL 的组合都能让你事半功倍。如何将这三者结合,既高效又优雅?如果基础滤镜满足不了你的野心,想让特效“动起来”,OpenGL 是你的最佳拍档。
2025-03-31 21:38:14
977
原创 Rust 开发者必备:三分钟掌握视频帧率调整,告别 FFmpeg 命令行与 FFI 烦恼
在视频处理中,帧率(FPS)直接影响视频的流畅度和设备兼容性。例如,你可能需要将一个 60 FPS 的游戏录屏调整为 30 FPS 以适配主流播放平台,或将视频帧率降低以匹配特定设备的播放要求。传统上,开发者依赖 FFmpeg 命令行工具完成这类任务,比如,但这需要掌握复杂的参数,且在批量处理时效率不高。在 Rust 中,直接通过 FFI(Foreign Function Interface)调用 FFmpeg 的 C 库是一种选择,但这种方式复杂且容易出错。
2025-03-28 15:45:35
653
原创 Rust 与 FFmpeg 实现视频水印添加:技术解析与应用实践
在短视频、直播、影视制作等领域,视频水印是一种常见的工具,用于保护版权、提升品牌辨识度或满足合规性要求。通过 Rust 和 FFmpeg 的结合,开发者可以高效、安全地实现视频水印添加,满足短视频批量处理、直播实时叠加等多种场景的需求。提供简洁的接口,使开发者无需深入 FFmpeg 的复杂 API 即可完成任务,同时保持 Rust 的安全性和简洁性。这些场景表明,开发者需要一个既能利用 FFmpeg 强大功能,又能在 Rust 中保持简洁和安全性的解决方案。
2025-03-26 14:43:17
857
原创 Rust 开发者必备:三分钟搞定视频缩略图生成
视频缩略图生成是开发者常遇到的需求,比如为视频网站生成预览图,或为内容管理系统提供封面图。是一个专为 Rust 设计的库,它把 FFmpeg 的复杂操作封装成直观的 API,不仅代码更简洁,还能利用 Rust 的内存安全特性,避免资源泄露等问题。是个实用的工具,它把 FFmpeg 的复杂命令行操作简化成了直观的代码调用。无论是生成单张缩略图,还是批量处理多张图片,都能快速上手,省下不少调试时间。FFmpeg 是个功能强大的工具,几乎能解决所有视频处理问题,但它的命令行操作对新手不太友好。
2025-03-24 18:59:43
872
原创 三分钟掌握音频提取 | 在 Rust 中优雅地处理视频音频
对于 Rust 开发者来说,直接在代码中调用命令行工具可能会遇到一些麻烦,尤其是在需要深度集成或精细控制时。本文将带你探索如何在 Rust 中处理音频提取,既实用又易懂,三分钟让你上手!在某些场景下,你可能需要对音频进行更精细的控制,比如将音频设置为单声道、调整采样率,并指定特定的编码器。比如,你可能需要分离背景音乐来单独欣赏,或者提取对白用于语音分析,甚至为视频生成字幕。首先,确保系统中已安装 FFmpeg,因为它是音视频处理的核心依赖。在 Rust 中处理视频音频,不必拘泥于传统的命令行调用。
2025-03-22 13:58:20
921
原创 三分钟掌握视频分辨率修改 | 在 Rust 中优雅地使用 FFmpeg
在视频处理领域,调整视频分辨率是一个绕不过去的需求。比如,你可能需要将一段视频适配到手机、平板或大屏电视上,或者为了节省存储空间和网络带宽而压缩视频尺寸。然而,传统的FFmpeg命令行工具虽然功能强大,但复杂的参数和格式往往让人头疼,尤其是对于Rust开发者来说,直接在项目中调用命令行不仅繁琐,还容易出错。那么,如何在Rust中简洁、高效地搞定视频分辨率修改?这篇文章将带你一步步解决这个痛点。
2025-03-19 22:37:45
1109
原创 从FFmpeg命令行到Rust:多场景实战指南
FFmpeg作为功能强大的多媒体处理工具,被广泛应用于视频编辑、格式转换等领域。为了解决这些问题,Rust社区提供了如ez-ffmpeg等封装库,使开发者能够以更简洁、安全的方式在Rust中使用FFmpeg。
2025-03-17 18:30:22
599
原创 三分钟掌握视频剪辑 | 在 Rust 中优雅地集成 FFmpeg
在当今的短视频时代,高效的视频剪辑已成为内容创作者和开发者的迫切需求。无论是裁剪视频开头结尾、提取高光时刻,还是制作 GIF、去除广告,剪辑都是必不可少的一环。
2025-03-15 12:00:05
1114
原创 三分钟掌握音视频信息查询 | 在 Rust 中优雅地集成 FFmpeg
Rust 开发者可以在不直接处理 FFmpeg 命令行工具或原生 API 的情况下,安全、高效地获取媒体文件的信息
2025-03-13 00:23:01
942
原创 三分钟掌握音视频处理 | 在 Rust 中优雅地集成 FFmpeg
音视频处理看似高深莫测,但在开发中,我们或多或少都会遇到相关需求,比如视频格式转换、剪辑、添加水印、音频提取等。FFmpeg 作为行业标准,几乎无所不能,很多流行的软件(如 VLC、YouTube、OBS)都依赖它。
2025-03-11 21:17:24
586
原创 SpringBoot整合Dubbox(无XML配置)
简介Dubbox是当当网对阿里的Dubbo进行增强的一个分支。在使用springboot之后,我们发现很多配置并不一定要使用xml。这篇文章的目的是让你使用Dubbox时能像使用springboot的其它功能一样可以在application.properties中配置。基础整合进入https://github.com/dangdangdotcom/dubbox ,将源码下载(当当网没有提交上mav
2017-09-15 14:06:41
6294
1
原创 solr6.3安装部署
部署solr6.3到tomcat环境 jdk1.8 tomcat9解压Solr6.3.0到%solr%文件夹解压得到的文件夹下做如下操作: 将%solr%/server/solr-webapp下的webapp文件夹复制到%tomcat%/webapps下,并更改名称为solr; 将%solr%/server/lib/ext下的所有jar包复制到%tomcat%/web
2017-03-17 10:41:56
611
原创 JQuery基础用法
1. 使用JQuery完成页面定时弹出广告1.1 需求分析:当用户打开界面,3秒钟之后弹出广告,这个广告显示5秒钟,隐藏广告1.2 技术分析【什么是JQuery】【JQuery的作用是什么】它封装了很多效果,事件,能够大大的提高我们的开发效率将我们的页面和Js分离出来【JQuery的入门】 <script> window.onload = fun
2016-11-25 21:12:29
488
原创 CSS基础
CSS概述 Cascading Style Sheets 层叠样式表CSS的简单语法:在head标签内,定义如下代码<!--在head标签内,定义一个style标签--><style> /* 选择器{ 属性名:属性值; 属性名2:属性值2; } */ </style>CSS选择器: 选择器的作用,它是能够让我们
2016-11-25 21:03:40
378
原创 JavaScript入门
JavaScript概述 什么是JavaScript?运行在浏览器端的一个脚本语言 脚本语言是一种解释性的语言,例如Python、vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等可以编译成二进制代码,以可执行文件的形式存在,脚本语言不需要编译,可以直接用,由解释器来负责解释。 脚本语言一般都是以文
2016-11-25 21:01:16
468
转载 简单的Socket通信
1.简单的Socket通信 1.1 需求分析客户端发送一条消息给服务器,服务器接收到消息之后,再将这条消息包装一下返回给客户端1.2 步骤分析编写服务器代码:创建一个ServerSocket 获取客户端的输入流,输出流 使用客户端的输入流,接收信息 使用客户端的输出流,向客户端输出信息 编写客户端代码:创建一个Socket,连接服务器 获取服务器端输出流,输入流 使用服务器端的输出流,
2016-11-24 09:40:51
478
原创 HTML入门
HTML的概述 什么是HTML: Hyper Text Markup Language 超文本标记语言 超文本: 比普通文本更加强大,能够定义许多文本样式 标记语言: 通过一组标签来对内容进行标记,并且修饰 -标签: < 关键字 >为什么要学习HTML 它是网页设计的设计,基本上所有的网站都是用它开发的如何来学习HTML HTML语法规范 HTML
2016-11-24 09:39:15
943
原创 JAVA_反射
反射概述A:反射概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法,所以先要获取到每一个字节码文件对应的Class类型的对象。B:三种方式a
2016-11-23 15:50:21
368
原创 JAVA_网络编程
day26授课目录:网络编程概述A:计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。B:网络编程 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。网络编程三要素之IP概述每个设备在网络中的唯一标识每台网络终端在网络中都有一个独立的地址
2016-11-23 15:50:06
358
原创 JAVA_多线程
多线程1.什么是线程 线程是程序执行的一条路径, 一个进程中可以包含多条线程多线程并发执行可以提高程序的效率, 可以同时完成多项工作2.多线程的应用场景 红蜘蛛同时共享屏幕给多个电脑迅雷开启多条线程一起下载QQ同时和多个人一起视频服务器同时处理多个客户端请求多线程并行和并发的区别并行就是两个任务同时运行,就是甲任务进行的同时,乙任务也在进行。(需要多核CPU)并发是指两个任务都
2016-11-23 15:49:51
341
原创 JAVA_IO流中不常用的流
序列流1.什么是序列流 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, 以此类推.2.使用方式整合两个: SequenceInputStream(InputStream, InputStream)FileInputStream fis1 = new FileInputStream("a.txt");
2016-11-23 15:49:32
421
原创 JAVA_IO流_字符流
字符流FileReader1.字符流是什么 字符流是可以直接读写字符的IO流字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出. 2.FileReader FileReader类的read()方法可以按照字符大小读取FileReader fr = new FileReader("aaa.txt"); //创
2016-11-23 15:49:14
341
原创 JAVA_IO流_字节流
IO流概述及其分类1.概念 IO流用来处理设备之间的数据传输Java对数据的操作是通过流的方式Java用于操作流的类都在IO包中流按流向分为两种:输入流,输出流。流按操作类型分为两种: 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的字符流 : 字符流只能操作纯字符数据,比较方便。2.IO流常用父类 字节流的抽象父类: InputStream
2016-11-23 15:48:54
404
原创 JAVA_异常
异常的概述和分类A:异常的概述 异常就是Java程序在运行过程中出现的错误。B:异常的分类 通过API查看ThrowableError 服务器宕机,数据库崩溃等Exception C:异常的继承体系Throwable Error Exception RuntimeExceptionJVM默认是如何处理异常的A:JVM默认是如何处理异常的 main函数收到这个问题时,有两
2016-11-23 15:28:28
367
原创 JAVA中File类
File类的概述和构造方法A:File类的概述 File更应该叫做一个路径 文件路径或者文件夹路径 路径分为绝对路径和相对路径绝对路径是一个固定的路径,从盘符开始相对路径相对于某个位置,在eclipse下是指当前项目下,在dos下查看API指的是当前路径文件和目录路径名的抽象表示形式B:构造方法 File(String pathname):根据一个路径得到File对象File
2016-11-23 15:27:09
324
原创 JAVA中Map集合
Map集合概述和特点A:Map接口概述 查看API可以知道: 将键映射到值的对象一个映射不能包含重复的键每个键最多只能映射到一个值B:Map接口和Collection接口的不同 Map是双列的,Collection是单列的Map的键唯一,Collection的子体系Set是唯一的Map集合的数据结构值针对键有效,跟值无关;Collection集合的数据结构是针对元素有效Map集合
2016-11-23 15:22:33
448
原创 JAVA中Set集合
HashSet存储字符串并遍历A:Set集合概述及特点 通过API查看即可B:案例演示HashSet存储字符串并遍历HashSet<String> hs = new HashSet<>();boolean b1 = hs.add("a");boolean b2 = hs.add("a"); //当存储不成功的时候,返回falseSystem.out.println(b
2016-11-23 15:19:03
792
原创 JAVA中List数组与泛型
去除ArrayList中重复字符串元素方式A:案例演示需求:ArrayList去除集合中字符串的重复值(字符串的内容相同)思路:创建新集合方式/** * A:案例演示 * 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同) * 思路:创建新集合方式 */public static void main(String[] args) { ArrayList li
2016-11-23 15:16:00
2692
原创 JAVA中Collection集合
集合的由来及集合继承体系图A:集合的由来 数组长度是固定,当添加的元素超过了数组的长度时需要对数组重新定义,太麻烦,java内部给我们提供了集合类,能存储任意对象,长度是可以改变的,随着元素的增加而增加,随着元素的减少而减少 B:数组和集合的区别 区别1 : 数组既可以存储基本数据类型,又可以存储引用数据类型,基本数据类型存储的是值,引用数据类型存储的是地址值集合只能存储引用数据类型(
2016-11-23 15:11:45
332
原创 JAVA关于时间的几个类
Date类的概述和方法使用A:Date类的概述 类 Date 表示特定的瞬间,精确到毫秒。 B:构造方法 public Date()public Date(long date)C:成员方法 public long getTime()public void setTime(long time)SimpleDateFormat类实现日期和字符串的相互转换A:DateFormat类的概
2016-11-23 15:05:58
406
原创 java 正则表达式
正则表达式的概述和简单使用A:正则表达式是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。作用:比如注册邮箱,邮箱有用户名和密码,一般会对其限制长度,这个限制长度的事情就是正则表达式做的字符类演示A:字符类[abc] a、b 或 c(简单类) [^abc] 任何字符,除了 a、b 或 c(否定) [a-zA-Z] a到 z 或 A到
2016-11-20 22:32:05
320
Maven3.5.0.tar.gz
2017-09-29
[Hadoop3.0.0]Could not find YarnChild
2018-02-06
sql语句,关于时间的复杂查询
2017-07-26
求问一条sql语句(MySQL)
2017-07-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人