关于 产品 支持 Blog

如何使用视频编辑 SDK 编辑碎片 MP4 HLS 流 (M3U8)

image

 

  By Olga Krovyakova - modified October 2, 2023, created April 1, 2019

在新发布的 4.2 版本中,Solveig Multimedia 的视频编辑 SDK 扩展了支持的格式.
当前版本通常侧重于基于在线的流格式.

视频编辑 SDK v.4.2 支持以下格式:

  • 碎片 MP4 HLS 流
  • HTTP 托管 MP4 文件
  • YouTube 在线视频

在本文中,您将找到分段 MP4 HLS 流支持的演示.

 

TRY Video Editing SDK FREE

 

分段 MP4 HLS 流支持

视频编辑 SDK v.4.2 支持碎片 MP4 HLS 流的以下功能:

回放.

您可以轻松打开碎片 MP4 HLS M3U8 流并像使用本地文件一样使用它。 您可以浏览文件并播放它。 仅预览流所需的部分会下载到您的 PC.

要预览碎片 MP4 HLS 流,您可以构建以下图表:

Graph to preview the fragmented MP4 HLS stream

该图包含作为源过滤器的 SolveigMM HLS Source 和作为视频解码器过滤器的 Elecard AVC Video Decoder。 这两个过滤器都随 SDK 一起提供.

使用 SMM Trim C++ 示例应用程序来测试对碎片 MP4 HLS 流播放和修剪的支持.
以下视频演示了通过视频编辑 SDK v.4.2 可以对碎片 MP4 HLS 流执行哪些操作:

button

编辑.

视频编辑 SDK 现在能够修剪碎片 MP4 HLS 流。 视频编辑引擎是负责的主要组件。 您需要做的是配置视频编辑引擎,指定 XTL,描述您当前的任务,然后运行它并等待完成.

视频编辑引擎是一个 COM 组件,公开 ITrimmerObjControl,您可以按如下方式创建它:

hr = ::CoCreateInstance( CLSID_TrimmerObjControl, NULL, CLSCTX_INPROC, IID_ITrimmerObjControl, (void**)&m_pITrimmerObjControl );

要配置编辑引擎,您应该使用 IModuleConfig 界面:

hr = m_pITrimmerObjControl->QueryInterface(IID_IModuleConfig, (void **)&m_pModuleCfgEditObj);

您必须使用获取的接口来设置包含您的修剪任务的 XTL 字符串,并可选择指定回调来跟踪操作进度:

变量 var1 = {0}, var2 = {0};

var1.vt = VT_BSTR;
var1.bstrVal = ...; //XTL格式的任务字符串
hr = m_pModuleCfgEditObj->SetValue( &SMAT_XTLString, &var1 );

var2.vt = VT_BYREF|VT_UI1;
var2.pbVal = (BYTE*) &m_xCTrimmerObjControlCB; //指向回调类的指针
hr = m_pModuleCfgEditObj->SetValue( &SMAT_Callback, &var2 );

变量 var_res = {0};
hr = m_pModuleCfgEditObj->CommitChanges(&var_res);

您可以通过调用 ITrimmerObjControl::Start() 方法来启动修剪过程:

hr = m_pITrimmerObjControl->开始();

在修剪过程中,您可以向编辑引擎询问进度值:

变量 var = {0};
hr = m_pModuleCfgEditObj->GetValue( &SMAT_Progress, &var );

处理完成后,编辑引擎从回调中调用 ITrimmerObjControlCB::OnStop() .

下面您可以看到 XTL sting 示例,其中包含修剪任务:

<时间线版本=“2”">
 <时间线>
  <组输出=“C:\hls\output.m3u8”">
   <轨道视频=“1”音频=“1”文本=“1”标志=“”"">
    <剪辑 src="http://smarteditingonline.solveigmm.com/files/test_multibitrate.m3u8"
                    开始=“160413589”停止=“229542097”timeFormat=“100ns_units”">
    <剪辑 src="http://smarteditingonline.solveigmm.com/files/test_multibitrate.m3u8"
                    开始=“469719350”停止=“572525849”timeFormat=“100ns_units”">
   </追踪>
  </团体>
 </时间线>
</时间线>

此 XTL 中的源文件是 Fragmented MP4 HLS 文件,托管在 http://smarteditingonline.solveigmm.com上。 两个间隔(由“clip”标签表示)将从源文件保存到输出文件:

  • 160413589 - 229542097 单位(或 16.041 - 22.954 秒)和
  • 469719350 - 572525849 单位(或 46.971 - 57.252 秒)

如果源文件包含多个流(例如,对于不同的比特率值),将重新创建源结构.
测试文件http://smarteditingonline.solveigmm.com/files/test_multibitrate.m3u8包含2个具有不同比特率值的不同流(见下图).

