问题标签 [matroska]

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 投票
2 回答
2785 浏览

gstreamer - 使用 gstreamer 将网络摄像头 jpeg 流保存到多个文件

我正在尝试将来自罗技 C920 网络摄像头的 MJPEG 流保存到多个视频文件 (matroska)。

我有这个管道:(每 60 秒 1 个 mkv 文件)

它按预期输出了几个文件,但是这些文件有错误,因此像 avidemux 这样的工具无法播放它们。mkvalidator 报告这些:

顺便说一句,使用 filesink 保存到单个文件会生成一个没有错误的 mkv 文件。

有没有办法正确保存多个 mkv 文件?任何其他容器也可以,但我无法转码(需要低 CPU 负载)并且我不能使用 raw(需要高 fps 的高清)。

我在 Ubuntu 16.04.1 上使用 GStreamer 1.8.2。

谢谢。

更新:按照以下建议,我尝试使用 splitmuxsink:

但它不起作用:文件永远不会被拆分并且会不断增长。

0 投票
2 回答
2246 浏览

python-3.x - 流式视频播放器

我需要制作一个视频服务器客户端,其中服务器以块的形式发送视频数据,客户端必须接收并显示它们。与我做过的任何项目不同,我的脑海中没有它的主要结构,因为我找不到用于显示视频的 api 或模块,这些视频可以分成几块。所有要显示的文件都是 matroska .mkv。我一直在搜索,但我能找到的只有 kivy,它确实提供视频显示,但它需要整个视频,而 gstreamer 也有同样的缺点。谁能给我一个我可以依赖的模块来显示视频?

提前致谢

0 投票
1 回答
772 浏览

video - 可以接受额外元数据的最佳视频容器

我正在开发一种软​​件,可以生成一些具有不同编解码器(H.264、MJPEG ...)的视频。我希望我的视频可以用 VLC 读取,但我希望能够在视频文件中为每一帧(例如时间戳)和全局视频(经过验证的签名)添加一些额外的信息。

我会使用 VLC 的文件,但忽略这些元信息。但是我的自定义播放器将能够读取它们并显示这些信息。

谁能告诉我哪个容器最适合这样做?

我现在正在使用 AVI,但它似乎不支持这一点。我在 Matroska 容器 (MKV) 上阅读了一些似乎能够做到这一点的部分,但我不太确定。

非常感谢

0 投票
1 回答
2207 浏览

ubuntu - 如何将两个 *.MKA 文件合并为一个?

我有下一个任务 - 有 3 个文件:没有配乐的 *.mkv 文件和两个 *.mka 曲目。我需要将它们全部合并到一个文件中(并通过 ubuntu cli 完成)。我尝试了 mkvmerge 工具,它做得很好,但它生成的视频文件有两个音轨供选择(就像电影中的不同语言),但我需要同时从两个音轨发出声音(也许作为左右频道,没关系)。我试图用谷歌搜索它 - 并没有找到任何东西。谢谢。

0 投票
1 回答
6177 浏览

ffmpeg - 使用 ffmpeg 将 TS-Stream 转换为 MKV

我正在使用 ffmpeg 3.2.7,我在将 ts 文件无损转换为 mkv 时遇到问题。源文件是使用 dumprtp 录制的转储 IPTV 流(来自 dvbstream 0.5)。

ffmpeg -i Test.ts -map 0:0 -map 0:2 -vcodec copy -acodec copy -f matroska Test.mkv

转换成功,但输出文件每隔几秒像素化一次。

当我用 MKVToolnix 转换它时,一切看起来都很好。

有没有人有解决这个问题的方法?也许有一些选项可以正确同步流?

这是一个示例输出:

谢谢

0 投票
1 回答
476 浏览

video - 将 h264 + g.711(g.722,g.726) 写入 mkv

我正在编写自己的程序来将视频和音频写入.mkv容器。我 h.264在容器中成功编写视频,Codec_id V_MPEG4/ISO/AVC但在规范中找不到 g.7xx 音频编解码器的 Codec_id?如何正确写入 g.711/g.722.mkv 容器?

0 投票
1 回答
444 浏览

c# - taglib-sharp 不标记 mkv 文件

我正在使用 taglib-sharp 将标签写入视频文件。它能够很好地将标签写入 mp4 文件,但我无法让它将标签写入 mkv 文件。我尝试了各种应用程序来查看元数据,但它们都看不到任何内容,包括 MediaInfo。

