摘要
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 的詳細介紹,感興趣的網友可以參考以下地址
- 軟件發布 https://zhuanlan.zhihu.com/p/1902174484636631934
- 騰訊云-flvAnalyser綜述
- 騰訊云-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) / 單臺機器
參考地址
- 軟件發布 https://zhuanlan.zhihu.com/p/1902174484636631934
- 騰訊云-flvAnalyser綜述
- 騰訊云-hysAnalyser綜述 — 一個特色 MPEG TS分析工具
- hysAnalyser 從MPEG-TS導出ES功能說明
- Github地址:https://github.com/zymill/hysAnalyser