Gstreamer 错误:无法将输入写入OpenMAX缓冲区

Gstreamer 错误:无法将输入写入OpenMAX缓冲区,gstreamer,Gstreamer,我试图用H.265编码未压缩的视频;但是,当我编写以下管道时,我收到一条无法解决的错误消息。我正在遵循Tegra X1多媒体用户指南中的示例代码,我不明白为什么下面的管道不起作用。我是视频压缩的初学者,所以任何帮助都是非常有用的。代码/错误消息: ubuntu@tegra-ubuntu:~$ gst-launch-1.0 filesrc location=small_mem_vid.mov ! 'video/x-raw, format=(string)I420, framerate=(fract

我试图用H.265编码未压缩的视频;但是,当我编写以下管道时,我收到一条无法解决的错误消息。我正在遵循Tegra X1多媒体用户指南中的示例代码,我不明白为什么下面的管道不起作用。我是视频压缩的初学者,所以任何帮助都是非常有用的。代码/错误消息:

ubuntu@tegra-ubuntu:~$ gst-launch-1.0 filesrc location=small_mem_vid.mov ! 'video/x-raw, format=(string)I420, framerate=(fraction)30/1, width=(int)1280, height=(int)720' ! omxh265enc ! filesink location=new_encode.mov -e  

Setting pipeline to PAUSED ... 

Inside NvxLiteH264DecoderLowLatencyInitNvxLiteH264DecoderLowLatencyInit set DPB and MjstreamingInside         NvxLiteH265DecoderLowLatencyInitNvxLiteH265DecoderLowLatencyInit set DPB and MjstreamingPipeline is PREROLLING ...  
Framerate set to : 30 at NvxVideoEncoderSetParameterNvMMLiteOpen : Block : BlockType = 8  
===== MSENC =====  
NvMMLiteBlockCreate : Block : BlockType = 8 
ERROR: from element /GstPipeline:pipeline0/GstOMXH265Enc-omxh265enc:omxh265enc-omxh265enc0: Could not write to resource.  
其他调试信息:

/dvs/git/dirty/git-master_linux/external/gstreamer/gst-omx/omx/gstomxvideoenc.c(2139): gst_omx_video_enc_handle_frame ():   /GstPipeline:pipeline0/GstOMXH265Enc-omxh265enc:omxh265enc-omxh265enc0:  
Failed to write input into the OpenMAX buffer  
ERROR: pipeline doesn't want to preroll.  
Setting pipeline to NULL ...  
Freeing pipeline ...  
ubuntu@tegra-ubuntu:~$

你确定.mov文件真的是未压缩的视频吗?.mov扩展通常用于quicktime视频。您可以在Linux中使用“mediainfo”来发现有关文件格式的更多详细信息。在这种情况下,我认为您不能直接从filesrc转到编码器。您可能需要一个qtdemux和一个解码器,可能是avdec_h264,这取决于mediainfo显示的内容

您可能还希望启用一些更详细的调试:
导出GST_DEBUG=*:4

@chema989它是mcve。。gst启动管道是最小的完整且确实可验证的:)它是gstreamer的脚本语言。感谢您的回复。我确实知道.mov文件是未压缩的视频,因为当我查看视频属性时,它说它的编解码器是未压缩的压缩YUV。我认为这可能与尝试使用FileLink创建.mov文件有关。H.265视频最常见的视频扩展是什么?H.265视频可以包含在不同的媒体容器格式中。mp4是常见的。HEVC是h.265的四cc值。除了h.265外,您是否在您的平台上尝试过其他编码器?也许问题是特定于编码器的?