问题标签 [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.
video - 叠加层中的ffmpeg延迟视频
我正在尝试覆盖 2 个视频,其中一个(“底部”上的那个),我想延迟开始(比如说 2 秒)。
因此,要么在延迟期间保持第一帧,要么在延迟期间保持黑色帧。我对哪个没有偏好。
这是我基于这个类似问题所尝试的:https ://superuser.com/questions/734234/delayed-video-overlay-using-ffmpeg
但是,这样做的结果是两个视频都会在延迟的持续时间内(在这种情况下为 2 秒)冻结第一帧。我尝试了很多替代选项,包括
- 仅在其中一个视频流上设置 PTS,而不是同时在两个视频流上设置
- 使用
-itsoffset
而不是 PTS
似乎没有任何效果。
c++ - 窥探伪终端
我想编写一个程序,可以在不影响原始终端的情况下捕获伪终端的输入/输出。它可以比作指向script
一个/dev/pts/<n>
.
用例:用户 ssh 进入我的机器并运行交互式工具。通过审计,我可以看到正在运行的命令,但我还需要查看输出。我可以听,/dev/pts/<n>
但原来登录的用户没有得到输出。
我想编写自己的程序来处理这种情况。这个问题实际上可以解决吗?如果可以,我应该在哪里寻找解决方案?
computer-vision - 关于通过appsrc将cv::Mat保存到mp4文件的问题
我想通过appsrc将CV::mat保存为MP4文件或通过RTMP转发。我实现了一个简单的代码,可以成功运行,但是得到的MP4文件不能播放。有人可以告诉我问题是什么吗?我想可能是PTS设置错误,但我不知道如何解决。提前谢谢你。
ffmpeg - ffmpeg - 使用编解码器副本搜索后pts漂移
有两个 ffmpeg 命令。第一个用于查找和复制视频块。第二个用于对视频块进行转码,应用选择过滤器以实现精确的帧匹配。
方法如下:
ffmpeg -ss <sec_from> -to <sec_to> -copyts -i <input> -map 0:v:0 -c copy chunk.mp4
ffmpeg -copyts -i chunk.mp4 -vf 'select=between(pts\,<pts_from>\,<pts_to>)' transcoded_cunk.mp4
它在大多数情况下都能正常工作。但是对于某些输入,下载的块中有一点点漂移,因此可能会丢失帧。换句话说,相同数据包的点(通过哈希比较)在输入和分块输出之间移动了几个点(在我的情况下为 0,0002 秒)。
这种pts漂移的可能原因是什么?
更新 1:那是因为 ffmpeg 在 mvhd atom 中设置 timescale=1000 所以编辑列表媒体时间开始时会失去精度。是否可以强制 mvhd 时间刻度?
更新 2:无法更改 mvhd 时间刻度,因为 ffmpeg 使用常量(MOV_TIMESCALE 1000):
更新 3: 之前讨论过的相同问题
linux - 如何使用 GStreamer 正确连接 mp4 视频
我们对 GStreamer 比较陌生。我们在基于 Linux 的定制板上运行 GStreamer 1.18.4,我们有一个管道,使用rtspsrc从 IP 摄像机接收视频并创建 10 秒的 MP4 视频剪辑。我们遇到了缺少的 PTS 问题,我们能够通过实施从 C 代码打开插值的解决方法(gst_base_parse_set_pts_interpolation on)来解决它。现在 10 秒的视频剪辑已正确录制。
我们用于创建视频的管道如下(元素 h264parse 的插值设置为 on):
现在我们面临一个问题,我们需要连接其中一些视频(假设连接 6 个 10 秒的视频以获得一个 1 分钟的长视频),并且我们的管道经常被破坏。
我们认为,当连接的视频之一具有 PTS 插值(我们实施的解决方法)时,管道会中断。
我们用来连接的管道是:
我们已经测试了多次连接同一视频的管道,在这种情况下,一切都按预期工作。连接不同文件时(有时)失败。
我们尝试了对管道的几种不同修改,但所有修改都在qtdemux元素上失败,并显示以下消息:
知道我们如何改进管道以使连接更好、更健壮,以应对 PTS 可能出现的错误/不一致吗?
gstreamer - 使用“时钟时间”而不是 GStreamer 管道的运行时间
我有两个 GStreamer 管道,一个就像一个“源”管道,将实时摄像头馈送到外部通道,第二个管道就像一个“接收器”管道,从该通道的另一端读取并输出实时视频到某种形式的水槽。
第一个管道从 a 开始videotestsrc
,对视频进行编码并将其包装在gdppay
有效负载中,然后将管道接收到串行通道中(但为了这个问题,任何可以读取的接收器都可以启动另一个管道,如写入文件接收器串行端口或 udpsink),它由下一个管道的源读取并通过 a 显示autovideosrc
:
“源”管道
“下沉”管道
注意:鉴于使用 udpsink/udpsrc 引起的延迟,该管道会抱怨时间戳问题。如果您将 udpsrc/udpsink 替换为 filesrc/filesink 到串行端口,您会看到我将要描述的问题。
问题:
既然我已经描述了管道,问题就来了:如果我启动两个管道,一切都会按预期工作。但是,如果在 30 秒后,我停止“源”管道并重新启动管道,运行时间将重置为零,导致所有缓冲区的时间戳被发送到接收器管道视为旧缓冲区,因为它已经接收到时间戳为 0 到 30 秒的缓冲区,因此另一端的播放要到 30 秒后才会恢复:
解决方案
我发现添加确实sync=false
可以autovideosink
解决问题,但是我希望找到一个解决方案,其中源将根据该页面上的图像中看到的时钟时间发送其时间戳(DTS 和 PTS)。
我已经看过这篇文章is-live
并在我的视频源上进行了实验do-timestamp
,但他们似乎没有做我想做的事。我还尝试根据系统时间手动设置缓冲区中的时间戳(DTS、PTS),但无济于事。
有什么建议么?
ffmpeg - 提取FFMPEG中每个jpeg的时间戳
我使用 ffmpeg 从网络摄像机获取 H264 流,并将视频流转换为 jpeg。Jpeg 图像不会保存到文件中,而是缓冲在节点 js 应用程序中视频)。有没有办法提取一些我可以与ffmpeg中的相机时间戳相关的时间?我搜索了很多,但一无所获。实际上要获得我使用的jpeg