avatar
文章
36
标签
58
分类
10

首页
时间轴
标签
分类
Ali5669
首页
时间轴
标签
分类

Ali5669

libvlc对鸿蒙设备的移植探索
发表于2025-01-16|三方库移植
前言请注意:这是一个不成功的探索,仅供参考。 在做鸿蒙三方库移植时,一眼相中了目前还没有人移植的 vlc。 作为音视频、播放器领域巨头,vlc 的名号可谓无人不知、无人不晓。 但是,由于 vlc 使用的编译工具链过于古旧,项目庞大难以一一分析,本人对于三方库编译移植一条龙又是第一次接触。 凡此种种,不一而足。这些因素都指向了此次探索的失败结局。 解构一切恐惧都来源于未知,对于 vlc 及其衍生物的不熟悉,不了解,片面理解导致了选型的失败。 从项目层级来看: vlc - vlc 的总库,可以编译出来可执行文件 libvlc - C 语言的 vlc 基础库 libvlcpp - C++ 语言的绑定接口,方便 C++ 开发者开发 ( 并非 libvlc 的 C++ 实现 ) 分析从目标入手由官方文档可知,vlc 目录下的每个模块含义 lib - libvlc 源码 src - libvlccore 源码 compat - libcompat 源码 include - 头文件 modules - 各种必要与非必要插件依赖 按照官方教程编译出来 libvlc.so 之后可以查看依赖 ...
flv
发表于2024-12-17
flvflv 不像 RTMP 那样繁文缛节 123456789101112constructor() { this.parserBuffer = Buffer.alloc(13); this.parserState = FLV_PARSE_INIT; this.parserHeaderBytes = 0; this.parserTagBytes = 0; this.parserTagType = 0; this.parserTagSize = 0; this.parserTagTime = 0; this.parserTagCapacity = 1024 * 1024; this.parserTagData = Buffer.alloc(this.parserTagCapacity); this.parserPreviousBytes = 0; }
RTMP
发表于2024-12-10|音视频
RTMPRTMP(Real-Time Messaging Protocol)是由Adobe Systems开发的一种用于音视频以及数据在因特网上进行高效传输的协议,被广泛用于各种实时流媒体传输。 握手RTMP(实时消息传输协议)的握手过程是客户端和服务器建立连接的初始阶段,它确保双方能够同步时钟并协商连接参数。RTMP的握手过程主要包括以下三个阶段: C0 和 S0: 客户端发送一个字节的C0数据,它表示RTMP协议的主版本,通常为0x03。 服务器接收后,回复一个字节的S0数据,同样用来表示RTMP协议的版本。 C1 和 S1: 客户端紧接着发送C1数据块,长度为1536字节。C1包含了一个32位的UTC时间戳、一个32位的零值字段(被称为Flash Player的版本信息,但通常填充为零),以及1528字节的随机数据。 服务器收到之后,回复S1数据,也是一块1536字节的数据,结构与C1相同:包括一个32位的时间戳、一个32位的零值字段和1528字节的随机数据。 C2 和 S2: 客户端在收到S1后会发送C2数据,这是一个1536字节的块。这次包含的是服务器在S1 ...
node-media-server-v2读源码-Rtmp
发表于2024-12-10
前言RTMP(Real-Time Messaging Protocol)是由Adobe Systems开发的一种用于音视频以及数据在因特网上进行高效传输的协议,被广泛用于各种实时流媒体传输。 RtmpPacket12345678910111213141516class RtmpPacket { constructor(fmt = 0, cid = 0) { this.header = { fmt: fmt, cid: cid, timestamp: 0, length: 0, type: 0, stream_id: 0 }; this.clock = 0; this.payload = Buffer.alloc(0); this.capacity = 0; this.bytes = 0; }} RtmpRTMP define123456// for HandShakeconst RTMP_HANDSHAKE_SIZE = 153 ...
node-media-server-v2读源码
发表于2024-12-10|音视频
前言node-media-server 是基于 node.js 的 RTMP/HTTP-FLV/WS-FLV/HLS/DASH 流媒体服务器三方库 目录123456789101112131415161718192021src- |- core- | |- avcodec.js | |- avpacket.js | |- context.js | |- logger.js | |- protocol- | |- amf.js | |- flv.js | |- rtmp.js | |- server- | |- broadcast_server.js | |- http_server.js | |- rtmp_server.js | |- session- |- base_session.js |- flv_session.js ...
node-media-server v4 Get 不到 /admin
发表于2024-12-09|音视频
node-media-server 是基于 node.js 的 RTMP/HTTP-FLV/WS-FLV/HLS/DASH 流媒体服务器三方库 环境配置npm install node-media-server下载到的 mode-media-server 是最新版本 v4.0.7 样例运行12345678910111213141516171819// app.jsconst NodeMediaServer = require('node-media-server'); const config = { rtmp: { port: 1935, chunk_size: 60000, gop_cache: true, ping: 60, ping_timeout: 30 }, http: { port: 8000, allow_origin: '*' }}; var nms = new NodeMediaServer(config)nms.ru ...
Error: The current device does not contain the following SysCap attributes in the rpcid.json file
发表于2024-09-25|环境配置
开发环境:DevEco Studio Next beta1Openharmony SDK 12(5.0.0.68)RK3568-DAYU200 编译成功,但打包到开发板时报错1234The current device does not contain the following SysCap attributes in the rpcid.json file:SystemCapability.Sercurity.xxx...Make sure the device supports all the SysCap attributes required for running the app 缓兵之计:删除DevEco Studio的编译SDK中ets/api/define-device/default.json中相关栏 default.json可替换为其他设备类型.json 同理 ets/api/define-device-common js/api/define-device 中的相关栏也要删除 根治:相应的在编译烧录前在相同位置添加相关栏
从0到1实现RTSP服务器
发表于2024-08-29|音视频
前言RTSP服务器是一个网络服务器,它使用实时流媒体传输协议(RTSP)提供对媒体流的控制。RTSP是一种应用层协议,用于控制多媒体会话,包括控制媒体会话中的媒体流的传输。这种控制包括播放、暂停、前进、后退等操作。 RTSP服务器通常用于流媒体系统,如网络电视直播,视频监控等。它可以将媒体数据流动态的发送给客户端,而无需将整个媒体文件先发给客户端。 RTSP服务器能够处理和响应客户端发送的RTSP请求,并管理媒体流的传输。它还可以动态地为每个客户端会话选择传输协议(如RTP、UDP或TCP)以及数据格式(如MPEG、AVI或QuickTime)。 一、需求功能需求 RTSP服务器需要要有UDP和TCP两种连接方式,即能够通过以下两种方式来获取服务器的媒体数据。123ffplay -i rtsp://127.0.0.1:8554ffplay -i -rtsp_transport tcp rtsp://127.0.0.1:8554 服务器能够上传视频 (H264) 和音频 (AAC),且用户在获取媒体数据时,音画需要同步性能需求支持多用户 (5+) 同时访问 二、架构想要实现高性能RT ...
RTSP与SDP
发表于2024-08-29|音视频
简介RTSP是RTP中负责定义具体的控制消息、操作方法、状态码等的协议,但它本身并不传输数据,而是必须依赖于下层传输协议所提供的某些服务。 RTSP 可以实现如下的指令集,这些指令是面向客户端编写的。12345enum Method{ OPTIONS, DESCRIBE, ANNOUNCE, SETUP, PLAY, RECORD, PAUSE, GET_PARAMETER, TEARDOWN, NONE,}; 本文仅实现下面的子集12345enum Method{ OPTIONS, DESCRIBE, SETUP, PLAY, NONE,}; 指令集每个指令对应一个字符串,在每次调用之后,需要将字符串发送给客户端。 为了代码阅读方便、美观,每一个字符串最后都省略了"\r\n" 每个指令都有相同的头部: 12"RTSP/1.0 200 OK""CSeq: %u" RTSP/1.0 200 OK 用于回应请求成功 CSeq 代表该消息的序列号 和相同的尾部:1& ...
AAC
发表于2024-08-25|音视频
AACAAC(Advanced Audio Coding)是一种声音数据的文件压缩格式,分为 ADTS 和 ADIF 两种文件格式。 ADIF 的解码必须从明确的定义位置开始执行,故常用于磁盘文件 ADTS 是具有同步字的比特流,解码可以从流的任意位置开始 因此音频流传输一般采用了 ADTS ADTS帧结构与一般帧并无差别[帧头]+[帧数据] ADTS 头格式如下: 12345678910111213141516171819202122232425262728struct AdtsHeader{ unsigned int syncword; // 12位,同步字 '1111 1111 1111',一个ADTS帧开始的标志 uint8_t id; // 1位,0代表MPEG-4,1代表MPEG-2 uint8_t layer; // 2位,必须为0 uint8_t protectionAbsent; // 1位,1代表没有CRC,0代表有CRC uint8_t profile; ...
1234
avatar
Ali5669
文章
36
标签
58
分类
10
Follow Me
公告
爱你
最新文章
八股基础-JAVA2025-08-14
面试经验-拼多多一面2025-08-11
面试模拟-基础知识2025-08-06
面试模拟-架构演进与DDD实践2025-08-06
面试模拟-RocketMQ2025-07-30
分类
  • C基础知识2
  • Web1
  • WebSocket1
  • 三方库移植1
  • 人工智能1
  • 服务端1
  • 环境配置2
  • 算法5
标签
void* SFU OpenHarmony WebRTC RK3568 h264 Session RTP GC AutoTools BloomFilter 快速幂 Queue RocketMQ H264 ThreadLocal Tree LRU Spring Cloud Nacos Jetson Pub/Sub HashSet WorkFlow ubuntu SDP DDD RTSP RTMP Deque C++ WebSocket vlc C Spring Cloud Gateway Visual Studio AAC JVM 软件工程 TUS ShareDB
归档
  • 八月 20254
  • 七月 20257
  • 六月 20255
  • 五月 20251
  • 四月 20251
  • 三月 20251
  • 二月 20251
  • 一月 20251
网站资讯
文章数目 :
36
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2025 By Ali5669
框架 Hexo|主题 Butterfly