问题标签 [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 投票
1 回答
65110 浏览

media - What exactly is Fragmented mp4(fMP4)? How is it different from normal mp4?

Media Source Extension (MSE) needs fragmented mp4 for playback in the browser.

0 投票
1 回答
2446 浏览

ios - 使用 FFmpeg 在 iOS 上编写时将 fMP4 转码为 HLS

TL;博士

我想将 fMP4 片段转换为 TS 片段(用于 HLS),因为片段是在 iOS 设备上使用 FFmpeg 编写的。

为什么?

我正在尝试在 iOS 上实现实时上传,同时在本地保持无缝的高清副本。

我试过的

  1. 滚动AVAssetWriters 每个写入 8 秒,然后通过 FFmpeg 将 MP4 连接在一起。

    出了什么问题- 音频和视频中有时会出现问题。我已经确定了 3 个原因。

    1) 为 AAC 编码器写入的音频启动帧,从而产生间隙。

    2) 由于视频帧长 33.33 毫秒,音频帧长 0.022 毫秒,因此它们可能不会在文件末尾排队。

    3) Mac OS 上缺少帧精确编码,但不适用于 iOS详细信息在此处

  2. FFmpeg 将带有原始音频的大视频 MP4 文件混合到 TS 段中。这项工作基于Kickflip SDK

    出了什么问题 - 每隔一段时间就会上传一个只有音频的文件,没有任何视频。永远无法在内部重现它,但是当我们的用户没有记录他们认为自己做了什么时,这让他们非常沮丧。最终片段的准确搜索也存在问题,几乎就像 TS 片段被错误地标记了时间戳一样。

我现在在想什么

Apple 在今年(2016 年)的 WWDC 上推出了 fMP4,在那之前我并没有过多地研究它。由于 fMP4 文件可以在写入时被读取和播放,我认为 FFmpeg 也可以在文件写入时对其进行转码,只要我们推迟将字节发送到 FFmpeg 直到其中的每个片段文件完成。

但是,我对 FFmpeg C API 不够熟悉,我只在尝试 #2 中短暂使用过它。

我需要你什么

  1. 这是一个可行的解决方案吗?是否有人对 fMP4 足够熟悉,知道我是否真的能做到这一点?
  2. 我怎么知道AVFoundation已经在文件中写入了一个片段,以便我可以将它通过管道传输到 FFmpeg?
  3. 如何从磁盘上的文件中获取数据,一次分块,将其传递到 FFmpeg 并让它吐出 TS 段?
0 投票
3 回答
6994 浏览

ffmpeg - HLS MP4 独立段

长话短说:为什么 HLS 不能一个接一个地播放普通的 MP4 文件?为什么需要将媒体文件分割成 .ts 段?

细节:

我们将 MP4 文件分割成迷你 MP4 片段(不是 TS),每个片段大约 30 秒进行测试。它永远不会在任何 HLS 播放器中播放,只是加载所有段文件然后什么都没有发生。

示例 MP4 片段信息:

M3U8 大师:

240p.m3u8

使用 HLS.js 进行测试时,会出现以下错误:

解析错误:找不到与内容匹配的解复用器,无法恢复,上次媒体错误恢复失败...

Bitmovin Player:加载所有变体的所有片段并且从不播放其中任何一个。停下来。

在 Windows 上的 Chrome 和 Firefox、Mac、Android 和 iPad 浏览器上的 Safari 上测试。永远不会对它们中的任何一个起作用。我们做错什么了吗?!

0 投票
1 回答
1833 浏览

android - 适用于 HLS Fragmented MP4 (fmp4) 的适用于 Android 的 Exo Player Unity 插件

我正在尝试将 Google Exoplayer 集成到 Unity 中,我是 Unity 的新手。我使用 Easy Move Textures Plugin,但它不支持 HLS FMP4,我想开发该插件。我应该如何进行。??

0 投票
1 回答
2424 浏览

c++ - ffmpeg和代码生成的碎片化mp4文件的区别

目前我在使用 libavformat 从代码生成碎片 MP4 文件时遇到问题。我的文件可以使用 VLC 播放,但不能在(Chrome)浏览器中流式传输(通过 WebSocket)和播放(通过 MediaSource)。(我用来测试通过 WebSocket 将分段的 MP4 文件流式传输到浏览器)。

