GstH264NalParser *parser = NULL;
GstH264NalUnit nal_unit = { 0 };
parser = gst_h264_nal_parser_new();
GstH264ParserResult parser_result = gst_h264_parser_identify_nalu(parser,
buffer_map.data,
0,
buffer_map.size,
&nal_unit); /* This returns GST_H264_PARSER_NO_NAL */
这是为什么呢?除非 data
不应该来自 GstMapInfo*
而是其他一些数据结构。可能是来自 GstSample
的 GstStructure
指针?
上下文
编写一个小程序来解析来自 Gstreamer 的 videotestsrc 和 appsink 插件的 h.264 编码视频。到目前为止,还不错。
在我的管道中使用(坏的)x264enc 插件转换流,然后将其送入 h264parse,然后送入 appsink。很确定 h264parse 是一个不必要的步骤,但无论有没有我得到的结果都是一样的。
确信我使用不正确的结构将数据读入 NALU 解析函数。
如果您认为传入的数据是好的,那么您很可能需要做一个小的转换,因为在 h264 流中有几种不同的编码模式。
我不确定这是为什么,但有时您需要进行一些小的转换。这就是 h264parse
元素的用途。
垫模板:
SRC 模板:'src'
可用性:总是
能力:
视频/x-h264
解析:真
流格式:{ avc、avc3、字节流}
对齐方式:{au,nal}
因此,在您的管道中,您可以尝试对流格式和 alignmnet 选项进行排列,例如:
gst-launch videotestsrc ! ……! h264解析! video/x-h264,stream-format=byte-stream,alignment=nal !应用接收器
我是一名优秀的程序员,十分优秀!