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

file - 将 matroska 写入仅附加流

我需要将一个matroška视频文件写入仅支持附加操作的流(不是网络流,输出是用于离线播放的单个 MKV 文件)。现在我正在使用 ffmpeg 的 libavformat 进行复用,但生成的视频文件根本不可搜索(在播放器中)。

通过matroška规范,我想出了一种方法来创建一个可搜索的(在播放器中)文件,只需一个(文件)搜索操作:

文件写入后,我需要返回 SeekHead 1 并使用 SeekHead 2 和 Cues 的位置对其进行更新。

我的输出文件很容易达到数十 GB,因此在内存中缓冲整个内容不是一种选择。

真的没有办法在不寻找输出文件的情况下创建 MKV 吗?

0 投票
0 回答
112 浏览

gstreamer - 有没有办法用 gstreamer 在 matroska 文件中写入 h264 编码的视频流?

我必须从 gstreamer 管道获取处理后的视频,基于 h264 或 h265 alg 对其进行压缩。然后将其写入存储。这个项目有一些问题需要处理:

  1. 保存的视频必须可以通过任何标准视频播放器播放,例如 vlcplaye、windows 媒体播放器、kmplayer 和 ...
  2. 如果由于任何原因目标文件无法正常关闭(例如断电),则不应丢失整个文件,并且保存的视频应该可以播放,直到问题发生。我对这个项目的解决方案具有这些约束,是一个带有 gstreamer 管道的 opencv 编写器,如下所示:

该解决方案将视频流拆分为多个文件,但需要将整个视频保存在一个文件中。有没有人可以提供更好的解决方案?非常感谢您的帮助。

0 投票
1 回答
59 浏览

video - MPEG-4 或 Matroska 是否可以实现可变分辨率?

电影包含具有不同纵横比的部分变得越来越普遍。例如,电影《黑暗骑士》有时是 16:9 全画幅,有时是 2.40:1 加信箱。在 16:9(甚至 4:3)屏幕上观看时这很好,但如果您尝试在 2.40:1 屏幕上观看,您会同时看到水平和垂直信箱。极不受欢迎。

目前我使用的是 MPC-HC,它具有实时分析视频、检测信箱和动态裁剪视频的功能。这工作得很好,但它是一种丑陋的解决方案。是否有任何视频格式允许像图​​像分辨率这样的元数据在整个视频中发生变化?

0 投票
2 回答
1782 浏览

google-chrome - MediaRecorder 没有生成有效的 WebM 文件

MediaRecorder.isTypeSupported()返回true'​​video/webm'、'video/webm;codecs=avc1' 和 'video/webm;codecs=vp9'。

但是,只有 mimeType='video/webm;codecs=vp9' 会产生有效的 webm 文件 ('video/webm;codecs=vp9,opus')。

将 mimeType 设置为 'video/webm' 和 'video/webm;codecs=avc1' 会导致 'video/x-matroska;codecs=avc1,opus' 文件不是有效的 webm 视频。

这是 MediaRecorder 错误、Chrome 错误还是我遗漏了什么?\

软件:Chrome 85、MacOS 10.15。我没有在 Windows 或 Linux 上尝试过。

0 投票
0 回答
298 浏览

video-streaming - Gstreamer:无法通过 gst-rtsp-server 完成与流式传输并行录制的视频

我正在开发一个 Gstreamer (v1.14.4) 应用程序,我在其中通过 RTSP 提供实时视频流,并在设备上以不同的比特率记录它。为了提供 RTSP 流,我使用 gst-rtsp-server。为了同时进行流式传输和录制,我在提供给 RTSP 服务器的 lauch 行中有 atee和 a以及带有 a和 a的第二个管道:proxysinkproxysrcfilesink

RTPS管道:

录制管道:

当客户端连接时,我在 RTSP 媒体工厂的"media-configure"回调中链接两个代理元素。流式传输和写入文件都有效,除了文件不可搜索,我认为是因为它没有正确完成。

当我通过调用以下函数(是一个包含指向我需要的所有 Gstreamer 元素的指针的结构)获得 a"teardown-request"时,我试图完成它:GstRTSPClientCustomData

