问题标签 [pts]

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 回答
536 浏览

encoding - 为什么在编码为 H264 时会丢失 PTS 信息?

我有一个视频文件,带有这个视频流:

ffmpeg -i original.avi

流 #0:0:视频:h264(主)(H264 / 0x34363248)、yuv420p(电视、bt709、渐进式)、1920x1080 [SAR 1:1 DAR 16:9]、4204 kb/s、59.94 fps、59.94 tbr、 59.94 TB,59.94 TB

我可以通过运行获取 PTS 信息:

ffprobe -v 0 -of csv=p=0 -select_streams v -show_entries packet=pts_time original.avi

我逐行得到每一帧的PTS:

现在我需要将视频编码为 H264 并且之后能够获得相同的 PTS 信息,所以我使用了:

使用此视频流:

流 #0:0:视频:h264(高)(H264 / 0x34363248)、yuv420p(渐进式)、1920x1080 [SAR 1:1 DAR 16:9]、2289 kb/s、59.94 fps、59.94 tbr、59.94 tbn、119.88待定

但是,当我尝试从中获取 PTS 信息时,output.avi我只得到:

为了保留 PTS 信息,我应该在命令中进行哪些更改?

0 投票
1 回答
120 浏览

javascript - pts.js 'NS_ERROR_NOT_AVAILABLE:' 尝试将图像用于粒子时出错

我想为 pts.js 中的粒子加载相同的图像。

当我尝试使用资产文件夹中的本地图像时,我在控制台中收到错误“NS_ERROR_NOT_AVAILABLE:”。

我在某处读到这可能是由于图像在加载之前就尝试使用...

我也尝试过使用指向其他图像而不是本地图像的外部链接,这很有效。所以不确定我的本地文件发生了什么。

编辑:

我只是在 chrome 而不是 firefox 上尝试了这个,我收到了一条新的更详细的错误消息。

“未捕获的 DOMException:无法在‘CanvasRenderingContext2D’上执行‘drawImage’:提供的 HTMLImageElement 处于‘损坏’状态。” 在 pts.min.js:6 中。

仍然不确定到底出了什么问题。

0 投票
1 回答
623 浏览

ffmpeg - 如何通过 ffmpeg (C++) 获取 rtsp-sesson 的开始时间?start_time_realtime 始终等于 -9223372036854775808

我正在尝试通过 rtsp 获取帧并计算其真实世界的时间戳。我以前为此使用过 Live555(presentationTime)。

据我了解,ffmpeg 不提供这样的功能,但提供了读取每一帧的相对时间和流的开始时间的能力。在我的情况下,帧时间戳(pts)正常工作,但流开始时间(start_time_realtime)始终为 -9223372036854775808。

我正在尝试使用此 Q 中的简单示例:https ://stackoverflow.com/a/11054652/5355846

值不变。无论代码中的位置如何

***** -9223372036854775808 | 0 | 4120 | 40801 车架:103

我究竟做错了什么?

0 投票
1 回答
870 浏览

javascript - hls.js 将视频 PTS 从单位转换为秒

短的

我想使用 PTS 向流媒体视频播放器添加时间转换,但不知道应该如何正确地进行从单位到秒的转换。

我正在尝试使用hls.js制作一个简单的流媒体视频播放器,我想在浏览器播放器中显示实际流媒体开始时间和用户连接到流媒体的时间之间的差异。例如 - 一个流媒体视频持续 2 分 15 秒,如果现在用户打开我的播放器,它应该显示的不是“0 - 36”(36 - 是几个已经上传的片段的时间),而是“2:15 - 2:51 ”。简单地说,我想为视频播放器添加一个时移。由于它是 MPEG-ts,它在连接到 90khz 时钟的 PES 标头中包含 PTS。在 hls.js 中已经完成了从数据包中获取 PTS的工作。因此,在检查和按位操作之后,应该很容易设置新的 var 等于 PTS并将新 var 从单位转换为秒。还有我的问题 - 我不知道如何以正确的方式进行转换。我试图将得到的 PTS 划分为 90000,但结果值大于 1.46 秒的视频时间,并且随着视频持续时间的增加而增长(我检查了长达 2.5 小时的视频,在视频结束时它比实际视频时间长了大约 6 秒)。在这种情况下,我认为由于除法,我总是会在 1 秒内得到一个大于真实值的值 - 可以通过在代码中减 1 来设置拐杖。但这并不能解决增长时间的问题。

