当前位置: 首页 > 知识库问答 >
问题:

将m3u8(HLS)转换为mpd(MPEG-DASH)

金坚
2023-03-14

我有HLS的直播[https://82-80-192-30.vidnt.com/ipbc_IPBCchannel11LVMRepeat/definst/IPBCchannel11LVM_3.stream/playlist.m3u8]我想把它转换成MPEG-DASH。

最佳实践是什么?

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

我应该用什么?ffmpeg?mp4box?

注意事项:

>

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

ffmpeg-ihttps://82-80-192-30.vidnt.com/ipbc_IPBCchannel11LVMRepeat/_definst_/IPBCchannel11LVM_3.stream/playlist.m3u8-严格-2-最小间隔时间2000-窗口大小5-额外窗口大小5-使用模板1-使用时间线1-f破折号。mpd

但这是非常有限的。我无法html" target="_blank">控制片段的持续时间。ffmpeg的min_seg_duration参数对我来说效果不太好,它还可以设置最小持续时间,同时我想限制每个片段的最大持续时间(片段出来时约10秒,而我在现场播放时需要约2-4秒)。

共有1个答案

简景焕
2023-03-14

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

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

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

如果你有TS视频流,那么你需要按照你上面用ffmpeg概述的路线进行转换。

如果您有碎片化的MP4,那么实际上您应该已经有了正确的格式,并且可能会发现您只需要创建清单文件,这样DASH就可以访问碎片化的MP4流。

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

 类似资料:
  • 我正在尝试将一个具有DRM保护的MPD dash文件转换为MP4文件。我有DRM许可证的URL。所以,我尝试使用ffmpeg库来实现这一点,但没有选项将许可证URL与ffmpeg命令一起传递以进行解密。

  • 将(从webm、rtmp等任何格式)编码为通用hls或dash格式的“好”方法是什么??? 我看到大量关于HLS和MPEG-DASH的讨论,视频标签看起来像这样 但FFMPEG中的好命令是什么? 当我这么做的时候 它只能在chrome中播放:( 但我需要它能在safari、firefox、opera等平台上播放 我最近看过关于MP4box的讨论,能将任何源代码转换成通用可播放流的最佳线路是什么?

  • 我目前正在一个平台上工作,该平台依靠MPEG Dash向浏览器提供音频和视频。对于onDemand im,使用ffmpeg将视频编码到h264/aac和MP4Box以创建清单。mpd文件。现在我想弄清楚如何创建实时MPEG Dash流,更具体地说,将hls实时流编码到MPEG Dash。 我需要重新编码所有的代码吗。ts段到。mp4(h264/aac)段,因为chrome不支持MPEG2T

  • 我试图在videojs player中播放vimeo m3u8 hls视频。我遇到跨域错误。有人能帮我吗。我的代码。 错误XMLHttpRequest无法加载https://player.vimeo.com/external/155002167.m3u8?p=standard

  • 我正在寻找一个命令ffmpeg,它保存活的输入(rtmp或hls)到hls m3u8与mp4段文件。我知道这是可能的,即有infohttps://bitmovin.com/hls-news-wwdc-2016/,但我尝试的每个命令都生成ts文件。有人知道解决办法吗?

  • 我正在通过FFMPEG创建一个HLS实时流媒体事件播放列表(m3u8文件和ts段)。开头的片段不能从播放列表中删除(它应该包含所有的片段)。HTML5 video元素应该从最开始就开始播放视频(默认情况下,如果播放列表包含几个片段,而结束标记不包含在播放列表文件的末尾,则从中间的某个位置开始)。为了实现视频从一开始就开始播放,我需要将添加到播放列表文件中。 当前我的FFmpeg命令如下: 。 所以