10

For .webm files obtained with youtube-dl -f bestaudio containing no video stream, is it preferable to run:

ffmpeg -i input.webm -vn -c:a copy output.opus

Or can one simply rename the source file, changing the extension?

I mean, the audio stream is clearly the same, but regarding the metadata, is there any downside with the second approach?


Update: I checked metadata with mediainfo. Even if I save the ffmpeg output to .webm (by running ffmpeg -i input.webm -vn -c:a copy output.webm), the metadata differs.

Notice the new entry called "Bit depth":

comparison webm input and webm output with mediainfo GUI

And for the record, this is the .opus result:

opus output of mediainfo GUI

I'd like a canonical answer on whether there's something in the container definition that identifies it as a "pure audio" file as opposed to an audio/video file, something that is handled correctly only by "re-wrapping" the stream in a new container file.

Giacomo1968
  • 58,727
Marc.2377
  • 1,677

2 Answers2

13

WebM is a subset of Matroska, which is a container format for multimedia data. Opus is an audio format (an audio codec), which is usually stored inside an Ogg container, but can also be stored inside a Matroska container or a WebM container.

When an Opus audio track is stored in an Ogg container, the file name suffix is usually '.opus' (but when a Vorbis audio track is stored in an Ogg file, the suffix is usually '.ogg')

If you change the file name suffix (from '.webm' to '.opus'), the data inside the file will stay the same.

What I usually do to extract the audio track from a webm file is:

mkvextract file/path.webm tracks 0:file/path.opus

Note that 'file/path.opus' will be an Ogg container with Opus format (if that's what the WebM contained).

mkvextract can be obtained by installing package 'mkvtoolnix-cli' in ArchLinux, for instance.

Nattgew
  • 1,155
Elifarley
  • 678
2

.opus is Opus within an Ogg container (reference and RFC 5334), .webm is a Matroska container (and it should use a subset of web-approved codecs). You can also use .mka for a Matroska container with just audio tracks (reference).

Renaming the file is incorrect, the container won't match the extension. You are able to convert from one container to the other without loss, for example using yt-dlp's remux options.

Tobu
  • 2,781