您当前的位置: 首页 > 

顺其自然~

暂无认证

  • 2浏览

    0关注

    1317博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

ffmpeg中av_find_input_format和avfrormat_open_input函数分析

顺其自然~ 发布时间:2022-03-28 15:14:09 ,浏览量:2

寻找自己的采集图像设备

av_find_input_format()

根据名称查找链表当中的输入的格式

如果要查找设备在使用之前去调用: avdevice_register_all();

AVInputFormat *av_find_input_format(const char *short_name);
/*
@param short_name : 指定输入的名称,可以是设备名称avfoundation,或者编码格式:H264, h265...
@return: 
				AVInputFormat 结构体看下面
*/
typedef struct AVInputFormat {
    const char *name;   // 封装格式名称简写(short_name)[h264]
    const char *long_name; // 码流输入格式的长名称[raw H.264 video]
    int flags;
    const char *extensions;
    const struct AVCodecTag * const *codec_tag;
    const AVClass *priv_class; 
    const char *mime_type;
    struct AVInputFormat *next;
    int raw_codec_id
    int priv_data_size;
    int (*read_probe)(AVProbeData *);
    int (*read_header)(struct AVFormatContext *);
    int64_t (*read_timestamp)(struct AVFormatContext *s, int stream_index,int64_t *pos, int64_t pos_limit);
    int (*read_play)(struct AVFormatContext *);
    int (*read_pause)(struct AVFormatContext *);
    int (*get_device_list)(struct AVFormatContext *s, struct AVDeviceInfoList *device_list);
    int (*create_device_capabilities)(struct AVFormatContext *s, struct AVDeviceCapabilitiesQuery *caps);
    int (*free_device_capabilities)(struct AVFormatContext *s, struct AVDeviceCapabilitiesQuery *caps);
} AVInputFormat;

avformat_open_input()

主要用来打开输入流并存储到格式化上下文AVFormatContext中。这个api是不会打开编解码器的

打开的格式化上下文必须要使用:avformat_close_input()来关闭!

int avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt, AVDictionary **options);
/*
@param ps	: 打开之后的数据传入的格式化上线文的指针,失败会自动释放打开的内容
@param url	: 要打开的流的URL,可以是设备ID、rtmp、http
@param fmt	: 输入的格式,如果为空则会自动查找输入的格式
@param options	:AVFormatContext和demuxer私有选项的字典。
@return
	0: 成功
	            
关注
打赏
1662339380
查看更多评论
0.0420s