http自适应流媒体

发布于 2024-12-13 23:53:32 字数 88 浏览 3 评论 0原文

有没有支持 Http Adaptive Streaming 的开源流媒体解决方案?根据我的研究,VLC 不支持自适应流媒体。我不确定达尔文流服务器。有什么想法吗?

Is there any open source streaming solution supports Http Adaptive Streaming? Based on my research VLC is not supporting adaptive streaming. I am not sure about Darwin Streaming Server. Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

苏佲洛 2024-12-20 23:53:32

我看到了它们,但还没有测试过它们。我认为,在 HTTP Live Streaming 的早期阶段,它们所造成的痛苦是不值得的。可供您尝试解决问题的可用资源很少。

如果你想买便宜的,你可以尝试:

50 美元:Apple Compressor。如果您有 MAC 25 美元,则将编码和分段全部合二为一

:Markelsoft HLS Segmenter:但是,您可能需要使用一些 X.264 设置才能获得最终产品,虽然它分段(一项艰巨的工作),但它不会创建变体播放列表。您可以使用记事本手动执行此操作。这不是一项大工作。

如果你想要完全免费,你可以:

  1. 编码:Handbrake、MeGui,任何你想要的。只需遵循 Android 编码规范即可。使用 H264 和 AAC。请勿使用渐进式下载设置/预设。使用 CBR 而不是 VBR,并确保您的帧速率是恒定的而不是可变的。选择一个可以在乘法中轻松使用的帧速率,这样您就可以确保片段中的关键帧位置。

  2. 使用Apple的免费工具:mediafilesegment、variantplaylistcreator等。Mediafilesegmenter会询问您想要多大的片段。默认值为 10 秒。这样,您就可以设置解码器关键帧以确保每个片段都以关键帧开始。

我举两个例子。

示例 1:

  • 分段大小:10 秒
  • 帧速率:最初为 29.97 变量,编码为 30 fps 恒定
  • 帧中关键帧距离:30 x 10 秒 = 300 帧。每 300 帧需要一个关键帧。
  • 建议自适应关键帧:每 2 秒

关键帧设置 2 * 30 = 60 帧。每 5 个关键帧 (5 * 60) 引导一个片段

示例 2:

  • 帧速率:最初为 23.97 变量,编码为 24 fps 恒定
  • 片段大小:8 秒
  • 片段所需的关键帧:8 * 24 = 192
  • 建议自适应 2 秒 = 2 * 24 = 48
  • 每第 4 个关键帧 (4 * 48) 引导一个片段

I see them but haven't tested them. I would suggest that the amount of grief they would cause at this early stage of HTTP Live Streaming would not be worth it. There are few available resources for you to use to try to solve issues with it.

If you want to go cheap you can try:

$50: Apple Compressor. Encodes and segments all in one if you have a MAC

$25: Markelsoft HLS Segmenter: However you may need to play with some X.264 settings to get the final product and, while it segments (the big job) it does not create the variantplaylist. You can do this manually using notepad. it's not a big job.

If you want completely free you have:

  1. Encoding: Handbrake, MeGui, whatever you want. Just follow Android encoding specs. Use H264 and AAC. Do NOT use progressive download settings/presets. Use CBR not VBR and ensure your framerate is constant not variable. Select a framerate that can be used easily in a multiplication so you can ensure keyframe location in the segment.

  2. Use Apples Free tools: mediafilesegment, variantplaylistcreator, etc. Mediafilesegmenter will ask you how large a segment you want. Default is 10 seconds. With that you set the decoder keyframe to ensure each segment starts with a keyframe.

I'll give two examples.

Example 1:

  • Segmentation size: 10 seconds
  • Framerate: originally 29.97 variable, encode to 30 fps constant
  • Keyframe distance in frames: 30 x 10 seconds = 300 frames. You need a keyframe every 300 frames.
  • Recommended keyframes for adaptive: every 2 seconds

Keyframe setting 2 * 30 = 60 frames. Every 5th keyframe (5 * 60) leads a segment

Example 2:

  • Framerate: originally 23.97 variable, encode to 24 fps constant
  • Segment Size: 8 seconds
  • Keyframe required for segment: 8 * 24 = 192
  • Recommended for adaptive 2 seconds = 2 * 24 = 48
  • Every 4th keyframe (4 * 48) leads a segment
岁月蹉跎了容颜 2024-12-20 23:53:32

如果您想要一个开源解决方案,您可以使用 x264 和 mp4box 来实现。以下命令是如何创建单个质量/表示/再现的示例:

x264 --output intermediate_2400k.264 --fps 24 --preset slow --bitrate 2400 --vbv-maxrate 4800 --vbv-bufsize 9600 --min-keyint 48 --keyint 48 --scenecut 0 --no-scenecut --pass 1 --video-filter "resize:width=1280,height=720" inputvideo.mkv

下一步是将编码内容多路复用为 mp4:

MP4Box -add intermediate.264 -fps 24 output_2400k.mp4

然后创建单独的片段和清单:

MP4Box -dash 4000 -frag 4000 -rap -segment-name segment_ output_2400k.mp4

然后您可以创建几个其他质量并使用 dash.js 等开源播放器之一来播放它们。

If you want an open source solution you could do this with x264 and mp4box. The following command would be an example how you can create one single quality/representation/rendition:

x264 --output intermediate_2400k.264 --fps 24 --preset slow --bitrate 2400 --vbv-maxrate 4800 --vbv-bufsize 9600 --min-keyint 48 --keyint 48 --scenecut 0 --no-scenecut --pass 1 --video-filter "resize:width=1280,height=720" inputvideo.mkv

Next step would be that you multiplex the encoded content into mp4:

MP4Box -add intermediate.264 -fps 24 output_2400k.mp4

And then you create the individual segments and the manifest:

MP4Box -dash 4000 -frag 4000 -rap -segment-name segment_ output_2400k.mp4

You could then create several other qualities and play them with one of the open source player like dash.js.

云柯 2024-12-20 23:53:32

老实说,根本没有简单的解决方案可以完成所有这些工作,更不用说自适应流媒体了。
当然,没有一种一体化的开源解决方案可以对 HTTP 流进行编码、分段和交付(更不用说具有同步关键帧的自适应流)。

To be honest there is no simple solution to do all of that at all, not mentioning adaptive streaming.
Definitely there is no all-in-one open source solution to do encoding, segmenting and delivering of HTTP streaming (not mentioning adaptive streaming with synchronized keyframes).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文