如何形成 gstreamer 管道以从 tiff 文件编码 mp4 视频?
How to form a gstreamer pipeline to encode mp4 video from tiff files?
我是 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 数据做任何 demux/decode,所以你在编码器上扔了随机字节。
此外,您在使用大写字母做很多事情时没有适当的元素,这可能会正确地改变格式。
您应该使用 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
我是 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 数据做任何 demux/decode,所以你在编码器上扔了随机字节。
此外,您在使用大写字母做很多事情时没有适当的元素,这可能会正确地改变格式。
您应该使用 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