搭建基于H.265编码的RTSP推流云服务器

一、前言
- 网上能够找到的RTSP流地址,均是基于H.264编码的RTSP流地址,无法测试应用是否可以播放H265实时流
- 为此,搭建本地的把H.264转码成H.265的RTSP服务器,不管是通过VLC搭建本地RTSP服务器,还是通过FFmpeg搭建本地RTSP服务器,均无法在基于ijkplayer的鸿蒙RTSP播放器上播放
- 鉴于上述特点,在个别网站中找到基于H.265编码的mp4文件,不再转码,而是直接转为实时RTSP流,经过测试,依然失败
- 为了验证鸿蒙RTSP播放器是否支持H.265编码的RTSP流,搭建远程RTSP服务器,通过公网IP使得我可以获取远程RTSP流
二、云服务器认识
弹性云服务器(Elastic Cloud Server,ECS)是由CPU、内存、操作系统、云硬盘组成的一种可随时获取、弹性可扩展的云服务器。弹性云服务器购买成功后,您就可以像使用自己的本地PC或物理服务器一样,在云上使用弹性云服务器。
只需要指定CPU、内存、操作系统、规格、登录凭证方式即可获得一台弹性云服务器。
本文以如下配置为例,介绍购买和使用ECS的操作指导。
- 购买数量:1台
- 计费方式:包年/包月
- 规格:s7.xlarge.2(4vCPUs、8GiB内存)
- 操作系统:Linux
- 登录凭证:密钥对
三、详细步骤如下:
- 在华为云平台网站注册账号,选择新用户体验,可以免费体验一个月
- 选择FLexus云服务器L实例
- 服务器基本属性
区域:华南-广州
核心:2核
内存:2GiB
系统盘:40GiB
流量包:100GB/月
峰值带宽:2Mbit/s
带宽类型:独享
系统:Ubuntu 20.04 server 64bit
访问密码:先关闭服务器后再重置
-
远程服务器的三种登录方式
- 使用CloudShell登录(最简单):操作更流畅,命令窗口CLI中的信息支持复制粘贴,支持搜索、浏览输出历史和多终端分区布局
- 使用VNC方式登录:不依赖公网IP,通过控制台提供的远程登录功能
- 使用SSH密码方式登录Linux云服务器(笔者推荐):可以使用VSCode编辑linux里面的文件
- 使用过MacOS系统主机登录Linux云服务器
- 使用移动设备登录Linux云服务器
-
使用SSH密码方式登录步骤:
-
弹性云服务器状态为“运行中”
-
弹性云服务器已经绑定弹性公网IP(默认已经配置)
-
所在安全组入方向已开放22端口(默认已经开放)
-
在云服务器中(使用CloudShell登录)验证22端口是否开放,下图即为成功:
![![[Pasted image 20240924145659.png]]](https://i-blog.csdnimg.cn/direct/3477d2e6081143589e126b0cc1bdfa51.png)
-
在VScode中安装Remote SSH
-
在VScode中的SSH应用中,通过公网IP进行SSH连接。命令:用户名@服务器IP -p 端口号。比如输入 ssh root@123.123.123.132,直接回车默认访问22端口
-
进入配置文件后,点击右下角继续连接即可
-
输入密码

-
然后在VScode打开一个终端,就可以愉快的使用命令啦,
![:![[Pasted image 20240924152132.png]]](https://i-blog.csdnimg.cn/direct/b4ef18c86c444eb5bafdb65a794b4c01.png)
-
-
使用FFmpeg进行推流
- 安装FFmpeg
sudo apt-get update
sudo apt-get install ffmpeg
![![[Pasted image 20240924163722.png]]](https://i-blog.csdnimg.cn/direct/412a266692714ad3b5877c3b031bf54a.png)
- 查看是否支持H.265编码,看输出是否有libx265
ffmpeg -codecs | grep libx265

-
在华为云服务器控制台的安全组中开发目标端口,可以设置8554端口,或者554端口,如果不确定

-
检查8554端口是否开放
通过命令,前面检查22端口的时候有用过netstat an | grep 8554
-
如果端口测试不通过,可以新增一个安全组,暂时允许所有协议端口

-
使用FFmpeg推流
ffmpeg -re -i test.mp4 -c:v libx265 -preset veryfast -tune zerolatency -c:a aac -f rtsp rtsp://your_server_ip:8554// 参数说明
- `-re`:以原始速率读取输入文件。
- `-i test.mp4`:指定输入文件,可以直接把win的MP4文件拖动到VSCode展示的linux文件夹中。
- `-c:v libx265`:指定视频编码器,也可以把5改成4。
- `-preset veryfast`:编码预设,用于平衡编码速度和压缩率。
- `-tune zerolatency`:优化延迟。
- `-c:a aac`:指定音频编码器。
- `-f rtsp`:指定输出格式为RTSP。
- `rtsp://your_server_ip:8554`:指定RTSP服务器地址和端口以及流名称,可以是你的公网IP。
- 客户端连接RTSP服务器,可以使用VLC
rtsp://your_server_ip:8554
相关文章:
搭建基于H.265编码的RTSP推流云服务器
一、前言 网上能够找到的RTSP流地址,均是基于H.264编码的RTSP流地址,无法测试应用是否可以播放H265实时流为此,搭建本地的把H.264转码成H.265的RTSP服务器,不管是通过VLC搭建本地RTSP服务器,还是通过FFmpeg搭建本地RT…...
C++20 std::format
一、前言 1、传统 C 格式化的问题与挑战 可读性差:使用 C 中的 printf 和 scanf 家族函数进行格式化输出和输入时,它们的语法较为复杂,难以阅读。在较大的代码项目中,可读性差会导致维护困难。类型安全性差:printf 和…...
Python基础知识 (九)os模块、异常、异常的传递性
目录 OS模块 目录的具体操作 什么是异常 异常常见处理方式 异常分类: 捕获一个指定异常 捕获多个异常 捕获所有异常 异常具有传递性 OS模块 在Python中,os模块的常用函数分为两类: (a)通过os.path调用的函数…...
鸿蒙手势交互(三:组合手势)
三、组合手势 由多种单一手势组合而成,通过在GestureGroup中使用不同的GestureMode来声明该组合手势的类型,支持顺序识别、并行识别和互斥识别三种类型。 GestureGroup(mode:GestureMode, gesture:GestureType[]) //- mode:为GestureMode枚…...
【计算机方向】中科院二区TOP神刊!国人发文友好,刊文量高,录用容易!
期刊解析 🚩本 期 期 刊 看 点 🚩 中科院二区TOP期刊! 审稿友好,IF4.8,自引率6.2% 最新年度发文530。 今天小编带来计算机领域SCI快刊的解读! 如有相关领域作者有意投稿,可作为重点关注&am…...
Stable Diffusion 保姆级教程
1. 引言 近年来,Stable Diffusion 成为了图像生成领域的热门技术,它是一种基于扩散模型的生成模型,可以通过输入简单的文本描述生成高质量的图像。相比传统的生成对抗网络(GAN),Stable Diffusion 更具稳定…...
踩坑记录:adb修改settings数据库ContentObserver无回调
在Android 14版本开发过程中遇到一个,通过adb修改settings数据库,发现生效但是监听的ContentObserver无回调 以背光亮度值调节为例 adb shell settings put system screen_brightness 18 调节亮度值到指定值,修改完后查看 adb shell set…...
JAVA毕业设计183—基于Java+Springboot+vue的旅游小程序系统(源代码+数据库)
毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue的旅游小程序系统(源代码数据库)183 一、系统介绍 本项目前后端不分离,分为用户、管理员两种角色 1、用户: 注册、登录、公告信息(…...
[大语言模型] 情感认知在大型语言模型中的近期进展-2024-09-26
[大语言模型] 情感认知在大型语言模型中的近期进展-2024-09-26 论文信息 Title: Recent Advancement of Emotion Cognition in Large Language Models Authors: Yuyan Chen, Yanghua Xiao https://arxiv.org/abs/2409.13354 情感认知在大型语言模型中的近期进展 《Recent A…...
WiFi无线连接管理安卓设备工具:WiFiADB
介绍 WiFi ADB 使您能够通过 WiFi TCP/IP 连接直接在设备上轻松调试和测试 Android 应用,无需使用 USB 数据线。在启用 WiFi 上的 ADB 后,打开控制台将电脑连接到设备。 手机和电脑在同一个WiFi然后电脑上运行adb connect x.x.x.x:x命令即可 下载 谷…...
Django项目配置日志
需求 在Django项目中实现控制台输出到日志文件,并且设置固定的大小以及当超过指定大小后覆盖最早的信息。 系统日志 使用Django自带的配置,可以自动记录Django的系统日志。 可以使用logging模块来配置。下面是一个完整的示例代码,展示了如…...
在IntelliJ IDEA中设置文件自动定位
当然,以下是一个整理成博客格式的内容,关于如何在IntelliJ IDEA中设置文件自动定位功能。 在IntelliJ IDEA中设置文件自动定位 背景 最近由于公司项目开发的需求,我从VSCode转到了IntelliJ IDEA。虽然IDEA提供了许多强大的功能,…...
机器学习笔记 - week6 -(十一、机器学习系统的设计)
11.1 首先要做什么 在接下来的视频中,我将谈到机器学习系统的设计。这些视频将谈及在设计复杂的机器学习系统时,你将遇到的主要问题。同时我们会试着给出一些关于如何巧妙构建一个复杂的机器学习系统的建议。下面的课程的的数学性可能不是那么强…...
对c语言中的指针进行深入全面的解析
1.普通的指针: 实际上指针就是存放地址的变量,eg: int a10; int *p&a; 拆分一下int *中的*说明p是一个指针,int是它所指向的类型; 2.字符串指针和字符串数组 char*str1"abcd"; 先看这一个,这个就是一个字符串…...
xxl-job 适配达梦数据库
前言 在数字化转型的浪潮中,任务调度成为了后端服务不可或缺的一部分。XXL-JOB 是一个轻量级、分布式的任务调度框架,广泛应用于各种业务场景。达梦数据库(DM),作为一款国内领先的数据库产品,已经被越来越…...
Linux 配置与管理 SWAP(虚拟内存)
Linux 配置与管理 SWAP(虚拟内存) 一、作用二、创建交换文件(以创建一个2GB的交换文件为例)1. 创建交换文件2. 设置文件权限2.1. **关于 sudo chmod 600 /root/swapfile 是否一定要执行**2.2. **关于其他用户启动是否没权限用到交换分区** 3.…...
yolo自动化项目实例解析(七)自建UI--工具栏选项
在上一章我们基本实现了关于预览窗口的显示,现在我们主要完善一下工具栏菜单按键 一、添加工具栏ui 1、配置文件读取 我们后面要改的东西越来越多了,先加个变量文件方便我们后面调用 下面我们使用的config.get意思是从./datas/setting.ini文件中读取关键…...
贝锐洋葱头浏览器随时随地访问教务系统,轻松搞定选课
教育网的“拥堵”早已是老生常谈,学生数量庞大、上网时间集中、带宽有限,导致网络速度慢。尤其是从外部网络访问教育网时,更是因为跨运营商的缘故变得缓慢。 而学校内网也是类似的情况,课余时间和上课时间的网络使用情况差别巨大…...
django drf to_internal_value
使用场景 用于将接收到的输入转换为内部可用的数据形式; 例子 to_internal_value主要在反序列化时用到,其作用处理API请求携带的数据,对其进行验证并转化为Python的数据类型。 假如我们的API客户端通过请求提交了额外的数据,比…...
map(lambda x: x[0], sorted(count.items(), key=lambda x: (-x[1], x[0]))[:n])
被解析的代码行 map(lambda x: x[0], sorted(count.items(), keylambda x: (-x[1], x[0]))[:n])假设的输入 假设我们有以下的 count 字典,其中包括一些字符串及其对应的计数: count {apple: 3,banana: 1,orange: 2,grape: 2 }1. count.items() 首先…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...
Spring AOP代理对象生成原理
代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】,这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...
