问题标签 [fmp4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
360 浏览

ios - Apple 设备上的 HLS/fMP4 (CMAF) 冗余/回退(主要/备份)工作流程不起作用

我正在尝试使用主/备份工作流将我的 HLS/fMP4 (CMAF) 流发布到 Akamai。

当我使用 Shaka 播放器进行测试时,它工作正常:每当停止发布到主入口点时,播放器将正确切换到备份流并继续播放。

但是,不知何故,它不适用于 iOS11 或 macOS High Sierra 上的 safari。我想知道这是否是 Apple 设备的限制,或者我的主播放列表中存在兼容性问题。

这是示例主播放列表文件。

注意:为了便于阅读,我只包含了一对视频和音频。

如果你注意到什么,请告诉我。

0 投票
1 回答
506 浏览

ios - 是否可以使用 AVAssetWriter 将广播样本编码为 MPEG-ts 或 fmp4 文件?

我知道这是一个常见问题,没有简单的解决方案。

找到了一个相同的演示 - http://blog.denivip.ru/index.php/2017/01/live-streaming-on-ios/?lang=en,但它不使用 AVAssetWriter。

人们还建议使用bento4 库,但我希望能够以编程方式完成它,而无需创建新进程,也无需创建新文件和使用 AVAssetWriter 的延迟。

如果不可能,为什么 IOS 没有内置支持使用 AVAssetWriter 使用示例创建这些文件?

RTSP 是 Apple 推荐的直播流媒体的唯一选择吗?

0 投票
0 回答
474 浏览

video-streaming - 如何在给定分段 MP4 文件的情况下生成 DASH 清单文件(MPD 文件)

所以我有一个碎片化的 MP4 文件。现在我需要将这个碎片化的 MP4 文件流式传输到移动设备上的 DASH 播放器(以便用户可以从移动设备上观看此视频)。但是,我不知道如何为这个碎片化的 MP4 文件生成 DASH 清单文件。任何帮助,将不胜感激!

更多信息:希望它是点播的,而不是直播的。

谢谢!

0 投票
1 回答
1018 浏览

c - 关于 fmp4 编码,如何用 H264 帧填充 mdat 框?

我使用 C 语言将 H264 帧(只有 I/P 帧)编码为 fmp4 文件。当我填充mdat框时,我不知道如何填充帧数据。
(I/P)帧数据是直接填充的吗?
前 4 个字节是否需要填充帧长度?

我尝试使用FFMPG对fmp4文件进行编码,发现mdat box中的数据与原来的I/P帧数据完全不同。
是不是又打码了?
可以直接将I/P帧的数据填入mdat box吗?

0 投票
1 回答
58 浏览

ffmpeg - 关于fmp4文件第一个mdat框的问题

fmp4文件第一个mdat框的头部有一段文件描述信息数据,这一段信息有必要吗?如果不是,会不会影响fmp4文件的解码? 在此处输入图像描述

0 投票
4 回答
5209 浏览

c++ - 碎片化 MP4 - 在浏览器中播放问题

我尝试从原始 H264 视频数据创建分段 MP4,以便我可以在 Internet 浏览器的播放器中播放它。我的目标是创建实时流媒体系统,媒体服务器将碎片化的 MP4 片段发送到浏览器。服务器将缓冲来自 RaspberryPi 摄像头的输入数据,该摄像头将视频作为 H264 帧发送。然后它将混合该视频数据并使其可供客户端使用。浏览器将使用媒体源扩展播放媒体数据(由服务器混合并通过 websocket 发送)。

出于测试目的,我编写了以下代码(使用我在互联网上找到的许多示例):

使用 avcodec 的 C++ 应用程序将原始 H264 视频复用到分段 MP4 并将其保存到文件中:

(我硬编码了一些值,例如视频尺寸或帧速率,但正如我所说,这只是一个测试代码。)


使用 MSE 播放我的碎片化 MP4 的简单 HTML 网页


我的 C++ 应用程序生成的输出 MP4 文件可以在 MPC 中播放,但它不能在我测试过的任何网络浏览器中播放。它也没有任何持续时间(MPC 一直显示 00:00)。

为了比较我从上述 C++ 应用程序获得的输出 MP4 文件,我还使用 FFMPEG 从具有原始 H264 流的相同源文件创建分段 MP4 文件。我使用了以下命令:

这个由 FFMPEG 生成的文件可以被我用于测试的每个网络浏览器正确播放。它也有正确的持续时间(但它也有尾随原子,无论如何它不会出现在我的直播中,而且由于我需要直播,所以它首先不会有任何固定的持续时间)。

两个文件的 MP4 原子看起来非常相似(它们肯定有相同的 avcc 部分)。有趣的是(但不确定它是否重要),这两个文件的 NAL 格式与输入文件不同(RPI 相机产生 Annex-B 格式的视频流,而输出 MP4 文件包含 AVCC 格式的 NAL ......或者至少它当我将 mdat 原子与输入 H264 数据进行比较时,看起来就是这种情况)。

我假设我需要为 avcodec 设置一些字段(或几个字段),以使其生成可以被浏览器播放器正确解码和播放的视频流。但是我需要设置哪些字段?或者问题可能出在其他地方?我没有主意了。


编辑 1: 按照建议,我使用十六进制编辑器调查了两个 MP4 文件(由我的应用程序和 FFMPEG 工具生成)的二进制内容。我可以确认的:

  • 两个文件都有相同的 avcc 部分(它们完全匹配并且是 AVCC 格式,我逐字节分析它,没有错误)
  • 两个文件都有 AVCC 格式的 NAL(我仔细查看了 mdat 原子,它们在两个 MP4 文件之间没有区别)

所以我想在我的代码中创建额外数据没有任何问题 - avcodec 会妥善处理它,即使我只是用 SPS 和 PPS NAL 提供它。它自己转换它们,所以我不需要手动做。尽管如此,我原来的问题仍然存在。

编辑 2:我取得了部分成功 - 我的应用程序生成的 MP4 现在可以在 Firefox 中播放。我将这一行添加到代码中(以及其余的流初始化):

所以现在我的这部分代码看起来像这样:

0 投票
1 回答
278 浏览

ffmpeg - VLC播放器如何计算fmp4文件时间线的总长度?

使用VLC播放器播放fmp4文件,播放器显示时间线端口总长度为0,但视频可以正常播放。播放器如何计算fmp4文件时间线总长度?我应该如何修改fmp4盒子的时间参数。 在此处输入图像描述

0 投票
1 回答
161 浏览

c - 为什么fmp4文件不能用VLC解码音频,但是用PotPlayer可以正常播放

我有一个 fmp4 文件(使用 h264 和 aac 帧代码)。用 VLC 播放时,只有视频没有音频,但音频可以用 PotPlayer 解析。AAC格式为ADTS。我的fmp4音频相关框​​截图如下

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
352 浏览

mp4 - fmp4文件如何根据AAC帧的ADTS填充esds框?

我的源 AAC 帧包含 ADTS 标头。我需要根据ADTS初始化fmp4文件中的esds框,剪掉ADTS头,填写其余数据,但是我试了很多次都没有成功(播放器解析不出音频)。以下是我的 ADTS 数据。我配置的esds box的哪些参数需要修改?

ADTS

FF 1111 1111 0-7 位

F9 1111 1001 8-15 位 MPEG-2 无 CRC

60 0110 0000 16-23 位 AAC 主

40 0100 0000 24-27 位

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
228 浏览

mp4 - Where is the detailed description of the esds box of the mp4 file

In which document does the esds box of mp4 file have a detailed description? Why is it not found in the ISO/ IEC 14496-12 document