Matt McManis
Matt McManis

Reputation: 4675

FFmpeg WebM AV1 Support

With FFmpeg how can I use AV1 codec in a webm container?

I get the error:

Only VP8 or VP9 video and Vorbis or Opus audio and WebVTT subtitles are supported for WebM.
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Error initializing output stream 0:0 --

However Wikipedia says WebM supports AV1.

https://en.wikipedia.org/wiki/AV1

AV1 is intended to be able to be used together with the audio format Opus in a future version of the WebM container format for HTML5 web video

Or can FFmpeg simply not encode this new version?


My settings:

ffmpeg -y 

-i "C:\Users\Matt\video.mp4" 

-c:v libaom-av1 -strict experimental 
-cpu-used 1 -crf 28 
-pix_fmt yuv420p 
-map 0:v:0? -map_chapters -1 
-sn 

-c:a libopus 
-map 0:a:0? 

-map_metadata 0 

-f webm 

-threads 0 

"C:\Users\Matt\video.webm"

Upvotes: 11

Views: 8604

Answers (2)

Adithyan Ilangovan
Adithyan Ilangovan

Reputation: 151

Update, FFmpeg does support AV1 in Webm now!

        if (!native_id) {
        av_log(s, AV_LOG_ERROR,
               "Only VP8 or VP9 or AV1 video and Vorbis or Opus audio and WebVTT subtitles are supported for WebM.\n");
        return AVERROR(EINVAL);
    }

Source code here.

Upvotes: 3

Cornstalks
Cornstalks

Reputation: 38218

ffmpeg currently doesn't support muxing AV1 in WebM. The error you're getting comes from this code:

if (mkv->mode == MODE_WEBM && !(par->codec_id == AV_CODEC_ID_VP8 ||
                                par->codec_id == AV_CODEC_ID_VP9 ||
                                par->codec_id == AV_CODEC_ID_OPUS ||
                                par->codec_id == AV_CODEC_ID_VORBIS ||
                                par->codec_id == AV_CODEC_ID_WEBVTT)) {
    av_log(s, AV_LOG_ERROR,
           "Only VP8 or VP9 video and Vorbis or Opus audio and WebVTT subtitles are supported for WebM.\n");
    return AVERROR(EINVAL);
}

Note the lack of AV_CODEC_ID_AV1 in the expression.

This isn't too surprising, though. AV1 in Matroska (and therefore WebM) hasn't been finalized yet. If you want to follow progress on AV1 in Matroska (and WebM), follow the discussion here on the IETF CELLAR mailing list.

Upvotes: 8

Related Questions