gpt4 book ai didi

html - 通过 HTTP 流式传输 MP4,不带分段

转载 作者:行者123 更新时间:2023-12-04 22:45:27 27 4
gpt4 key购买 nike

我正在尝试流式传输 MP4。

如果您流式传输 MP3,您可以将其流式传输到某些东西(可能通过 RTMP 或通过 IceCast)并通过 HTTP(但没有 HLS)观看。您的实时 MP3 文件类似于:http://example.com/live.mp3 .在这里您可以收听现场生成的 MP3。

现在我想要一些与 MP4 类似的东西。
我想将 MP4 (AVC/H.264) 流式传输到服务器(可能通过 RTMP)并希望在此位置接收直播:http://example.com/live.mp4 .
我不想使用 HLS(它是 M3U8 文件和 TS 文件)。

这可能吗?

我知道它适用于已经生成的 MP4,在您将其转换为 FastStart/WebOptimised MP4 之后,但我想要一个 LIVE mp4。

最佳答案

首先你比较苹果和香蕉:mp3 是编解码器,mp4 是容器。

如果您只是“流式传输”一个 mp4 文件,您只需流式传输二进制数据,而不会向解码器提供任何关于它正在查看的内容的线索。那就是 HLS 和 Co. 的用武之地。

正如您所提到的,为了流式传输 mp3,需要一些 Addition,例如 Icecast 或 rtmp Server。如果您想流式传输 AVC/AAC,则相同:您可以使用例如DASH、HLS、rtmp、rtsp、udp 与 mpeg2 传输流作为容器,您的流已准备就绪。 (大部分东西都是基于 mpeg2ts)

问题在于客户端的要求。如果你喜欢它兼容 HTML5 和跨平台,目前你基本上只能使用 HLS 或 DASH 进行直播。

如果 Receiver 应用程序可能与 Flash 或 HTML5 不同,不暗示使用附加流服务器的最简单方法之一是使用 mpeg2 传输流的 UDP 流。

我将添加一个非常简化的绘图,以便您了解不同技术的工作原理:

Streaming methods

此外,还有不断涌现的新技术,例如在我最近的应用程序中,我确实使用 WebRTC 实时流式传输到 HTML5 浏览器。

从理论上讲,您可以只流式传输 .mp4 二进制数据,但客户端需要为此做好充分准备。如果客户端在文件开头没有收到 moov Atom,则它不再真正接收 mp4 流,而只是二进制 AVC/AAC 流。这或多或少正是 MPEG DASH 的工作原理。它将解码所需的信息与二进制文件 block 一起存储为一个单独的文件,并在一定的短时间内存储。

[编辑]当我刚刚跨过它时,这里有一个相关的 ffmpeg 命令:

ffmpeg -i D:\input.mxf -s 640x360 -hls_list_size 30 -hls_flags delete_segments+append_list+omit_endlist -hls_list_size 1 -f hls c:\xampp\htdocs\out.m3u8

然后我下载并解压到我的网络服务器根目录: https://github.com/video-dev/hls.js

从那里我打开了 hls.js 的演示页面: http://localhost/hls/demo/index.html - 并在那里输入我的 m3u8“ http://localhost/out.m3u8”的 url,它可以很好地播放我的实时视频。无需在我的浏览器中安装任何插件 ;-)

来源: Change ffmpeg input on the fly

关于html - 通过 HTTP 流式传输 MP4,不带分段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47378301/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com