我需要做一些不同的事情来标记 mkv 文件吗?它们肯定受到支持,因为有专门用于标记它们的代码,但我找不到任何暗示我做错了什么的东西。

我像这样标记文件:

我也在使用最新版本的 taglib-sharp (2.1.0)。任何帮助将非常感激。

0 投票
0 回答
127 浏览

video - VP9 的每帧元数据

我有一个图像流,我将在 VP9 中编码并存储在像 matroska (mkv) 这样的容器中。流中的每个图像都有一个与之关联的元数据,我们可以将其假设为一个字节数组。在最终视频文件中关联每帧元数据的好方法是什么?

  1. 是否可以将此元数据存储为 vp9 编码视频流的一部分?
  2. 我应该使用 mkv 容器的字幕流作为我的元数据流吗?
0 投票
1 回答
239 浏览

xml - EBML 与 XML 有多相似?

所以,最近,我继续尝试使用 Matroska 使用的 EBML 格式。我为我设定了一个目标,即从二进制流中按顺序解析 MKV 中的字幕。

我知道要使用的集群、块和轨道 ID,并且能够毫无问题地获得特定的字幕轨道 ID。

当尝试解析文件的其余部分时,问题就开始了。我知道字幕分散在块内的文件周围。这些块嵌套在一个块组内,块组又在一个集群内。集群有一个通用时间戳,块包含该时间戳的偏移量。

问题是......我似乎无法始终如一地找到字幕。

目前我正在做最简单的事情(这绝对不是最优的,绝对不准确),我解析每个集群、每个块组,然后是每个块,并检查块是否包含轨道 ID。然后我将该块中的所有二进制数据转换为字符串(是的)。然后我期望的是,垃圾中的某处是实际的字幕,因为它是在该块中编码的二进制 UTF-8。

现在正如我所说,我使用集群 ID、块组 ID 和块 ID 拆分二进制流。但我的第一个“想法”是,到底如何检测到集群的结束、块组的结束或块的结束?

因此,我开始阅读更多关于 EBML 的内容(我完全没有准备好仅使用 matroska 网站上的 EBML ID 表)。我发现 EBML 在通过定义标签等存储数据的方式上应该类似于 XML。我想知道,如果它类似于 XML,而 XML 使用 <tag></tag>格式来表示字段的开始和结束,EBML 是否也这样做?什么定义了集群的结尾或 EBML 中的任何其他字段?集群 ID 的第二次出现可能是该集群的 END 吗?下一个集群是否从以下集群 ID 开始,并且其间的所有内容都可能是其他东西?还是我现在想得很努力?

我可能错过了文档中的某些内容,但我似乎无法找到明确的答案。但是,我将自己对此进行测试,但如果这不起作用,我希望找到一个可以让我在这里找到正确方向的答案。

提前致谢!

0 投票
1 回答
3993 浏览

ubuntu - ffmpeg 音频 - 视频同步问题(音频先于视频) - 使用 x11grab 进行屏幕录制时

在使用以下 ffmpeg 选项进行屏幕录制时,我始终会在视频之前获得音频,延迟大约为几秒

ffmpeg 命令:

ffmpeg -y -f x11grab -thread_queue_size 1024 -draw_mouse 0 -video_size 1920x1080 -i :0 -f pulse -thread_queue_size 1024 -i default -c:v libx264 -threads 0 -preset faster -c:a flac -async 1 -vsync 1 -crf 30 -crf_max 33 -f matroska output.mkv

ffprobe 输出如下:

我什至尝试过使用avoid_negative_ts标志,但它对同步问题没有帮助。

操作系统:Ubuntu-18.04

ffmpeg 版本:3.4

更新:(使用 ffmpeg-4.0) 我已经将此过程分成两部分并尝试如下所示(质量更好,但音频/视频同步仍然是一个问题)

STEP-1 在屏幕录制过程中使用的 CPU 更少,但音频仍然领先于视频。我正在使用的显示器是xvfbSTEP-1 中的一个(因为这是云端的无头机器)

另外,我-filter_complex aresample=44100 -vsync 1在 STEP-1 中尝试过标志,但无济于事。

有人可以帮忙吗!

更新 2:(来自 git master 的最新 ffmpeg)

有效 !感谢@llogan 的有用评论。