我用这个管道gst-launch-1.0 filesrc location=FPV_2021-0-1_12-37-23.h264 ! h264parse config-interval=2 ! filesink location=wsxtest02.h264发现config-interval设置成多少文件内容都不会变是怎么回事
时间: 2024-01-04 19:03:31 浏览: 152
`config-interval` 参数是 H.264 编码器的一个设置,用于指定在视频流中插入 SPS 和 PPS 的间隔帧数。这个参数只有在编码器设置为产生 H.264 Annex B 格式的视频流时才有效,如果编码器不支持 Annex B 格式,则 `config-interval` 参数将被忽略。
在你的命令行中,你使用了 `h264parse` 元素来将原始的 H.264 视频流转换成 H.264 编码器可以处理的格式,但是你没有指定任何输出格式,因此 `h264parse` 元素将使用默认的输出格式,这可能不是 Annex B 格式。所以,你需要设置 `h264parse` 元素的输出格式为 H.264 Annex B 格式,例如:
```
gst-launch-1.0 filesrc location=FPV_2021-0-1_12-37-23.h264 ! h264parse config-interval=2 ! video/x-h264, stream-format=byte-stream ! filesink location=wsxtest02.h264
```
在这个命令行中,我们通过 `video/x-h264, stream-format=byte-stream` 参数将 `h264parse` 元素的输出格式设置为 H.264 Annex B 格式,这样 `config-interval` 参数才能生效。
相关问题
gst-launch-1.0 filesrc location=FPV_2021-0-1_12-37-23.h264 ! h264parse config-interval=-1 ! avdec_h264 ! x264enc bframes=0 key-int-max=25 ! filesink location=wsxtest01.h264以上管道输出的H264视频没有I帧怎么办,原视频存在I帧是从哪里丢失的 应该怎么配置回来
如果原始视频中存在 I 帧,但是在你的管道中丢失了 I 帧,那么可能是 `h264parse` 元素的 `config-interval` 属性设置的不当导致的。`config-interval` 属性用于设置 SPS 和 PPS 参数集的发送间隔和 H.264 码流的划分方式,如果设置不当则可能会导致丢失 I 帧。
你可以尝试将 `config-interval` 属性设置为 `-1`,这样 `h264parse` 元素将根据需要自动插入 SPS 和 PPS 参数集,并且在必要时将 I 帧插入到输出流中。修改后的管道应该类似于这样:
```
gst-launch-1.0 filesrc location=FPV_2021-0-1_12-37-23.h264 ! h264parse config-interval=-1 ! avdec_h264 ! x264enc bframes=0 key-int-max=25 ! filesink location=wsxtest01.h264
```
如果你需要更细粒度地控制参数集的发送间隔和 H.264 码流的划分方式,可以将 `config-interval` 属性设置为一个正整数,表示每多少帧发送一次参数集。例如,如果你将 `config-interval` 设置为 `10`,则 `h264parse` 元素将每 10 帧发送一次 SPS 和 PPS 参数集。但是需要注意的是,如果设置得太小,可能会导致码流过大,影响传输效率。
gst-launch-1.0 filesrc location=~/Downloads/FPV_2021-0-1_12-37-23.h264 ! h264parse config-interval=-1 ! avdec_h264 ! x264enc ! filesink location=test0612.h264如上管道为什么播放不了文件
这个管道是用来编码和保存H.264视频文件的,而不是用来播放视频的。如果你想要播放H.264视频文件,你需要使用类似于以下的管道:
```
gst-launch-1.0 filesrc location=~/Downloads/FPV_2021-0-1_12-37-23.h264 ! h264parse ! avdec_h264 ! autovideosink
```
这个管道会解码H.264视频文件并将其显示在自动选择的视频窗口中。如果你想要使用特定的视频窗口,你可以将`autovideosink`替换为你选择的视频窗口元素名称。
阅读全文