hysAnalyser特色的TS流编辑、剪辑和转存MP4功能说明

news2025/5/24 23:22:43

摘要

hysAnalyser 是一款特色的 MPEG-TS 数据分析工具,融合了常规TS文件的剪辑,转存功能,可用于平常的视频开发和测试。
本文详细阐述了对MPEG-TS 流的节目ID,名称,PID,时间戳,流类型,裁剪,拼接、转存MP4或MKV格式的操作指南(版本v1.0.005),以便让用户知悉和掌握它们,帮助用户快速制作和转存定制化的MPEG-TS素材。极大满足和支持用户全方位测试和验证视频转码,DVB直播、HLS直播推流,终端播放等业务系统的适应性能力。

hysAnalyser 支持主流的MP1/MP2/AAC/AC3/E-AC3,MPEG-1/2/4,H.264/AVC、H.265/HEVC等,另外工具还支持 H.266/VVC, AVS2, AVS3等编码格式。

关于 hysAnalyser 的详细介绍,感兴趣的网友可以参考以下地址

  1. 软件发布 https://zhuanlan.zhihu.com/p/1902174484636631934
  2. 腾讯云-flvAnalyser综述
  3. 腾讯云-hysAnalyser综述

软件官方地址
Github地址:https://github.com/zymill/hysAnalyser

功能和案例

1.流转换总入口

任务启动成功后,从菜单栏的流转换可以进入多种 MPEG-TS的编辑和转换功能,如下图所示。
在这里插入图片描述

2.单节目转存MP4、MKV

菜单入口

在这里插入图片描述

转存结果

在这里插入图片描述

转存结果验证

在这里插入图片描述

3.移除空包

简易功能之一,移除流中的空包
在这里插入图片描述

4.移除指定的PID

多个PID用逗号隔开。案例如下
在这里插入图片描述
移除前后的对比结果
在这里插入图片描述

5.将独立PCR PID修改为视频PID

有时候 MPEG TS流的PCR是独立PID,下图是一个案例。如果用户需将PCR转换成视频PID,可以参考下面的方法做编辑。
在这里插入图片描述
修改后的结果
在这里插入图片描述

6.编辑节目的PID

如图所示,用户可以根据自身需要将节目PID重置(包括PMT,视频,音频,字幕等)
便捷方法:自动设置PID将从1000累加。
在这里插入图片描述

7.修改流的时间戳

如图所示,用户可以根据需要,修改编辑流时间戳的起始值(可以用于素材制作)
在这里插入图片描述

8.修改视频流类型(纠错功能)