注意:以下文件由 Baseline profile 4 级编码。因此您应该将 MIME 类型(在 index.html 中)更改为 const mimeCodec = 'video/mp4; 编解码器="avc1.42C028"'; 能够播放它们。

我查了一下,发现我生成的Mp4文件和使用ffmpegtool生成的文件有点不同。

这是我所做的:

我有一个 .h264文件

  1. 第一种方法,我使用 ffmpeg 生成碎片化的 MP4 文件

    Quicktime player和VLC player都可以播放生成的文件

  2. 第二种方法,我使用 libavformat 以编程方式生成碎片 Mp4 文件

    首先我初始化上下文,codecin 代码是AVCodecContext*输入流的

    其次我实现了 onWritePacket 回调

    第三,在来自 h264 文件的每个数据包上,我使用av_interleaved_write_frame

    /li>

你们可以看看我的文件,看看有什么问题吗?

0 投票
2 回答
5591 浏览

ffmpeg - 使用 ffmpeg 为 HLS 生成 fmp4 块

我正在尝试生成碎片化的 MP4 作为苹果去年推出的 HLS 的块。

见链接-> https://bitmovin.com/hls-news-wwdc-2016/

ffmpeg 支持这个吗?

谢谢!

0 投票
2 回答
873 浏览

ffmpeg - 碎片化 MP4 中的 FFmpeg 内存泄漏

当使用 FFmpeg 控制台将 RTSP 流保存到分段的 MP4 文件时,我注意到存在少量内存泄漏。它每小时泄漏大约 3-4 MB(当每帧是一个片段和 30 fps 时)。

使用了以下命令:

你可以在这里看到一个超过 5 天的 perfmon

这种泄漏在时间上似乎是线性的,并且与写入文件的片段数量有关。

它也可以通过 FFmpeg 库重现。

有没有人遇到过这样的事情?

0 投票
1 回答
4475 浏览

format - HTTP Live Streaming:分段 MP4 或 MPEG-TS?

我有一个 IP 摄像机,它通过 UDP 在 RTSP 中发送一个实时流,我想在浏览器中显示这个流,我希望它可以在主要浏览器和移动设备(iO 和 Android)上工作。为了实现这一点,我想在将流发送到客户端之前将其转换为服务器上的 HTTP Live Streaming (HLS)。现在我读到不久前 Apple 添加了对分段 MP4 (fMP4) 作为流格式的支持,而通常流将以 MPEG-TS 格式发送。而fMP4也是MPEG-DASH支持的格式,几年后MPEG-DASH可能会成为行业标准。

现在我的问题是,fMP4 和 MPEG-TS 的优缺点是什么?

编辑:根据 Apple 的 HLS 技术说明,直播流必须编码为 MPEG-TS 流(https://developer.apple.com/library/content/technotes/tn2224/_index.html#//apple_ref/doc /uid/DTS40009745-CH1-ENCODEYOURVARIANTS)。这是有原因的还是这些信息已经过时了?

0 投票
1 回答
926 浏览

video-streaming - 如何使视频在特定时间开始(解码)?(基本媒体解码时间)

我想制作一个视频(分段 mp4)在特定时间开始。

例如,如果分段视频片段的时间戳为 4 秒,我希望视频(fmp4)从 4 秒开始,并且在此之前没有视频。

我认为 moof/traf/tfdt atom 路径中的“基本媒体解码时间”是 fmp4 实际启动的时间,我搜索了如何更改字段但没有信息。

我的问题是,

有什么方法或工具可以实现我的需要吗?

0 投票
1 回答
592 浏览

video - 如何在碎片化 MP4 中对 h264 NAL 单元进行正确采样

拥有类型的 NAL 单元流[5 [1]+]+,如何在trun碎片化 mp4 框的样本字段中正确引用它们,以便它们正确解码和呈现,而不会卡顿?

这里的主要问题是,不是每次单个 NAL 单元映射到单个 I/P/B 帧时,通常多个 NAL 单元代表同一个帧,因此不清楚每个 MP4 样本是否应该引用每个 NAL 单元或一组与同一 I/P/B 帧相关的 NAL 单元。

如果我应该在单独的 MP4 样本中引用每个 NAL 单元,那么 DTS/PTS/CTS 呢?如果都是同一个框架,它们应该有什么不同?

如果我应该在一个 MP4 样本中引用与同一帧相关的frame_numNAL 单元组,相同 NAL 类型的连续 NAL 单元是否相同将它们定义为与同一帧相关?