从一开始它就给了我:

PTS = 132000

接下来我尝试将其除以 90khz:

132000/90000 = 1,466666667 sec

请帮助我,我做错了什么?

0 投票
2 回答
490 浏览

ffmpeg - 当输入是实时相机设备时,使用输入帧率选项(在 FFmpeg 中)时的预期行为是什么?

据我所知,Framerate选项的使用应仅用于输入文件(如图像序列或可能没有定义 PTS 的视频文件)。

但是,如果我在我的网络摄像头上运行以下命令,视频仍然可以正常播放(至少从我检查到现在的几个小时内)。为什么这仍然有效?我应该期望会出错吗?(也许稍后,在几个小时或几天的流媒体之后)

编辑:

在运行了更多测试之后,似乎当我运行这样的命令时,蒸汽在几个小时后卡住了:

但是,如果我像这样运行命令,它会运行几天:

但我不明白为什么...

0 投票
1 回答
688 浏览

streaming - 如何通过 RTMP 为 h264 发送 PTS

我做了很多搜索,但无法获得足够的信息来了解这一切是如何真正结合在一起的。

所以我知道 H264 帧包含一些关于帧的 SPS 和 PPS 信息,您可以从中提取帧速率。但是PTS实际上是在PES中编码的?那么 PES 是如何在 RTMP 中传输的呢?

我正在使用 librtmp 和 RTMPServer 来推送 h264 帧。服务器是否只是将相同的数据包发送到我使用 librtmp 发送的客户端?RTMP 有它自己的时间戳和帧率,它似乎在它发送的数据包中。那么 RTMP 客户端是否不需要从 h264 帧等中提取帧率而只依赖于 RTMP 数据包数据?

如果有人能解释这一切如何协同工作,那就太好了。我最终会尝试发送有用的时间信息,这些信息可以在客户端解析为绝对时间。

0 投票
0 回答
1152 浏览

rtmp - RTMP 中如何包含 flv 格式?

我正在使用wireshark来检查数据包,但我对RTMP流媒体中究竟遵循flv格式感到困惑。FLV doc 将标签指定为:标签类型、数据大小、时间戳、timestampExtended、streamID、VideoTagHeader,但我得到了

流式传输时,FLV 时间戳是否仅使用 RTMP 时间戳?因此不遵循大端格式而是使用 RTMP 扩展时间戳?

那么 FLV 容器究竟是如何在 RTMP 视频流中使用的呢?

0 投票
1 回答
521 浏览

ffmpeg - 关于H.264中PTS和DTS关系的问题

为什么H264没有B帧时PTS = DTS?

为什么 DTS 并不总是小于 PTS,因为解码需要时间,即使 PTS - DTS 是一个很小的数字?

我认为帧必须在播放前解码还是我的理解有问题?

0 投票
1 回答
249 浏览

python - 如何使用python将每N行CSV文件导入脚本

我在 fusion360 中使用了一个名为 importsplinecsv 的脚本,我想知道是否可以修改脚本,使其每 10 行导入一行?因为正在导入的行数非常大且臃肿。

如果我能得到一些帮助,那就太棒了。

这是文字

作者-Autodesk Inc.

说明-从 csv 文件导入样条

导入 adsk.core、adsk.fusion、回溯导入 io

def run(context): ui = None try: app = adsk.core.Application.get() ui = app.userInterface # 获取活动设计中的所有组件。product = app.activeProduct design = adsk.fusion.Design.cast(product) title = 'Import Spline csv' if not design: ui.messageBox('No active Fusion design', title) return

0 投票
1 回答
1379 浏览

ffmpeg - 26:30:02.81 录制时间后的非单调 DTS

我录制了一个 hls 流,在 26:30:02.81 之后出现了消息:

此时没有更多视频写入文件,但 ffmpeg 没有停止。如果我在 30 小时后手动停止它,则文件只有 26 小时 30 分钟长。

如何重现: