ffmpeg错误号码

bash 复制代码
#define FFERRTAG(a, b, c, d) (-(int)MKTAG(a, b, c, d))
//它负责将四个字符组合成一个32位整数

AVERROR_BSF_NOT_FOUND = -1179861752  
AVERROR_BUG = -558323010  
AVERROR_DECODER_NOT_FOUND = -1128613112  
AVERROR_DEMUXER_NOT_FOUND = -1296385272  
AVERROR_ENCODER_NOT_FOUND = -1129203192  
AVERROR_EOF = -541478725  
AVERROR_EXIT = -1414092869  
AVERROR_FILTER_NOT_FOUND = -1279870712  
AVERROR_INVALIDDATA = -1094995529  
AVERROR_MUXER_NOT_FOUND = -1481985528  
AVERROR_OPTION_NOT_FOUND = -1414549496  
AVERROR_PATCHWELCOME = -1163346256  
AVERROR_PROTOCOL_NOT_FOUND = -1330794744  
AVERROR_STREAM_NOT_FOUND = -1381258232  
AVERROR_BUG2 = -541545794  
AVERROR_UNKNOWN = -1313558101  

使用ffmpeg的时候,如果有错误,会返回一个int型负数。比如AVERROR_EOF就是-541478725。

从错误号解析为字符串方法如下

cpp 复制代码
#include <stdint.h>

#define FFERRTAG(a, b, c, d) (-(int32_t)MKTAG(a, b, c, d))

void getInt32Chars(int32_t value, char* chars)
{
    chars[0] = (value >> 24) & 0xFF;  // 获取高8位
    chars[1] = (value >> 16) & 0xFF;  // 获取次高8位
    chars[2] = (value >> 8) & 0xFF;   // 获取次低8位
    chars[3] = value & 0xFF;          // 获取低8位
}

int main()
{
    int32_t err = FFERRTAG('A', 'B', 'C', 'D');
    char chars[4];
    getInt32Chars(err, chars);

    // 输出字符
    for (int i = 0; i < 4; i++)
    {
        printf("%c", chars[i]);
    }
    printf("\n");

    return 0;
}

有些时候会返回-11、-22等无法解析为字符串的错误号是什么原因?

FFmpeg 中的 AVERROR 宏将错误码转换为负值,以便与 FFmpeg 的错误处理系统兼容。AVERROR 宏的定义通常如下:

cpp 复制代码
#define AVERROR(e) (-(e))

EAGAIN 在大多数系统上定义为11,因此,AVERROR(EAGAIN) 的值为 -11

相关推荐
程序员老陆19 小时前
FFmpeg RTSP 解复用器(rtsp demuxer)完全解析:从「能播」到「稳播」的参数圣经
ffmpeg·音视频·拉流·rtsp
诸葛大钢铁2 天前
视频转音频怎么转换?在线工具、VLC、FFmpeg 三种方法详解
ffmpeg·音视频·mp4转mp3·视频转音频·视频转mp3·视频提取音频
qingmiaozhuan2 天前
电脑录屏软件追剧高光截取:FFmpeg帧裁剪与可视化方案对比
ffmpeg·电脑·音视频开发·录屏技术·电脑录屏
程序员老陆3 天前
FFmpeg6操作 RTMP参数详解
ffmpeg·音视频·rtmp
戒了,最后一次3 天前
Windows 安装 FFmpeg 完整教程(附环境变量配置 + 常用命令示例)
windows·ffmpeg
≮傷£≯√3 天前
FFmpeg + qt 音频播放
qt·ffmpeg·音视频
程序员老陆4 天前
Qt的QThread::usleep和FFmpeg的libavutil模块的av_usleep哪个精度高一些?
开发语言·qt·ffmpeg·音视频
程序员老陆4 天前
如何使用FFmpeg6的API进行HLS开发呢?
ffmpeg·音视频·hls
程序员老陆5 天前
说一说FFmpeg6在Linux平台的编译
linux·运维·服务器·ffmpeg
用户518186005665 天前
FFmpeg 剪辑:为什么 `-c copy` 往往做不到帧准确剪切
ffmpeg