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

时间:2016-07-07 18:49:03

标签: 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=(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:~$

1 个答案:

答案 0 :(得分:0)

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

您可能还想启用一些更详细的调试:  export GST_DEBUG = *:4