遇到视频流类型错误的素材,可以通过下面方法做修改。比方说将 MPEG2-Video (2) 修改为 H.264 (27),该功能需要用户了解MPEG-2 system中的流类型定义值,这里提供一些基本类型。

	STREAM_TYPE_VIDEO_MPEG1          = 0x01,  /**< MPEG1 VIDEO (11172-2)                                       */
	STREAM_TYPE_VIDEO_MPEG2          = 0x02,  /**< MPEG2 VIDEO (13818-2)                                       */
	STREAM_TYPE_AUDIO_MPEG1          = 0x03,  /**< MPEG1 Layer 2 AUDIO(11172-3)                                */
	STREAM_TYPE_AUDIO_MPEG2          = 0x04,  /**< MPEG2 Layer 2 AUDIO(13818-3)                                */
	STREAM_TYPE_PRIVATE_SECTION      = 0x05,  /**< ITU-T Rec. H.222.0 | ISO/IEC 13818-1 private_sections         */
	STREAM_TYPE_PRIVATE_DATA         = 0x06,  /**< descriptor defined in EN 300468: maybe AC-3                   */
	STREAM_TYPE_AUDIO_MPEG2L3        = 0x07,  /**< MPEG2 Layer 3 AUDIO                                           */
	STREAM_TYPE_DSM_CC               = 0x08,  /**< Rec. ITU-T H.222.0 | ISO/IEC 13818-1 Annex A DSM-CC  */
	STREAM_TYPE_H222_ATM             = 0x09,  /**< Rec. ITU-T H.222.1  */
	STREAM_TYPE_DSM_CC_A             = 0x0A,  /**< ISO/IEC 13818-6 type A (DSM-CC)                               */
	STREAM_TYPE_DSM_CC_B             = 0x0B,  /**< ISO/IEC 13818-6 type B (DSM-CC)                               */
	STREAM_TYPE_DSM_CC_C             = 0x0C,  /**< ISO/IEC 13818-6 type C (DSM-CC)                               */
	STREAM_TYPE_DSM_CC_D             = 0x0d,  /**< ISO/IEC 13818-6(Extensions for DSM-CC) type D                 */
	STREAM_TYPE_H222_AUX             = 0x0e,  /**< Rec. ITU-T H.222.0 | ISO/IEC 13818-1 auxiliary                */
	STREAM_TYPE_AUDIO_AAC            = 0x0F,  /**< ISO/IEC 13818-7 Audio with ADTS transport syntax(usually AAC) */
	STREAM_TYPE_VIDEO_MPEG4          = 0x10,  /**< ISO/IEC 14496-2 Visual - MPEG4 Video                          */
	STREAM_TYPE_AUDIO_AAC_LATM       = 0x11,  /**< ISO/IEC 14496-3 Audio with LATM transport syntax(LATM AAC)    */

	STREAM_TYPE_MPEG4_PES            = 0x12,  /**< ISO/IEC 14496-1 SL-packetized stream or FlexMux stream carried in PES packets  */
	STREAM_TYPE_MPEG4_SECTIONS       = 0x13,  /**< ISO/IEC 14496-1 SL-packetized stream or FlexMux stream carried in ISO/IEC 14496_sections  */
	STREAM_TYPE_MPEG2_SDP            = 0x14,  /**< ISO/IEC 13818-6 Synchronized Download Protocol */
	STREAM_TYPE_META_PES             = 0x15,  /**< Metadata carried in PES packets */
	STREAM_TYPE_META_SECTION         = 0x16,  /**< Metadata carried in metadata_sections */
	STREAM_TYPE_META_DSMCC_DATA      = 0x17,  /**< Metadata carried in ISO/IEC 13818-6 Data Carousel */
	STREAM_TYPE_META_DSMCC_OBJECT    = 0x18,  /**< Metadata carried in ISO/IEC 13818-6 Object Carousel */
	STREAM_TYPE_META_DSMCC_SDP       = 0x19,  /**< Metadata carried in ISO/IEC 13818-6 Synchronized Download Protocol */
	STREAM_TYPE_MPEG2_IPMP           = 0x1a,  /**< IPMP stream (defined in ISO/IEC 13818-11, MPEG-2 IPMP) */
	STREAM_TYPE_VIDEO_H264           = 0x1B,  /**< ITU-T Rec.H.264 | ISO/IEC 14496-10 Video */
	STREAM_TYPE_AUDIO_MPEG4_AAC      = 0x1c,  /**< ISO/IEC 14496-3 Audio, without using any additional transport syntax, such as DST, ALS and SLS */
	STREAM_TYPE_MPEG4_TEXT           = 0x1d,  /**< ISO/IEC 14496-17 Text  */
	STREAM_TYPE_AUX_VIDEO            = 0x1e,  /**< Auxiliary video stream as defined in ISO/IEC 23002-3  */
	STREAM_TYPE_VIDEO_H264_SVC       = 0x1f,  /**< SVC video sub-bitstream of an AVC video stream conforming to one or more profiles defined in Annex G of Rec. ITU-T H.264 | ISO/IEC 14496-10 */
	STREAM_TYPE_VIDEO_H264_MVC       = 0x20,  /**< MVC video sub-bitstream of an AVC video stream conforming to one or more profiles defined in Annex H of Rec. ITU-T H.264 | ISO/IEC 14496-10 */
	STREAM_TYPE_VIDEO_JPEG_2000      = 0x21,  /**< Video stream conforming to one or more profiles as defined in Rec. ITU-T T.800 | ISO/IEC 15444-1  */
	STREAM_TYPE_VIDEO_MPEG2_3D       = 0x22,  /**< Additional view Rec. ITU-T H.262 | ISO/IEC 13818-2 video stream for service-compatible stereoscopic 3D services  */
	STREAM_TYPE_VIDEO_MPEG4_3D       = 0x23,  /**< Additional view Rec. ITU-T H.264 | ISO/IEC 14496-10 video stream conforming to one or more profiles defined in Annex A for service-compatible stereoscopic 3D services */
	STREAM_TYPE_VIDEO_H265           = 0x24,  /**< Rec. ITU-T H.265 | ISO/IEC 23008-2 video stream or an HEVC temporal video sub-bitstream */
	STREAM_TYPE_VIDEO_H265_SUBSET    = 0x25,  /**< HEVC temporal video subset of an HEVC video stream conforming to one or more profiles defined in Annex A of Rec. ITU-T H.265 | ISO/IEC 23008-2 */
	STREAM_TYPE_VIDEO_H264_MVCD      = 0x26,  /**< MVCD video sub-bitstream of an AVC video stream conforming to one or more profiles defined in Annex I of Rec. ITU-T H.264 | ISO/IEC 14496-10  */
	STREAM_TYPE_VIDEO_H266           = 0x32,  /**< VVC video stream or an VVC temporal video sub-bitstream conforming to one or more profiles defined Annex A of Rec. ITU-T H.266 | ISO/IEC 23090-3 Versatile video coding(VVC) */
	STREAM_TYPE_VIDEO_H266_SUBSET    = 0x33,  /**< VVC temporal video subset of an VVC video stream conforming to one or more profiles defined in Annex A of Rec. ITU-T H.266 | ISO/IEC 23090-3 Versatile video coding(VVC) */

	STREAM_TYPE_VIDEO_CAVS           = 0x42,  /**< CAVS                                                          */
	STREAM_TYPE_VIDEO_DIRAC          = 0xD1,  /**< Dirac                                                         */
	STREAM_TYPE_VIDEO_AVS2           = 0xD2,  /**< Video:AVS2-P2/IEEE1857.4                                      */
	STREAM_TYPE_VIDEO_AVS3           = 0xD4,  /**< Video:AVS3-P2/IEEE1857.10                                     */
	STREAM_TYPE_AUDIO_AVS3           = 0xD5,  /**< Video:AVS3-P2/IEEE1857.10                                     */
	STREAM_TYPE_VIDEO_VC1            = 0xEA,  /**< VC1                                                           */

	STREAM_TYPE_IPMP                 = 0x7F,  /**< IPMP stream                                                   */
	STREAM_TYPE_AUDIO_AC3            = 0x81,  /**< Audio per ATSC A/53B[2] Annex B: AC3 AUDIO                    */
	STREAM_TYPE_AUDIO_DTS            = 0x82,  /**< Audio: Digital Theater Systems                                */
	STREAM_TYPE_AUDIO_TRUEHD         = 0x83,  /**< Audio: true high definition                                   */
	STREAM_TYPE_AUDIO_EAC3           = 0x87,  /**< Audio per ATSC A/53B[2] Annex B: E-AC3 AUDIO                  */

