问题标签 [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 回答
1041 浏览

ffmpeg - 如何生成与 fmp4 兼容的文件 M3U8?

我有一个使用 MPEG-Dash 协议的流媒体解决方案,我想在 hls 上为 IOS 设备公开相同的文件。

我读到 fmp4 现在与 hls 兼容,所以我认为可以这样做

当我使用此命令生成可能的 mpd 文件时:

MP4Box -dash 33000 -frag 33000 -out video.mpd -profile dashavc264:onDemand original.mp4#audio original.mp4#video

我想要的是不重复文件,并将我生成的 Dash 文件与 HLS 清单文件一起使用。

0 投票
1 回答
199 浏览

mp4 - AAC 音频文件播放速度比正常速度快

我从设备中对原始 PCM 数据进行采样,通过 libfaac 将其编码为“.aac”格式(ADTS 格式)的音频文件,当我以 16KHZ 或 41KHZ 对其进行采样时,编码的“.aac”文件播放速度比正常速度快。什么原因?

参数配置如下:

0 投票
0 回答
340 浏览

ios - iOS - 转换为 fmp4(从 mp4/m4a)并流式传输

所以我没有找到任何关于这个问题的代码。我已经录制了一个 mp4 文件(audioFile.mp4),现在我想通过套接字流式传输它,但我在转换时遇到了问题。我知道有 ffmpeg(https://www.ffmpeg.org/)平台,但我没有看到任何代码。任何想法都将不胜感激。

0 投票
1 回答
264 浏览

mp4 - fmp4文件的哪个框包含与普通MP4文件类似的CTTS信息?

我通过模仿将MP4文件转换为TS文件的代码将fmp4文件转换为TS文件。我遇到了一个问题:MP4文件中有CTTS框,而fmp4文件中没有CTTS框。计算视频 PTS 时需要 CTTS 内部的信息(PTS = STTS + CTTS)。我该怎么办?我的 h264 框架没有 B 框架。我需要 CTTS 盒子吗?

0 投票
1 回答
385 浏览

ffmpeg - ffmpeg 创建一个 mp4 流,导致 Firefox 出错

我即将在 HTML5 视频元素中播放 fmp4。

我成功创建了一个 websocket 来将 ffmpeg 的输出传递给 MSE。

但是,当我尝试在 Firefox(72.0.1,64 位,在 Ubuntu 18.04LTS 下)中打开页面时,总是会导致错误:

这是我的 FFMPEG 行:

这就是服务器端 Java(使用 Tomcat 引擎)解析此命令的输出的方式(这可能效率低,但现在还可以):

然后客户端是一个 websocket-MSE,就像这个repo一样。

结果:

  1. 当我调试服务器端时,在sendBinary调用之前有一个断点,我在让服务器端运行之前等待几秒钟,然后在浏览器中显示第一张图片,然后立即进入上面的错误。

  2. 如果我运行服务器端(没有任何断点),浏览器不显示任何图片,它立即进入错误。

Invalid Top-Level box错误消息后面总是跟着 (a) 随机垃圾字符。

这应该工作的证据在第 1 点。如果我在让数据滚动到客户端之前等待一段时间,它可以在达到该错误之前解码 1(或者可能更多帧)。

这可能是我的 ffmpeg 命令行错误。

但是我真的找不到关于这个主题的任何好的资源(只找到那些与旧版本的 Firefox 相关的资源)。

更新1

这是同一命令创建 mp4 文件而不是管道时的 FFMPEG 日志:https ://pastebin.com/Gjq2vxeT

这是带有错误框的详细 Firefox 日志:

请注意,当我执行第 2 点中标记的场景(无断点运行)时,顶级框始终为“f”。

更新2:

以下是 ffmpeg 的当前输出(前 128 项使用数字和字母数字表示):https ://pastebin.com/DeJMfNYs

有趣的是前 4 个字节对我来说似乎无效。但是,从 byte4(第 5 个字节)开始,似乎还可以(“ftyp”)。

你能确认一下吗?

0 投票
1 回答
350 浏览

javascript - 使用 MP4box.js 和 onSegment 回调不被调用

基本问题:在浏览器中显示 H264 直播流。

解决方案:让我们将其转换为分段的 mp4 并通过 websocket(或 XHR)逐块加载到 MSE 中。

听起来太容易了。但我想用纯 JS 在客户端进行碎片化。

所以我正在尝试使用MP4Box.js。它在其自述页面上声明:它有一个演示:“一个执行即时碎片的播放器”。

这就是我需要的东西!

然而,应该提供 MSE 的 onSegment 回调根本不会被调用:

现在把它放到一个 HTML 文件中会在 JavaScript 控制台中产生这个结果:

但之后什么也没有发生。为什么这里没有调用 onSegment?(websocket-server 服务的 h264 文件可以在 VLC 中播放 - 但它不是碎片化的)

0 投票
0 回答
40 浏览

python-3.x - 如何从 web api 结果播放实时 fmp4 流

我正在处理一个示例脚本,它可以从 HTTP 服务器接收 fmp4 流或 mpd xml 响应。我可以使用 requests.get 检索 mpd 数据,并且不用担心它会返回。如果我对 fmp4 使用带有 stream = True 的 requests.get,脚本就会挂起 - 我猜它正在接收流并且它永远不会结束。

我想做的是获取 fmp4 流或 mpd xml 数据,并能够将流显示给观看的人。如果可能,首选是使用 fmp4 流而不是 mpd 文件,但最终都可以使用。

Python 3.8 中有没有办法做到这一点?显示视频流。如果是这样,怎么做?

GET 网址如下所示:

*** baseURL 就是https://localhost:8443/api/

*** 格式参数是您选择 fmp4 或 mpd 作为请求输出的位置

任何帮助,将不胜感激。我看过使用 VLC 和 FFMPEG 来处理输出,但我没有任何成功。

干杯

青蛙

0 投票
2 回答
398 浏览

javascript - 如何将 Shaka Player 与通过 xhr 或 websocket 到达的原始 mp4 视频数据一起使用?

我知道如何给Shaka Player一个文件或 mpd 从互联网播放。

但是,如何将原始数据从客户端 JavaScript 推送到它?我找不到任何东西,也许这是不可能的?

0 投票
0 回答
351 浏览

firefox - Firefox 无法播放我碎片化的 MP4 文件

我正在提供这个由 ffmpeg 创建的碎片化 mp4 文件。

这是客户端代码:

视频文件是 websocket 上的服务器。

该解决方案适用于(至少在 Windows 10 下):

  • Chrome 浏览器版本 80.0.3987.116(官方构建)(64 位)
  • 微软边缘44.18362.449.0
  • Internet Explorer 11.657.18362.0
  • 歌剧66.0.3515.103

但是 in 不起作用:

  • Firefox 73.0.1(64 位)(Windows 10 下)
  • Ubuntu 18.04 下的Firefox 73.0(64 位)

该视频未在 Firefox 浏览器中播放,浏览器声称Media resource blob:http://abcdef could not be decoded.

如何调试 Firefox 以查看问题所在?

0 投票
0 回答
1085 浏览

ffmpeg - 使用ffmpeg指定绝对hls_fmp4_init_filename时如何修复m3u8中的EXT-X-MAP:URI?

今天我发现这篇博文教我关于碎片化的 mp4s (fmp4s)。

使用ffmpeg 文档,我取得了很大的进步。

我运行这个:

然后我在我的网页上使用hls.js来尝试显示视频。

最初,它不会加载。

但是,如果在对 list_1080p.m3u8 进行此编辑后刷新页面,我可以正确加载视频:

更改自:

#EXT-X-MAP:URI="/myproject/public/storage/000000002/init.mp4"

至:

#EXT-X-MAP:URI="init.mp4"

如何更改我的 ffmpeg 命令,以便它知道保存 init.mp4 的绝对路径,但也知道在 m3u8 中只写入init.mp4没有任何路径的文件名?

(我试过-hls_fmp4_init_filename init.mp4在没有绝对路径的情况下使用,但是它会在根目录下创建 init.mp4,这也不起作用。我需要每个视频的 init.mp4 都在它自己的文件夹中。)