通过 MP4 进行直播

2023-12-20

我正在从事在线电视服务工作。目标之一是无需任何额外的浏览器插件(Flash 除外)即可播放视频。

我决定使用 MP4,因为大多数 HTML5 浏览器和 Flash(作为后备)都支持它。这些视频由 FFMpeg 从服务器上的 ASF 进行转码。

但是,我发现 MP4 无法直播,因为它有一个用于元数据的 moov 原子,必须指定长度。 FFMpeg 无法直接将 mp4 流式传输到 stdout,因为它将 moov 放在文件末尾。 (MP4 的实时转码和流式传输在 Android 中可以正常工作,但在 Flash 播放器中失败,并出现 NetStream.Play.FileStructureInvalid 错误 https://stackoverflow.com/questions/11616979/live-transcoding-and-streaming-of-mp4-works-in-android-but-fails-in-flash-player )

当然,MPEG-TS 是存在的,但 HTML5 不支持它<video>.

我想到的是一种将流实时转码为 MP4 的方法,并且在每次新的 HTTP 请求时,首先发送一个 moov,指定一个非常长的数字作为视频的长度,然后开始发送其余的内容MP4 文件。

是否可以使用 MP4 进行流式传输?

经过一些研究和 av501 的回答,我明白必须知道框架的尺寸才能工作。

能否将 mp4 文件分割成更小的部分以便进行流式传输?

当然,切换到其他容器/格式是一种选择,但与 Flash 和 HTML5 兼容的唯一格式是 mp4/h264,所以如果我必须同时支持这两种格式,我就必须转码两次。


您可以使用碎片MP4。碎片 MP4 文件的构建如下:

moov [moof mdat]+

然后,moov 框仅包含有关轨道的基本信息(数量、类型、编解码器初始化等),但不包含有关轨道中样本的信息。有关样本位置和样本大小的信息位于 moof 框中,每个 moof 框后面跟着一个 mdat,其中包含前面的 moof 框中描述的样本。通常,人们会选择 (moof, mdat) 对的长度约为 2,4 或 8 秒(没有具体说明,但这些值对于大多数用例来说似乎是合理的)。

这是构建永无休止的 MP4 流的一种方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 MP4 进行直播 的相关文章

  • 如何使用 VLC 以 ​​http 方式将视频流式传输到其他计算机 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想使用以下方式将视频从我的计算机流式传输到另一台计算机http in vlc 我已从此处阅读了如何进行视频流传输的步骤https wik
  • Apple HLS 中的 PES 数据包内的访问单元如何对齐?

    Apple 是否指定了这一点 PES 数据包有效负载中应放置多少个访问单元 另外 我想知道 PES 数据包中存在哪些前缀起始代码 如果有 我认为访问单元中第一个 NAL 单元之前的单元是无用的 不能放置 正确的 我想知道它是如何在 HLS
  • 使用 ImageIO 发送图像流?

    我设置了一个 ServerSocket 和一个 Socket 因此 ServerSocket 使用 ImageIO write 发送图像流 并且 Socket 尝试读取它们并用它们更新 JFrame 所以我想知道 ImageIO 是否可以检
  • 如何减少 MediaCodec H264 编码器延迟

    我正在尝试使用 Android6 0 的 MediaCodec 将 h264 实时低延迟编码为流 编码器大约有 6 帧延迟 我想知道如何减少 代码来自屏幕记录 cpp https android googlesource com platf
  • 从开放的 HTTP 流中读取数据

    我正在尝试使用 NET WebRequest WebResponse 类来访问 Twitter 流 API 此处 http stream twitter com spritzer json 我需要能够打开连接并从打开的连接中增量读取数据 目
  • 如何使用Java将h.264直播流编码为RTP数据包

    我正在为 Android 操作系统开发一个应用程序 我需要来自摄像机的实时解码视频流 该视频流使用 h 264 编解码器进行编码 将帧数据转换为 RTP 数据包并将数据包发送到服务器 首先 可以尝试在 PC 上实现从 HDD 中预先录制的视
  • H264 字节流到图像文件

    第一次来这里所以要温柔 我已经在给定的 H 264 字节流上工作了几个星期 一般注意事项 字节流不是来自文件 它是从外部源实时提供给我的 字节流使用 Android 的媒体编解码器进行编码 当将流写入扩展名为 H264的文件时 VLC能够正
  • Java中的媒体播放器库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在评估用于在 Java 中播放音频 视频的库 它不需要 100 Java Java 与本机库的绑定
  • OpenCV IP 相机应用程序崩溃 [h264 @ 0xxxxx] 访问单元中缺少图片

    我在 cpp 中有一个 opencv 应用程序 它使用 opencv 的简单结构捕获视频流并将其保存到视频文件中 它与我的网络摄像头完美配合 但是 当我运行它从 IP 摄像机捕获流时 它可能会在大约十秒后崩溃 我的编译命令是 g O3 IP
  • 使用 XProc 进行 XML 流处理

    我正在玩xproc http www w3 org TR xproc XML 管道语言和http xmlcalabash com http xmlcalabash com 我想找到一个流式传输大型 xml 文档的示例 例如 给定以下内容hu
  • 在 MediaFoundation 硬件 MFT 中设置更大的 GOP 大小

    我正在尝试直播通过桌面复制 API 捕获的桌面 H264 编码工作正常 除了桌面复制 API 仅在屏幕发生变化时才传送帧 但视频编码器希望以恒定的帧速率传送帧 因此 当没有触发屏幕更改时 我被迫保存之前的样本 以恒定的速率向编码器提供数据
  • 如何使用AVAssetWriter将h264流写入视频?

    我想将 h 264 流从服务器传输到视频文件 但是当我使用assetwrite finishwrite XCode 报告 Video var mobile Applications DE4196F1 BB77 4B7D 8C20 7A5D6
  • MP4 视频无法在 Firefox 上播放

    我有一个小型家庭服务器 可以托管多个项目 其中包括一些 MP4 示例视频 我一直在使用一个简单的
  • 使用 rtmp 和 videojs 流式传输视频

    我正在寻找一种使用 rtmp 流播放视频的方法 我使用 video js 但它不起作用 Firebug 返回错误 L attribut type sp cifi sur video flash n est pas g r Le charge
  • ffmpeg 将 m4s 转换为 mp4

    我正在研究 DASH 试图为最终用户优化 QoE 我有一个视频 并使用 ffmpeg 将其编码为不同的比特率 一切都很好 并且可以使用 dash 播放该视频 我想要的是将用户收到的片段合并为一个 m4 并将该 m4 转换为 mp4 我在 f
  • RTSP H.264 IP 摄像机作为 Windows 中的视频源/输入

    我目前被这个问题困扰 我希望有人可以帮助我 我正在尝试创建某种解码器来转换视频流 该视频流将充当视频输入设备 以便我可以在 Wirecast 视频流程序 中使用它 在这个阶段 我使用 mjpeg IP 摄像机作为视频源 使用这个简洁的小程序
  • IOS Web 应用程序视频缓存播放问题 (mp4)

    您好 我在 iPad 2 上运行最新版本的 iOS 5 0 1 但无法使 mp4 视频缓存正常工作 我添加了必要的侦听器来侦听 applicationCache 事件 然后在这些事件发生时写入控制台 最值得注意的是 当我的应用程序被缓存时
  • Chrome 在传输一定量的数据后挂起 - 等待可用的套接字

    我有一个浏览器游戏 最近我开始向游戏添加音频 Chrome 无法加载整个页面并卡在 91 requests 8 1 MB transferred 并且不再加载任何内容 它甚至破坏了所有其他选项卡中的网站 说Waiting for avail
  • 如何使用 ejabberd 进行视频通话?

    如何使用ejabberd进行视频通话 如msn和skype ejabberd 本身不处理音频 视频 音频和视频通过 Jingle XEP 0166 进行处理 这是客户端到客户端的 如果您想发出音频或视频呼叫 您应该确保两个客户端都通过正常的
  • JAVA - Xuggler - 组合 MP3 音频文件和 MP4 电影时播放视频

    使用 JAVA 和 Xuggler 以下代码组合 MP3 音频文件和 MP4 电影文件并输出组合的 mp4 文件 我希望在合并音频和视频文件时应自动播放输出视频文件 String inputVideoFilePath in mp4 Stri

随机推荐