image

修剪后,输出文件夹 (C:\hls) 将包含 2 个子文件夹,其中包含流和包含流配置描述的 M3U8 播放列表文件 (output.m3u8)。 下图是修剪后的HLS的结构:

image

输出M3U8文件的结构:

#EXTM3U

#EXT-X-STREAM-INF:平均带宽=1007161,带宽=1275068,视频范围=SDR,CODECS=“mp4a.40.2,avc1.42c01f”,分辨率=1280x720,帧速率=24.000,隐藏式字幕 =无
500K/prog_index.m3u8

#EXT-X-STREAM-INF:平均带宽 = 1564155,带宽 = 2042932,视频范围 = SDR,CODECS =“mp4a.40.2,avc1.42c01f”,分辨率 = 1280x720,帧速率 = 24.000,隐藏字幕 =无
1000K/prog_index.m3u8

可以通过以下链接找到修剪后的文件:
http://smarteditingonline.solveigmm.com/sdkdemo/hls/output.m3u8

有关如何配置和运行视频编辑引擎以执行修剪操作的详细说明,请参阅 SMM Trim C++ 示例应用程序源代码.

 

TRY Video Editing SDK FREE

 

经常问的问题

 

什么是分段 MP4 HLS 流 (M3U8)?

分段 MP4 HLS 流是一种流行的视频流格式,它利用分段 MP4 文件和 M3U8 播放列表通过 Internet 传送视频内容。 通过将视频划分为更小的片段并提供自适应流媒体功能,HLS 可确保在各种设备和平台上的流畅播放和兼容性.

那么,为什么MP4文件一定要分片呢? 如果要使用 HEVC/H.265 或 AVC/H.264,则必须根据 Apple HLS 创作规范中的视频编码标准来使用。 碎片 MP4 文件还与 MPEG-DASH(HLS 的替代方案)兼容,因此您可以使用相同的文件; 唯一的区别是清单文件(播放列表)。 这会减少编码和存储需求,从而节省开支.

 

我可以使用传统视频编辑软件编辑碎片化的 MP4 HLS 流吗?

由于格式的分段性质,使用传统视频编辑软件编辑分段 MP4 HLS 流可能具有挑战性。 传统软件设计用于处理完整的视频文件而不是单个片段。 要编辑 HLS 流,建议使用专用工具将其转换为单个视频文件,然后再将其导入传统编辑软件。 此转换步骤可能会导致与原始流关联的自适应流媒体功能和元数据丢失.

总之,使用传统视频编辑软件编辑分段的 MP4 HLS 流通常需要在编辑之前将片段转换为完整的视频文件。 此过程简化了兼容性,但可能会导致某些特定于 HLS 的功能丢失.

 

除了修剪之外,是否还有其他可用于分段 HLS MP4 流的编辑功能?

视频编辑 SDK v.4.2 中的分段 MP4 HLS 流可使用以下功能:
  • 回放。 分段 MP4 HLS M3U8 流与本地文件一样易于访问和使用。 该文件可以回放和浏览。 您的计算机将仅下载播放预览所需的流部分.
  • 编辑。 可以使用视频编辑软件开发套件来编辑碎片 MP4 HLS 流。 该系统的核心是视频编辑引擎。 设置视频编辑引擎并提供描述当前任务的 XTL 后,您可以启动程序并等待其完成.

有关如何设置和运行用于修剪的视频编辑引擎的信息,请参阅 SMM Trim C++ 示例应用程序源代码.

 

SDK 支持哪些平台?

视频编辑 SDK 可在 Windows、Linux、macOS、Android 平台上使用.

 

对于处理分段 MP4 HLS 流中的字幕或副标题,是否有任何具体准则?

在处理分段 MP4 HLS 流中的字幕或字幕时,重要的是使用受支持的字幕格式(例如 WebVTT 或 TTML)、确保与视频片段对齐、包含单独的字幕媒体播放列表、考虑跨变体流的同步以及彻底 测试显示和可访问性.

 

我可以通过分段 MP4 HLS 流获利或插入广告吗?

是的,可以通过分段 MP4 HLS 流获利或插入广告。 HLS 支持各种广告插入和货币化方法。 最常见的方法是在流中使用广告标记来指示应插入广告的位置。 广告插入可以在服务器端或客户端执行.

 

 About the author

imageOlga Krovyakova is the Technical Support Manager in Solveig Multimedia since 2010.

She is the author of many text and video guidelines of company's products: Video Splitter, HyperCam, WMP Trimmer Plugin, AVI Trimmer+ and TriMP4.

She works with programs every day and therefore knows very well how they work. Сontact Olga via support@solveigmm.com if you have any questions. She will gladly assist you!