协议遍历
std::cout << "=== input protocols ===" << std::endl;
const char* protocol = avio_enum_protocols(&opaque, 0);
while (protocol != NULL) {
std::cout << protocol << std::endl;
protocol = avio_enum_protocols(&opaque, 0);
}
std::cout << "=== output protocols ===" << std::endl;
protocol = avio_enum_protocols(&opaque, 1);
while (protocol != NULL) {
std::cout << protocol << std::endl;
protocol = avio_enum_protocols(&opaque, 1);
}
解封装器遍历
std::cout << "=== demuxer ===" << std::endl;
const AVInputFormat* inputFormat = av_demuxer_iterate(&opaque);
while (inputFormat != NULL) {
std::cout << inputFormat->name << std::endl;
inputFormat = av_demuxer_iterate(&opaque);
}
封装器遍历
std::cout << "=== muxer ===" << std::endl;
opaque = NULL;
const AVOutputFormat* outputFormat = av_muxer_iterate(&opaque);
while (outputFormat != NULL) {
std::cout << outputFormat->name << std::endl;
outputFormat = av_muxer_iterate(&opaque);
}
编码器遍历
std::cout << "=== encoder ===" << std::endl;
opaque = NULL;
const AVCodec* avCodec = av_codec_iterate(&opaque);
while (avCodec != NULL) {
if (av_codec_is_encoder(avCodec)) {
std::cout << avCodec->name << std::endl;
}
avCodec = av_codec_iterate(&opaque);
}
解码器遍历
std::cout << "=== decoder ===" << std::endl;
opaque = NULL;
avCodec = av_codec_iterate(&opaque);
while (avCodec != NULL) {
if (av_codec_is_decoder(avCodec)) {
std::cout << avCodec->name << std::endl;
}
avCodec = av_codec_iterate(&opaque);
}
bsf遍历
bsf需要添加头文件
#include "libavcodec/bsf.h"
std::cout << "=== bsf ===" << std::endl;
opaque = NULL;
const AVBitStreamFilter* bsf = av_bsf_iterate(&opaque);
while (bsf != NULL) {
std::cout << bsf->name << std::endl;
bsf = av_bsf_iterate(&opaque);
}