在这里插入图片描述

9.高级配置 (多功能组合)

前面依次是独个功能的说明,大部分情况下,用户可能需要多种功能的综合,常有:

  • 修改节目id和名称
  • pid配置
  • 时间戳修改(PCR、DTS,PTS)
  • 视频流类型的修改(这个通常不是必须的)

转换选项中提供了快捷开关,降低用户的配置难度。
具体功能,可以实际验证
在这里插入图片描述

10.纠错TS

通过纠错,可以将文件中的同步字错误的数据删除,最终保存为新文件。
在这里插入图片描述

11.剪辑TS

TS文件的裁剪

可用于:

  • 大文件裁剪成小文件
  • 通过逐包分析,定位到关键帧位置,将不完整ES帧数据移除。
  • 该功能也可以用于其他文件类型的裁剪处理。
  • 188字节对齐仅仅是为了MPEG-TS裁剪
    在这里插入图片描述
多个TS文件的简单拼接

可用于:

  • HLS分片的拼接,合成一个整体文件
  • 制作特殊素材
  • 结合前面的时间戳编辑,PID编辑,可以制作更多特色的测试素材。
    比方:PAT变化,PMT变化,视频分辨率变化,音轨变化等等。
    这些场景在实际商用环境都不少见。为了适应这些变化,这些素材可以用于检验自己的程序。
    在这里插入图片描述

总之,上面介绍的功能,大部分都是笔者自身工作中常用的功能。希望对感兴趣的网友有所帮助。
这些功能都属于工具的附加功能,真正需要的网友,可以通过软件的注册授权后使用。注册和授权费用和方法,可以点击下面知乎或GitHub的地址。

