通过 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 进行直播 的相关文章

  • 在 Biztalk WCF 适配器中启用流式处理

    我想从 biztalk 发送一个带有一些元数据的大 blob 到 WCF 服务 我可以自由控制服务设置和 biztalk 设置 尽管我必须使用 http 来访问该服务 该 blob 很可能在 GB 范围内 因此使用 BasicHttp 或
  • 使用 libx264 压缩一组图像时,为什么帧速率会影响最终输出大小?

    我正在使用 ffmpeg 使用 libx264 编解码器将一组图像编码为短延时视频 我的第一次尝试以 30 FPS 的速度进行编码 使用 ffmpeg r 30 pattern type glob i jpg vcodec libx264
  • 如何使用 Android 应用程序中的 Intent 播放视频 mp4?这个有可能?

    我需要在我的应用程序中播放 mp4 视频 但我想使用意图 这可能吗 private void startTrailer Uri contentUri Uri parse android resource pkgName R raw v01
  • 使用 VLC 将文件流式传输为 RTSP

    我需要创建一个可以将 mp3 文件流式传输到另一个设备的服务器 我打算使用 VLC 我查看了 VLC 文档 并对执行此操作的前进方向感到困惑 我找到了这个链接 http www videolan org doc streaming howt
  • 使用 libavformat API 读取 H264 SPS 和 PPS NAL 字节

    如何使用 libavformat API 读取 H264 SPS 和 PPS NAL 字节 我尝试使用 av read frame input avFormatContext avPkt API 从 mp4 视频 编解码器为 h264 文件
  • 非 IDR 图片 NAL 单元 - 0x21 和 0x61 含义

    有谁知道是什么0x21 and 0x61是指在 h 264 编码的视频流中吗 我知道0x01意味着它是一个b frame and 0x41意味着它是一个p frame 我的编码视频给了我两个0x21帧后跟一帧b frame I 21 21
  • 如何使用 Scala Stream 类读取大型 CSV 文件?

    如何使用 Scala Stream 读取大型 CSV 文件 gt 1 Gb 你有代码示例吗 或者您会使用不同的方式来读取大型 CSV 文件而不先将其加载到内存中吗 只需使用Source fromFile getLines正如你已经说过的 这
  • 如何使用 VLC 以 ​​http 方式将视频流式传输到其他计算机 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想使用以下方式将视频从我的计算机流式传输到另一台计算机http in vlc 我已从此处阅读了如何进行视频流传输的步骤https wik
  • 如何在 jQuery 图像滑块中播放视频?

    我有一个 jQuery 滑块 是我在 WordPress 网站上用 jQuery 编写的 如果 src 扩展名是 mp4 我想让它播放视频 有任何想法吗 以下是生成的 HTML 示例 请注意第一个 img src 是视频链接 我想让访问者单
  • Java mp4parser片段序列不连续性

    此用例是一项服务 手动将一系列未压缩的 wav 媒体片段编码为 m4s 片段 以便通过 MPEG DASH 广播 使用 ffmpeg 将 wav 压缩为 aac 并使用 sannies mp4parser 将 aac 音频组装为 m4s 片
  • Spark Streaming以Parquet格式附加到S3,小分区太多

    我正在构建一个使用 Spark Streaming 从 AWS EMR 上的 Kinesis 流接收数据的应用程序 目标之一是将数据持久保存到 S3 EMRFS 中 为此我使用 2 分钟的非重叠窗口 我的做法 Kinesis Stream
  • 在android studio中使用java解析m3u文件

    我正在寻找用java解析m3u文件 频道名称然后是它的链接我已经用谷歌搜索过这个但无法找到解决方案 m3u 文件如下所示 EXTM3U EXTINF 1 VIP AR Bein Max 1 HD http portal onlineiptv
  • Apple HLS 中的 PES 数据包内的访问单元如何对齐?

    Apple 是否指定了这一点 PES 数据包有效负载中应放置多少个访问单元 另外 我想知道 PES 数据包中存在哪些前缀起始代码 如果有 我认为访问单元中第一个 NAL 单元之前的单元是无用的 不能放置 正确的 我想知道它是如何在 HLS
  • 显示MJPEG流的跨浏览器解决方案

    有没有一种轻量级 免费且可靠的方式在跨浏览器环境中显示 MJPEG 我正在尝试显示来自轴2120 http www axis com techsup cam servers cam 2120 index htm我正在开发的网站上有 IP 摄
  • MySQL使用BLOB的二进制存储VS OS文件系统:大文件、大数量、大问题

    我正在运行的版本 基本上 最新的一切 PHP 5 3 1MySQL 5 1 41阿帕奇 2 2 14操作系统 CentOS 最新 情况是这样的 我有数千个非常重要的文档 从客户合同到语音签名 客户对合同的授权录音 文件类型包括但不限于jpg
  • 如何设置 MPEG-4 文件的“媒体创建”日期

    我有许多从各种数码相机格式转码的 MPEG 4 文件 其文件系统修改日期是正确的 我想设置 媒体创建 标签来匹配 这可以通过 属性 窗口的 详细信息 选项卡在 Windows 资源管理器中手动完成 设置 媒体创建 非常有用 因为 Windo
  • 如何使用Java将h.264直播流编码为RTP数据包

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

    我有一个网站 用户可以在其中上传视频文件 我想使用 DASH 流式传输所有内容以获得自适应比特率流式传输 因此 我编写了一个 bash 脚本 由 cron 运行 将所有 mp4 文件转换为 DASH 但它无法正常工作 出了什么问题 例如 使
  • Azure 和直播

    我正在尝试使用 Azure 制作实时视频流 但我真的不知道应该先尝试什么 首先 有一个网站 上面有最新版本的 Flowplayer 现在我需要知道如何将网络摄像头的视频流传输到 Azure 我需要什么样的软件 我正在尝试使用 Express
  • Python 2.7:支持一个端口上多个连接的流式 HTTP 服务器

    我正在寻找一个标准的Python 2 7包 提供一个同时执行的HTTP服务器流媒体同一端口号上的连接 嘿 各位版主 请停止将我的问题标记为想要以非流媒体方式提供服务的问题的重复项 例如 python 中的多线程 Web 服务器 https

随机推荐