Überprüfen Sie die Unterschrift von avcodec_find_encoder()
here:
AVCodec* avcodec_find_encoder(enum AVCodecID id)
Es gibt einen AVCodec
struct Zeiger. Dann wollen wir mal sehen, was AVCodec
struct kann sagen uns here:
const char * name
const char * long_name
// Log or print either of them will show you the encoder name.
printf("%s\n", encoder->name);
printf("%s\n", encoder->long_name);
Und standardmäßig AV_CODEC_ID_H264
libx264
wählen werden.
Ein anderer Ansatz besteht darin, die Quelle ffmpeg zu überprüfen. Versuchen Sie, die Encoder-ID in libavcodec/
zu suchen. Normalerweise befindet sich ein Codierer AVCodec
struct am Ende einer c-Quelldatei, einschließlich Name, Langname und ID. Zum Beispiel ist die folgende Struktur in libavcodec/libx264.c
:
AVCodec ff_libx264_encoder = {
.name = "libx264",
.long_name = NULL_IF_CONFIG_SMALL("libx264 H.264/AVC/MPEG-4 AVC/MPEG-4 part 10"),
.type = AVMEDIA_TYPE_VIDEO,
.id = AV_CODEC_ID_H264,
.priv_data_size = sizeof(X264Context),
.init = X264_init,
.encode2 = X264_frame,
.close = X264_close,
.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AUTO_THREADS,
.priv_class = &x264_class,
.defaults = x264_defaults,
.init_static_data = X264_init_static,
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE |
FF_CODEC_CAP_INIT_CLEANUP,
};
über die anderen Codecs, h264_nvenc
und nvenc_h264
ist für NVIDIA GPU-Encoder; vaapi
und vdpau
wird von verschiedenen Hardwares unterstützt; und h264_cuvid
ist Cuda Decodierung Unterstützung, auch von NVIDIA-GPU zur Verfügung gestellt. Wenn Sie einen dieser Codecs benötigen, erhalten Sie es unter avcodec_find_encoder_by_name()
.