授权方式:
在这里插入图片描述
在这里插入图片描述
授权费用:35 元(RMB) / 单台机器

参考地址

  1. 软件发布 https://zhuanlan.zhihu.com/p/1902174484636631934
  2. 腾讯云-flvAnalyser综述
  3. 腾讯云-hysAnalyser综述 — 一个特色 MPEG TS分析工具
  4. hysAnalyser 从MPEG-TS导出ES功能说明
  5. Github地址:https://github.com/zymill/hysAnalyser

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2384942.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Google机器学习实践指南(学习速率篇)

&#x1f525;Google机器学习核心概念精讲&#xff08;学习速率&#xff09; Google机器学习实战(7)-5分钟掌握学习速率。 学习速率&#xff1a;模型训练的关键超参数 学习速率是指在训练模型时用于梯度下降的一个标量。在每次迭代期间&#xff0c;梯度下降法都会将学习速率…

使用KubeKey快速部署k8s v1.31.8集群

实战环境涉及软件版本信息&#xff1a; 使用kubekey部署k8s 1. 操作系统基础配置 设置主机名、DNS解析、时钟同步、防火墙关闭、ssh免密登录等等系统基本设置 dnf install -y curl socat conntrack ebtables ipset ipvsadm 2. 安装部署 K8s 2.1 下载 KubeKey ###地址 https…

leetcode hot100:十四、解题思路大全:真·大全!

因为某大厂的算法没有撕出来&#xff0c;怒而整理该贴。部分题目有python版本的AC代码。本贴耗时4天呜呜呜 1.哈希 两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下…

kali的简化安装

首先点击kali的官网 https://www.kali.org/get-kali/#kali-platforms 点击虚拟机版本 下载VMware版本的压缩包 解压后 点击 后缀名为 .vmx的文件 原始账号密码为 kali kali 这样安装 就不需要我们再去配置镜像 等等复杂操作了

Vortex GPGPU的github流程跑通与功能模块波形探索(三)

文章目录 前言一、./build/ci下的文件结构二、基于驱动进行仿真过程牵扯的文件2.1 blackbox.sh文件2.2 demo文件2.3 额外牵扯到的ramulator2.3.1 ramulator简单介绍2.3.2 ramulator使用方法2.3.3 ramulator的输出2.3.4 ramulator的复现2.3.4.1 调试与验证&#xff08;第 4.1 节…

实用蓝牙耳机哪款好?先做好使用场景分析!

市面上的蓝牙耳机款式繁多&#xff0c;618到来之际&#xff0c;消费者如何选择适合自己的蓝牙耳机&#xff1f;实用蓝牙耳机哪款好&#xff1f;关键在于做好使用场景分析&#xff01;今天&#xff0c;就带大家结合不同的使用场景&#xff0c;分享三款倍思音频的精品蓝牙耳机。 …

防火墙NAT地址组NAT策略安全策略

本文仅供学习交流&#xff0c;所涉及的知识技术产权归属华为技术有限公司所有&#xff01;&#xff01;&#xff01; 本文仅供学习交流&#xff0c;所涉及的知识技术产权归属华为技术有限公司所有&#xff01;&#xff01;&#xff01; 本文仅供学习交流&#xff0c;所涉及的…

Windows 使用 WSL 安装 Ubuntu

一&#xff0c;前言 Windows 上轻松跑 Linux 又不想用笨重的VMware 和VirtualBox &#xff0c;怎么办&#xff1f; 开源项目 Windows Subsystem for Linux (WSL)。它解决了许多开发者在 Windows 和 Linux 间切换的痛点&#xff0c;实现在 Windows 上无缝跑 Linux 工具和命令。…

第九天的尝试

目录 一、每日一言 二、练习题 三、效果展示 四、下次题目 五、总结 一、每日一言 创造美好的代价是努力&#xff0c;失望以及毅力&#xff0c;首先是痛苦&#xff0c;然后才是欢乐。 时间是快的&#xff0c;看怎么利用&#xff0c;安排好一切事情&#xff0c;才能从容面对…

流程自动化引擎:重塑企业数字神经回路

