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

相关推荐
stereohomology6 小时前
ffmpeg视频mp4到gif用大模型很方便
ffmpeg·音视频
f***453218 小时前
从MySQL5.7平滑升级到MySQL8.0的最佳实践分享
ffmpeg
努力还债的学术吗喽2 天前
ffmpeg离线安装到服务器:解决conda/sudo/无法安装的通用方案
服务器·ffmpeg·conda
zymill3 天前
hysAnalyser --- UDP实时流分析使用指南
ffmpeg·ts流分析·mpegts·音视频分析·数字电视流录制·audio vivid·视频分析工具
Everbrilliant893 天前
FFmpeg解码音频数据AudioTrack/OpenSL播放
ffmpeg·音视频·audiotrack·opensl·ffmpeg音频解码播放·decodethread·opensl播放与解码同步
海南java第二人6 天前
数据库范式详解:从冗余到规范的升华之旅
数据库·oracle·ffmpeg
mortimer6 天前
只需三步,动手搭建一个本地免费【实时语音转录】工具WhisperLiveKit
ffmpeg·github·openai
Hi202402178 天前
消除FFmpeg库的SONAME依赖
linux·ffmpeg
mortimer10 天前
使用阿里AI模型去除背景噪音:单文件40行代码实现
python·ffmpeg·阿里巴巴
今天也想MK代码10 天前
WebRtc语音通话前置铃声处理
ffmpeg·webrtc