ffmpeg退出状态-1094995529 [英] ffmpeg exit status -1094995529

查看:483
本文介绍了ffmpeg退出状态-1094995529的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个应用程序,它使调用在Windows上, ffprobe 返回某些文件的 -1094995529 的非常规退出状态.此退出状态始终保持不变,并且有一些讨论这个.

为什么给定该值,它在哪里记录?在允许出口状态受到更多限制的Unix机器上,我可以期望这种状态有所不同吗?

解决方案

来自ffmpeg的错误代码(来自avutil的error.h): http://ffmpeg.org/doxygen/trunk/error_8h_source.html

原来您指定的值是:

  #define AVERROR_INVALIDDATA FFERRTAG('I','N','D','A') 

-1094995529变为-0x41444E49,当您查看这些字母时,在ACSII中,0x41 ='A',0x44 ='D',0x4E ='N和0x49 ='I'.由于宏/等事物是反向的,因此ADNI变成了INDA,您可以从#define代码段中看到它是AVERROR_INVALIDDATA定义的FFERRTAG('I','N','D','A').

其余错误代码都在该文件中,我将它们粘贴在下面:

  #define AVERROR_BSF_NOT_FOUND FFERRTAG(0xF8,'B','S','F')///<找不到位流过滤器#define AVERROR_BUG FFERRTAG('B','U','G','!')///<内部错误,另请参阅AVERROR_BUG2#define AVERROR_BUFFER_TOO_SMALL FFERRTAG('B','U','F','S')///<缓冲区太小#define AVERROR_DECODER_NOT_FOUND FFERRTAG(0xF8,'D','E','C')///<找不到解码器#define AVERROR_DEMUXER_NOT_FOUND FFERRTAG(0xF8,'D','E','M')///<找不到解复用器#define AVERROR_ENCODER_NOT_FOUND FFERRTAG(0xF8,'E','N','C')///<找不到编码器#define AVERROR_EOF FFERRTAG('E','O','F','')///<文件结束#define AVERROR_EXIT FFERRTAG('E','X','I','T')///<请求立即退出;被调用的函数不应该重新启动#define AVERROR_EXTERNAL FFERRTAG('E','X','T','')///<外部库中的一般错误#define AVERROR_FILTER_NOT_FOUND FFERRTAG(0xF8,'F','I','L')///<找不到筛选器#define AVERROR_INVALIDDATA FFERRTAG('I','N','D','A')///<处理输入时发现无效数据#define AVERROR_MUXER_NOT_FOUND FFERRTAG(0xF8,'M','U','X')///<找不到混音器#define AVERROR_OPTION_NOT_FOUND FFERRTAG(0xF8,'O','P','T')///<找不到选项#define AVERROR_PATCHWELCOME FFERRTAG('P','A','W','E')///<尚未在FFmpeg中实现,欢迎使用补丁#define AVERROR_PROTOCOL_NOT_FOUND FFERRTAG(0xF8,'P','R','O')///<找不到协议#define AVERROR_STREAM_NOT_FOUND FFERRTAG(0xF8,'S','T','R')///<未发现流媒体#定义AVERROR_BUG2 FFERRTAG('B','U','G','')#define AVERROR_UNKNOWN FFERRTAG('U','N','K','N')///<未知错误,通常来自外部库#define AVERROR_EXPERIMENTAL(-0x2bb2afa8)///<要求的功能已标记为实验性.如果您确实想使用它,请设置strict_std_compliance.#define AVERROR_INPUT_CHANGED(-0x636e6701)///<通话之间输入已更改.需要重新配置.(可以与AVERROR_OUTPUT_CHANGED进行或运算)#define AVERROR_OUTPUT_CHANGED(-0x636e6702)///<两次调用之间的输出已更改.需要重新配置.(可以与AVERROR_INPUT_CHANGED进行或运算)#定义AVERROR_HTTP_BAD_REQUEST FFERRTAG(0xF8,'4','0','0')#定义AVERROR_HTTP_UNAUTHORIZED FFERRTAG(0xF8,'4','0','1')#定义AVERROR_HTTP_FORBIDDEN FFERRTAG(0xF8,'4','0','3')#定义AVERROR_HTTP_NOT_FOUND FFERRTAG(0xF8,'4','0','4')#定义AVERROR_HTTP_OTHER_4XX FFERRTAG(0xF8,'4','X','X')#定义AVERROR_HTTP_SERVER_ERROR FFERRTAG(0xF8,'5','X','X') 

