问题标签 [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.
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.
ios - 使用 FFmpeg 在 iOS 上编写时将 fMP4 转码为 HLS
TL;博士
我想将 fMP4 片段转换为 TS 片段(用于 HLS),因为片段是在 iOS 设备上使用 FFmpeg 编写的。
为什么?
我正在尝试在 iOS 上实现实时上传,同时在本地保持无缝的高清副本。
我试过的
滚动
AVAssetWriter
s 每个写入 8 秒,然后通过 FFmpeg 将 MP4 连接在一起。出了什么问题- 音频和视频中有时会出现问题。我已经确定了 3 个原因。
1) 为 AAC 编码器写入的音频启动帧,从而产生间隙。
2) 由于视频帧长 33.33 毫秒,音频帧长 0.022 毫秒,因此它们可能不会在文件末尾排队。
3) Mac OS 上缺少帧精确编码,但不适用于 iOS详细信息在此处
FFmpeg 将带有原始音频的大视频 MP4 文件混合到 TS 段中。这项工作基于Kickflip SDK
出了什么问题 - 每隔一段时间就会上传一个只有音频的文件,没有任何视频。永远无法在内部重现它,但是当我们的用户没有记录他们认为自己做了什么时,这让他们非常沮丧。最终片段的准确搜索也存在问题,几乎就像 TS 片段被错误地标记了时间戳一样。
我现在在想什么
Apple 在今年(2016 年)的 WWDC 上推出了 fMP4,在那之前我并没有过多地研究它。由于 fMP4 文件可以在写入时被读取和播放,我认为 FFmpeg 也可以在文件写入时对其进行转码,只要我们推迟将字节发送到 FFmpeg 直到其中的每个片段文件完成。
但是,我对 FFmpeg C API 不够熟悉,我只在尝试 #2 中短暂使用过它。
我需要你什么
- 这是一个可行的解决方案吗?是否有人对 fMP4 足够熟悉,知道我是否真的能做到这一点?
- 我怎么知道
AVFoundation
已经在文件中写入了一个片段,以便我可以将它通过管道传输到 FFmpeg? - 如何从磁盘上的文件中获取数据,一次分块,将其传递到 FFmpeg 并让它吐出 TS 段?
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 上测试。永远不会对它们中的任何一个起作用。我们做错什么了吗?!
android - 适用于 HLS Fragmented MP4 (fmp4) 的适用于 Android 的 Exo Player Unity 插件
我正在尝试将 Google Exoplayer 集成到 Unity 中,我是 Unity 的新手。我使用 Easy Move Textures Plugin,但它不支持 HLS FMP4,我想开发该插件。我应该如何进行。??
c++ - ffmpeg和代码生成的碎片化mp4文件的区别
目前我在使用 libavformat 从代码生成碎片 MP4 文件时遇到问题。我的文件可以使用 VLC 播放,但不能在(Chrome)浏览器中流式传输(通过 WebSocket)和播放(通过 MediaSource)。(我用它来测试通过 WebSocket 将分段的 MP4 文件流式传输到浏览器)。
注意:以下文件由 Baseline profile 4 级编码。因此您应该将 MIME 类型(在 index.html 中)更改为 const mimeCodec = 'video/mp4; 编解码器="avc1.42C028"'; 能够播放它们。
我查了一下,发现我生成的Mp4文件和使用ffmpeg
tool生成的文件有点不同。
这是我所做的:
我有一个 .h264文件
第一种方法,我使用 ffmpeg 生成碎片化的 MP4 文件。
Quicktime player和VLC player都可以播放生成的文件
第二种方法,我使用 libavformat 以编程方式生成碎片 Mp4 文件
首先我初始化上下文,
codec
in 代码是AVCodecContext*
输入流的其次我实现了 onWritePacket 回调
第三,在来自 h264 文件的每个数据包上,我使用
/li>av_interleaved_write_frame
你们可以看看我的文件,看看有什么问题吗?
ffmpeg - 碎片化 MP4 中的 FFmpeg 内存泄漏
当使用 FFmpeg 控制台将 RTSP 流保存到分段的 MP4 文件时,我注意到存在少量内存泄漏。它每小时泄漏大约 3-4 MB(当每帧是一个片段和 30 fps 时)。
使用了以下命令:
这种泄漏在时间上似乎是线性的,并且与写入文件的片段数量有关。
它也可以通过 FFmpeg 库重现。
有没有人遇到过这样的事情?
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)。这是有原因的还是这些信息已经过时了?
video-streaming - 如何使视频在特定时间开始(解码)?(基本媒体解码时间)
我想制作一个视频(分段 mp4)在特定时间开始。
例如,如果分段视频片段的时间戳为 4 秒,我希望视频(fmp4)从 4 秒开始,并且在此之前没有视频。
我认为 moof/traf/tfdt atom 路径中的“基本媒体解码时间”是 fmp4 实际启动的时间,我搜索了如何更改字段但没有信息。
我的问题是,
有什么方法或工具可以实现我的需要吗?
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_num
NAL 单元组,相同 NAL 类型的连续 NAL 单元是否相同将它们定义为与同一帧相关?