gst-launch-1.0 filesrc location=~/Downloads/FPV_2021-0-1_12-37-23.h264 ! h264parse config-interval=10 ! video/x-h264, stream-format=byte-stream ! avdec_h264 ! x264enc byte-stream=true bframes=0 key-int-max=50 ! video/x-h264, stream-format=byte-stream ! filesink location=test0612.h264输出的文件里没有I帧是怎么回事 应该怎么配置
时间: 2023-11-19 18:05:02 浏览: 168
根据你提供的信息,可能是由于x264enc元素的属性设置不正确,导致输出文件中没有I帧。你可以尝试修改x264enc元素的属性,例如将byte-stream属性设置为false,同时适当调整key-int-max的值。
下面是一个修改后的GStreamer命令行示例:
```
gst-launch-1.0 filesrc location=~/Downloads/FPV_2021-0-1_12-37-23.h264 ! h264parse config-interval=10 ! video/x-h264, stream-format=byte-stream ! avdec_h264 ! x264enc byte-stream=false bframes=0 key-int-max=50 ! video/x-h264, stream-format=byte-stream ! filesink location=test0612.h264
```
在这个命令行中,我将x264enc元素的byte-stream属性设置为false,这将使其输出NAL单元。NAL单元是H.264视频流的基本单元,其中包含一个完整的视频帧或一部分视频帧。同时,我将key-int-max的值设置为50,这将使其以50帧为间隔生成一个I帧,以确保视频流中存在足够的I帧。你可以根据需要适当调整这些属性值,以获得最佳的视频质量和文件大小。
相关问题
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`替换为你选择的视频窗口元素名称。
gst-launch-1.0 filesrc location=~/Downloads/FPV_2021-0-1_12-37-23.h264 ! h264parse config-interval=10 ! video/x-h264, stream-format=byte-stream ! avdec_h264 ! x264enc byte-stream=false bframes=0 key-int-max=50 ! video/x-h264, stream-format=byte-stream ! filesink location=test0612.h264变成用videotestsrc当输出源怎么变
如果要使用`videotestsrc`替换文件输入源并将输出写入文件中,请使用以下命令:
```
gst-launch-1.0 videotestsrc ! x264enc bframes=0 key-int-max=50 ! video/x-h264, stream-format=byte-stream ! filesink location=test0612.h264
```
这将使用`videotestsrc`元素生成测试信号,并使用`x264enc`编码器将其编码为H.264流。然后,使用`video/x-h264`格式将该流格式化为字节流,并将其写入名为`test0612.h264`的文件中。请注意,您可以根据需要更改`x264enc`的参数。
阅读全文