Я пробовал обёртку для ffmpeg, написанную в Go ( imkira / go -libav ) и пытался следовать примеру, но после успешной сборки я получил ошибка, из-за которой не удается найти декодер.
Это часть кода, в которой возникает ошибка:
if ctx.decStream = firstStream(ctx.decFmt); ctx.decStream == nil {
log.Fatalf("Couldn't find a video stream.")
}
codecCtx := ctx.decStream.CodecContext()
codec := avcodec.FindDecoderByID(codecCtx.CodecID())
if codec == nil {
log.Fatalf("Could not find decoder: %v\n", codecCtx.CodecID())
}
Функция first_stream
:
func firstStream(fmtCtx *avformat.Context) *avformat.Stream {
for _, stream := range fmtCtx.Streams() {
switch stream.CodecContext().CodecType() {
case avutil.MediaTypeVideo:
return stream
}
}
return nil
}
Это так же, как в примере, который также имеет ту же проблему. Я предполагаю, что это не основано на коде, но я не могу понять это. Я попытался зарегистрировать все форматы, но на самом деле это происходит в функции init()
.
Я использую Manjaro Linux 19.0.0 и у меня установлен FFmpeg 3.3.9 из источника.