这里的一切都按预期工作,并打印了“got EOS on bus”。但是,该文件不可查找。除了上述功能中显示的内容外,我还尝试过:

  • 不是将 EOS 发送到 filesink 的 sinkpad,而是发送到 filesink 元素本身。然后我没有在公共汽车上收到消息(gst_bus_timed_pop_filtered无限期挂起)
  • 不是将 EOS 发送到文件接收器,而是发送到整个记录管道。同样,总线上没有 EOS。
  • 在确保记录管道处于播放状态之后尝试上述所有操作。这没什么区别。

我之前已经成功写入正确完成的视频文件,但从未与 gst-rtsp-streamer 结合使用。我怀疑问题出在那儿,可能是因为在我尝试完成录制时,录制管道没有从流管道中获取新数据。

我究竟做错了什么?

谢谢你的帮助。

0 投票
2 回答
2126 浏览

ffmpeg - 无法写入时间戳未知的数据包 av_interleaved_write_frame():参数无效

我正在尝试将带有此输出的 .ts 文件转换为 mkv:

为此,我使用以下命令:

但是转换失败并出现以下错误:

我应该怎么做才能解决这个问题?我已经尝试-fflags +genpts在开始时添加,但无论如何它都失败了。

编辑:我确实通过使用 MKVToolNix 来解决它。

0 投票
0 回答
27 浏览

google-chrome - 在chrome webm文件中录制的文件没有播放,来自同一网站的firefox录制是可以的

我有一个音频文件是从无法正常工作的流中录制到 Chrome 中的。来自同一网站的 Firefox 中录制的音频工作正常。文件格式是 webm,但实际上是 MKA(Mime 类型 - 音频/x-matroska)。如何修复 Chrome 录制的文件?

1.webm https://drive.google.com/file/d/1byRLqrwA823qVJDP_d4sIdth7wYt76SH/view?usp=sharing是在 Chrome 中下载的损坏文件,a.webm https://drive.google.com/file/d/13371VenfF9JRR- zSTp3IVRpBnkt54F8s/view?usp=sharing是从同一网站在 Firefox 中下载的工作文件

0 投票
0 回答
195 浏览

ffmpeg - ffmpeg 禁用默认字幕

我有很多 mkv 文件,我需要在其中选择音频/字幕流并将收藏夹设置为默认值:

使用此命令,我可以选择我喜欢的音轨并将第一个音频设置为默认音频并适用于音频但不适用于字幕

我努力了:

但在所有情况下,流 5(字幕)始终是默认的。我喜欢复制多个字幕并删除所有默认值。

有一种方法可以禁用所有字幕吗?

谢谢 !!

0 投票
1 回答
49 浏览

gstreamer - 在 vlc 上回放视频时 matroskamux 时间栏不起作用

我使用 matroskamux 成功地将视频流保存在 .mkv 中,但是当我使用 vlc 打开它时,我无法使用时间栏推进视频。你有什么主意吗?我将偏移量添加到零,但没有任何变化。

0 投票
0 回答
47 浏览

ffmpeg - 如何修复 ffmpeg 错误 Unknown-sized element at 0x16cbc in parent with final size

我使用 rtc 录制库在浏览器中录制了几个视频。现在我正在尝试使用 ffmpeg 将其从网络摄像头转换为 mp4 所有视频都已正确转换,但在 59:59 秒出现错误 [matroska,webm @0x55691a4b46c0] 文件在 pos.512263309 (0x1e88848d) 中过早终止

如果您尝试从大于 59:59 的时间开始转换文件,ffmpeg 会给出这些错误

[matroska, webm @0x55691a4b46c0] 大小有限的父元素内 0x16cbc 中未知大小的元素 [matroska,webm @0x55691a4b46c0] 文件在 pos.512263309 (0x1e88848d) 中过早终止

文件本身在浏览器中成功复制

我使用命令 ffmpeg-i/media/hard disk/video streaming/1635262018868.mp4/media/hard disk/video streaming/test.mp4

ffmpeg-ss 3650-i/媒体/硬盘/视频流/1635262018868.mp4/媒体/硬盘/视频流/test.mp4