1

我有 HLS 的实时流 [ https://82-80-192-30.vidnt.com/ipbc_IPBCchannel11LVMRepeat/definst/IPBCchannel11LVM_3.stream/playlist.m3u8 ] ,我想将其转换为 MPEG-DASH。

最佳做法是什么?

流已经是 h264 aac,因此我知道我不需要重新编码,我只需要 transmux。

我应该使用什么?ffmpeg?mp4 盒子?

笔记:

  1. 我使用 nginx-rtmp-module ( https://github.com/ut0mt8/nginx-rtmp-module/ ) 以便根据本教程从 RTMP 流创建 DASH:https ://isrv.pw/html5-live- streaming-with-mpeg-dash 但是 nginx-rtmp-module 可以只获取 rtmp 流作为输入,并且它不适用于 HLS 流。

  2. 我使用 ffmpeg 从 m3u8 创建破折号,如下所示:

    ffmpeg -i https://82-80-192-30.vidnt.com/ipbc_IPBCchannel11LVMRepeat/_definst_/IPBCchannel11LVM_3.stream/playlist.m3u8 -strict -2 -min_seg_duration 2000 -window_size 5 -extra_window_size 5 -use_template 1 -use_timeline 1 -f dash out.mpd

但这是非常有限的。我无法控制分段持续时间。ffmpeg的min_seg_duration参数对我来说不是很好,而且它可以设置最小持续时间,而我想限制每个片段的最大持续时间(片段出来〜10秒,而我需要它是〜2- 4 秒,因为我正在现场演奏)。

4

1 回答 1

1

首先值得一提的是,如果您可以避免这样做,您将为自己节省大量工作!

如今,大多数设备和客户端都可以播放 HLS 和 DASH 流,因此通常的方法是在您的应用程序或客户端中添加所需的任何额外功能。

如果您确实必须转换服务器端,那么值得注意的是,虽然 HLS 流过去通常使用 TS 片段,但最近在 HLS 生态系统中已经提供了对分段 MP4 的支持。

如果您有 TS 视频流,那么您将需要按照您上面概述的使用 ffmpeg 的方式进行转换。

如果您有分段 MP4,那么您实际上应该已经具有正确的格式,并且可能会发现您只需要创建清单文件,以便 DASH 可以访问分段的 mp4 流。

以上所有假设您的内容未加密或您不必支持加密 - 如果是,那么您可能无法转换媒体,或者您可能还必须对某些流以不同于其他流的方式加密媒体,因为目前大多数部署的 windows 和 chrome 设备和浏览器使用与 Apple 设备略有不同的加密方法(不同的 AES 模式)。

于 2018-04-24T17:32:28.093 回答