gpt4 book ai didi

video - 如何使用 Gstreamer 制作可搜索的视频

转载 作者:行者123 更新时间:2023-12-02 04:02:40 25 4
gpt4 key购买 nike

我正在尝试使用 Gstreamer 制作一个可搜索的视频,经过多次研究,我发现 matroskamux 和 filesink 插件可以做到这一点,但它不起作用。

这是我的管道:

gst-launch-1.0 videotestsrc ! x264enc ! h264parse ! matroskamux ! filesink location=test.mkv

我创建了一个 5 秒的视频:

^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:05.989791758
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

当我从 gstreamer 运行发现应用程序时:

user@IM00343:~/Desktop$ gst-discoverer-1.0 test.mkv 
Analyzing file:///home/user/Desktop/test.mkv
Done discovering file:///home/user/Desktop/test.mkv

Topology:
container: Matroska
video: H.264

Properties:
Duration: 0:00:00.566333333
Seekable: yes
Tags:
container format: Matroska
video codec: H264
minimum bitrate: 989280
bitrate: 1045608
maximum bitrate: 989280

时长为0:00:00.566333333,无论真实视频时长如何,该值都是相同的!并且该视频无法搜索。

我做错了什么?

最佳答案

您需要将 EOS(流结束)事件发送到管道,以允许元素正确完成其流。如果没有这个,复用器将无法正确完成文件并写入只有在处理完所有内容后才能写入的索引和 header 。像中断一样将管道设置为 NULL 将立即停止一切,并且复用器将使文件未完成。

在 gst-launch 中,-e 标志应使其在停止管道之前推送并等待 EOS。在代码中,如果您想中断录制,您需要自己发送事件,然后等待 GstBus 上接收到 EOS。

某些输入(例如文件)有结束时间。在这些情况下,源元素通常会在完成读取时发送 EOS 本身。对于从理论上无限的流读取的源(例如相机),情况并非如此。

关于video - 如何使用 Gstreamer 制作可搜索的视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41140410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com