我对gstreamer还是陌生的,一直试图组成一个gstreamer管道来对nvidia Jetson平台上tiff文件中的mp4视频进行编码。这是我想出的管道:
gst-launch-1.0 multifilesrc location=%03d.tiff index=0 start-index=0 stop-index=899 blocksize=720000 num-buffers=900 do-timestamp=true typefind=true ! 'video/x-raw,format=(string)RGB,width=(int)1280,height=(int)720,framerate=(fraction)30/1' ! videoconvert ! 'video/x-raw,format=(string)I420,framerate=(fraction)30/1' ! omxh264enc ! 'video/x-h264,stream-format=(string)byte-stream,framerate=(fraction)30/1' ! h264parse ! filesink sync=true location=test.mp4 -e
这样,会成功创建并播放mp4文件,但实际的视频内容都是乱码。知道我在做什么错吗?谢谢
您没有对TIFF数据进行任何多路分解/解码,因此在编码器上抛出了随机字节。
此外,您在做很多事情时都使用大写字母,而在它们之间没有适当的元素可能会正确更改格式。
您应该使用decodebin
让GStreamer自动处理大多数事情。例如。像这样的东西:
multifilesrc ! decodebin ! videoconvert ! omxh264enc ! h264parse ! filesink
根据您的编码器,您希望将颜色格式强制为4:2:0,以免偶然地将其以4:4:4编码(这不是很常见,很多编码器都不支持):
multifilesrc ! decodebin ! videoconvert ! video/x-raw, format=I420 ! omxh264enc ! h264parse ! filesink