I'm developing an application that makes calls to ffprobe that return the unorthodox exit status of -1094995529 for certain files when on Windows. This exit status is given consistently, and there is some minor discussion of this.

Why is this value given, and where is it documented? Can I expect this status to be different on a unix machine where the allowed exit statuses are more constrained?

解决方案

Error codes from ffmpeg (error.h from avutil) : http://ffmpeg.org/doxygen/trunk/error_8h_source.html

It turns out the value you specified is :

#define AVERROR_INVALIDDATA        FFERRTAG( 'I','N','D','A')

The -1094995529 becomes -0x41444E49 and when you look at those letters, in ACSII, 0x41 = 'A', 0x44 = 'D', 0x4E = 'N, and 0x49 = 'I'. Due to the macro/etc things are reversed, so ADNI becomes INDA, which you can see from the #define snippet, is the AVERROR_INVALIDDATA defined FFERRTAG( 'I','N','D','A').

The rest of the error codes are in that file and I've pasted them below here :

#define AVERROR_BSF_NOT_FOUND      FFERRTAG(0xF8,'B','S','F') ///< Bitstream filter not found
#define AVERROR_BUG                FFERRTAG( 'B','U','G','!') ///< Internal bug, also see AVERROR_BUG2
#define AVERROR_BUFFER_TOO_SMALL   FFERRTAG( 'B','U','F','S') ///< Buffer too small
#define AVERROR_DECODER_NOT_FOUND  FFERRTAG(0xF8,'D','E','C') ///< Decoder not found
#define AVERROR_DEMUXER_NOT_FOUND  FFERRTAG(0xF8,'D','E','M') ///< Demuxer not found
#define AVERROR_ENCODER_NOT_FOUND  FFERRTAG(0xF8,'E','N','C') ///< Encoder not found
#define AVERROR_EOF                FFERRTAG( 'E','O','F',' ') ///< End of file
#define AVERROR_EXIT               FFERRTAG( 'E','X','I','T') ///< Immediate exit was requested; the called function should not be restarted
#define AVERROR_EXTERNAL           FFERRTAG( 'E','X','T',' ') ///< Generic error in an external library
#define AVERROR_FILTER_NOT_FOUND   FFERRTAG(0xF8,'F','I','L') ///< Filter not found
#define AVERROR_INVALIDDATA        FFERRTAG( 'I','N','D','A') ///< Invalid data found when processing input
#define AVERROR_MUXER_NOT_FOUND    FFERRTAG(0xF8,'M','U','X') ///< Muxer not found
#define AVERROR_OPTION_NOT_FOUND   FFERRTAG(0xF8,'O','P','T') ///< Option not found
#define AVERROR_PATCHWELCOME       FFERRTAG( 'P','A','W','E') ///< Not yet implemented in FFmpeg, patches welcome
#define AVERROR_PROTOCOL_NOT_FOUND FFERRTAG(0xF8,'P','R','O') ///< Protocol not found
#define AVERROR_STREAM_NOT_FOUND   FFERRTAG(0xF8,'S','T','R') ///< Stream not found
#define AVERROR_BUG2               FFERRTAG( 'B','U','G',' ')
#define AVERROR_UNKNOWN            FFERRTAG( 'U','N','K','N') ///< Unknown error, typically from an external library
#define AVERROR_EXPERIMENTAL       (-0x2bb2afa8) ///< Requested feature is flagged experimental. Set strict_std_compliance if you really want to use it.
#define AVERROR_INPUT_CHANGED      (-0x636e6701) ///< Input changed between calls. Reconfiguration is required. (can be OR-ed with AVERROR_OUTPUT_CHANGED)
#define AVERROR_OUTPUT_CHANGED     (-0x636e6702) ///< Output changed between calls. Reconfiguration is required. (can be OR-ed with AVERROR_INPUT_CHANGED)
#define AVERROR_HTTP_BAD_REQUEST   FFERRTAG(0xF8,'4','0','0')
#define AVERROR_HTTP_UNAUTHORIZED  FFERRTAG(0xF8,'4','0','1')
#define AVERROR_HTTP_FORBIDDEN     FFERRTAG(0xF8,'4','0','3')
#define AVERROR_HTTP_NOT_FOUND     FFERRTAG(0xF8,'4','0','4')
#define AVERROR_HTTP_OTHER_4XX     FFERRTAG(0xF8,'4','X','X')
#define AVERROR_HTTP_SERVER_ERROR  FFERRTAG(0xF8,'5','X','X')

这篇关于ffmpeg退出状态-1094995529的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