- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要将 klv 元数据复用到 h264 流中。我已经创建了应用程序。但是只有在插入 klv-data 时才会播放流。当我停止推送 klv-data 时,整个流都会停止。通过 mpegtsmux 复用异步 klv 数据的正确方法是什么?
Klv-data 需要插入到以下工作管道中:
v4l2src input-src=Camera ! videorate drop-only=true ! 'video/x-raw, format=(string)NV12, width=1920, height=1088, framerate=25/1' ! ce_h264enc target-bitrate=6000000 idrinterval=25 intraframe-interval=60 ! queue ! mpegtsmux alignment=7 ! udpsink host=192.168.0.1 port=3000 -v
appSrc = gst_element_factory_make("appsrc", nullptr);
gst_app_src_set_caps (GST_APP_SRC (appSrc), gst_caps_new_simple("meta/x-klv", "parsed", G_TYPE_BOOLEAN, TRUE, "sparse", G_TYPE_BOOLEAN, TRUE, nullptr));
g_object_set(appSrc, "format", GST_FORMAT_TIME, nullptr);
gst_bin_add(GST_BIN(pipeline), appSrc);
gst_element_link(appSrc, mpegtsmux);
void AppSrc::pushData(const std::string &data)
{
GstBuffer *buffer = gst_buffer_new_allocate(nullptr, data.size(), nullptr);
GstMapInfo map;
GstClock *clock;
GstClockTime abs_time, base_time;
gst_buffer_map (buffer, &map, GST_MAP_WRITE);
memcpy(map.data, data.data(), data.size());
gst_buffer_unmap (buffer, &map);
GST_OBJECT_LOCK (element);
clock = GST_ELEMENT_CLOCK (element);
base_time = GST_ELEMENT (element)->base_time;
gst_object_ref (clock);
GST_OBJECT_UNLOCK (element);
abs_time = gst_clock_get_time (clock);
gst_object_unref (clock);
GST_BUFFER_PTS (buffer) = abs_time - base_time;
GST_BUFFER_DURATION (buffer) = gst_util_uint64_scale_int (1, GST_SECOND, 1);
gst_app_src_push_buffer(GST_APP_SRC(element), buffer);
}
GstEvent* stream_start = gst_event_new_stream_start("klv-04");
gst_event_set_stream_flags(stream_start, GST_STREAM_FLAG_SPARSE);
GstPad* pad = gst_element_get_static_pad(GST_ELEMENT(element), "src");
gst_pad_push_event (pad, stream_start);
diff --git a/libs/gst/base/gstcollectpads.c b/libs/gst/base/gstcollectpads.c
index 8edfe41..14f9926 100644
--- a/libs/gst/base/gstcollectpads.c
+++ b/libs/gst/base/gstcollectpads.c
@@ -1440,7 +1440,8 @@ gst_collect_pads_recalculate_waiting (GstCollectPads * pads)
if (!GST_COLLECT_PADS_STATE_IS_SET (data, GST_COLLECT_PADS_STATE_WAITING)) {
/* start waiting */
gst_collect_pads_set_waiting (pads, data, TRUE);
- result = TRUE;
+ if (!GST_COLLECT_PADS_STATE_IS_SET (data, GST_COLLECT_PADS_STATE_LOCKED))
+ result = TRUE;
}
}
}
最佳答案
这是一个有点旧的线程,但是,
但根据我的经验,如果 appsrc 和 muxer 之间没有队列,您将得到这种行为。我会改变你的:
gst_element_link(appSrc, mpegtsmux);
gst_element_link(appSrc, appSrcQueue);
gst_element_link(appSrcQueue, mpegtsmux);
do-timestamping
的属性。当它被设置为
TRUE
我们有更好的体验。
gst-inspect
工具来查看每个元素有哪些选项。
关于gstreamer - mux klv 数据与 h264 由 mpegtsmux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34294755/
如何解析 KLV 数据?下面有一些代码。我想使用 klv 元数据制作 map 。但是如何呢? 我知道经纬度在klv的第13和14键。但是我如何使用它们并制作 map 。 ILMMpgDmx *CMai
是ffmpeg的元数据,也有描述: http://wiki.multimedia.cx/index.php?title=FFmpeg_Metadata 还支持 MISB 标准无人机元数据 601.5
我正在尝试解析来自外部摄像头的 stanag 4609 klv 流。 首先,我试图计算流中接收到的高度值。 根据 stanag 4609 文档,该值为 2 个字节长,以英尺为单位,表示为 float
我需要将 klv 元数据复用到 h264 流中。我已经创建了应用程序。但是只有在插入 klv-data 时才会播放流。当我停止推送 klv-data 时,整个流都会停止。通过 mpegtsmux 复用
我需要使用 ffmpeg C++ API 对 mpegts 视频进行编码。输出视频应有两个流:第一个应为 AVMEDIA_TYPE_VIDEO 类型;第二个应为 AVMEDIA_TYPE_DATA 类
将 KLV 字符串拆分为键、长度、值作为元素的列表/元组的更有效方法是什么? 为了添加一点背景,前 3 位数字作为键,接下来的 2 位表示值的长度。 我已经能够使用以下代码解决该问题。但我不认为我的代
目前我正在使用 libav* 对 H.264 视频进行编码。我想将 KLVPackets 添加到比特流,但不知道在哪里实现它。 avcodec 中有一个结构,但我不确定如何将它写入帧元数据 typed
我有一个包含 klv 元数据的 mp2 流。我使用 ffmpeg 命令行将 klv 存储在一个文件中: ffmpeg -i input.mpg -map data-re -codec copy -f
我是一名优秀的程序员,十分优秀!