在数字经济高速发展的今天&#xff0c;企业运营的核心逻辑正在经历一场静默的革命。流程自动化引擎作为这场变革的中枢神经系统&#xff0c;通过智能化的技术手段重构企业的业务逻辑与决策链路&#xff0c;将原本离散的“数字神经元”编织成高效协同的神经网络。这种技术不仅打…

nginx web服务日志分析

特点&#xff1a; 实时分析&#xff1a;支持实时分析 Nginx 日志&#xff0c;无需预先存储大量日志数据&#xff0c;能即时反馈网站的访问情况。轻量级高效&#xff1a;资源占用少&#xff0c;运行速度快&#xff0c;适合处理高流量网站的日志分析。多种输出格式&#xff1a;除…

VSCode+EIDE通过KeilC51编译,使VSCode+EIDE“支持”C和ASM混编

在使用Keil C51时&#xff0c;要让Keil C51支持混编则需要在混编的.c文件上右键选择Options for File *(ALTF7)&#xff0c;打开选项界面后&#xff0c;在 Properties 页 勾上 Generate Assembler SRC File 和 Assemble SRC File &#xff0c;如下图所示&#xff1a; 这样设置后…

游戏引擎学习第298天:改进排序键 - 第1部分

关于向玩家展示多个房间层所需的两种 Z 值 我们在前一天基本完成了为渲染系统引入分层 Z 值的工作&#xff0c;但还没有完全完成所有细节。我们开始引入图形渲染中的分层概念&#xff0c;即在 Z 轴方向上拥有多个独立图层&#xff0c;每个图层内部再使用一个单独的 Z 值来实现…

Mysql篇-优化

Mysql篇主要是纯理论的面试问题与技巧。 主要从以下进行开展&#xff1a; 索引相关问题&#xff1a; 1、Mysql如何定位慢查询&#xff1f; Mysql慢查询&#xff1a;某个业务查询数据响应时间过长或者与预期响应时间相差大。 表象&#xff1a;页面加载过慢、接口压测响应时间…

一文详解生成式 AI:李宏毅《生成式 AI 导论》学习笔记

生成式 AI 是怎么回事 人工智能&#xff08;Artificial Intelligence&#xff09; “智能”是一个广泛而复杂的概念&#xff0c;其定义和应用范围随着技术、科学和社会的发展不断演变。在当前的语境下&#xff0c;“智能”通常与人工智能&#xff08;AI&#xff09;相关联&am…

什么是物联网 (IoT):2024 年物联网概述

物联网&#xff08;IoT&#xff09;是一个有望彻底改变我们生活、工作以及与环境互动方式的概念。如今&#xff0c;越来越多的新兴企业和老牌企业都在利用物联网的力量创造创新产品与服务。正因为这一转变&#xff0c;互联互通已成为我们生活中不可或缺的一部分&#xff0c;科技…

8级-数组

前情回顾&#xff1a;在7级的时候&#xff0c;我们学习了如何定义、使用函数 目录 概念 什么是数组&#xff1f; 一维数组 声明 初始化 访问元素 计算数组长度 二维数组 声明 初始化 访问元素 思考 一维数组在内存中如何存储&#xff1f; 二维数组在内存中如何存储&…

大模型 Agent 就是文字艺术吗?

最近在技术圈里有一个很有趣的争论&#xff1a;大模型 Agent 是不是就是各种 Prompt 的堆叠&#xff1f;像 Manus 这样看起来很智能的 Agent&#xff0c;本质上是不是就是用巧妙的 Prompt 约束大模型生成更好的输出&#xff1f;换句话说&#xff0c;这是不是一门文字艺术&#…

YOLOv8检测头代码详解(示例展示数据变换过程)

本文旨在通过实例数据&#xff0c;详细解读YOLOv8检测头的网络结构及其代码实现。首先将从检测头的网络架构开始讲解&#xff0c;涵盖代码与网络结构图的对比分析。关键在于深入探讨检测头的输出结果&#xff0c;因为这些输出将直接用于损失函数的计算。由于在不同阶段&#xf…

JUC并发编程1

什么是juc 在java的java.util.concurrent包下的工具。 锁 传统的synchronize public class SealTicket {int total 50;public synchronized void seal() {if (total > 0) {System.out.println(Thread.currentThread().getName() "卖出第" (total--) "张…