gpt4 book ai didi

h.264 - gstreamer 的 h264parse 到底做了什么?

转载 作者:行者123 更新时间:2023-12-05 04:37:50 34 4
gpt4 key购买 nike

我对 h264parse 的真正作用感到困惑。

我用这个命令测试过:

使用h264parse:

gst-launch-1.0 videotestsrc num-buffers=10 ! x264enc ! h264parse ! avdec_h264 ! videoconvert ! autovideosink

没有h264parse:

gst-launch-1.0 videotestsrc num-buffers=10 ! x264enc ! avdec_h264 ! videoconvert ! autovideosink

没有区别,两者都可以正常工作。

然后我尝试将h264保存到文件中然后打开它。

保存到文件中:

gst-launch-1.0  videotestsrc num-buffers=10 ! x264enc ! filesink location=videotestsrc.h264

用h264parse打开它,它工作正常,我可以看到视频:

gst-launch-1.0 filesrc location=videotestsrc.h264 ! h264parse ! avdec_h264 ! videoconvert ! autovideosink

但是如果我不使用 h264parse 打开它:

gst-launch-1.0 filesrc location=videotestsrc.h264 ! avdec_h264 ! videoconvert ! autovideosink

它不起作用,错误信息是这样的:

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/avdec_h264:avdec_h264-0: GStreamer error: negotiation problem.
Additional debug info:
gstvideodecoder.c(2448): gst_video_decoder_chain (): /GstPipeline:pipeline0/avdec_h264:avdec_h264-0:
decoder not initialized
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

我不知道怎么理解。

谢谢

最佳答案

根据documentation avdec_h264,他的接收器需要解析格式的 h264 流。什么 h264parse 确实如此,它只是以 avdec_h264 可以的方式解析 h264 的字节明白了。

# avdec_h264 sink
video/x-h264:
alignment: au
stream-format: { (string)avc, (string)byte-stream }
video/x-h264:
alignment: nal
stream-format: byte-stream

# h264parse src
video/x-h264:
parsed: true
stream-format: { (string)avc, (string)avc3, (string)byte-stream }
alignment: { (string)au, (string)nal }

因此,h264parse 不会将 h264 字节解码为原始视频流,它只是组装字节以某种形式。

关于h.264 - gstreamer 的 h264parse 到底做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70661154/

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