WebM ist ein opensource Videoformat, speziell entwickelt um das Standardformat für HTML5 Videos zu werden. Das Format besteht aus dem VP8 Videocodec und dem Vorbis Audioformat verpackt in einem auf Matroska basierten Container.
Vpxenc ist der “offizielle” Encoder des webm Projekts. Der hat sogar hübsche Dokumentation :)
Das executable verwurstet am liebsten y4m files, die man entweder zb vom xiph.org server laden kann oder mit gstreamer/mencoder/whatnot erzeugt.
vpxenc --ivf --threads=2 --good --cpu-used=0 --end-usage=2 --cq-level=X --target-bitrate=Y --auto-alt-ref=1 720p5994_stockholm_ter.ivf 720p5994_stockholm_ter.y4m
([15:55:19] <jk8> targets quality X without exceeding bitrate Y)
#!/bin/sh for i in 4 3 2 1 0 do ./libvpx/vpxenc --codec=vp9 --ivf --good --cpu-used=$i --lag-in-frames=25 --auto-alt-ref=1 --passes=2 --target-bitrate=2000 --output=./libvpx/vp9-cpu-used-$i.ivf ~/Videos/tmp/sintel_trailer_2k_1080p24.y4m done
Um mit FFmpeg WebM-Videos erstellen zu können, braucht es (noch) ein paar Patches. Manche Linuxdistributionen haben schon Pakete für ein gepatchtes FFmpeg, z.B. Arch Linux im Arch User Repository oder Gentoo im Bugtracker
ffmpeg -i 480/sintel_trailer_2k_%04d.png -i sintel_trailer-audio.flac -f webm -vcodec libvpx -acodec vorbis -sameq sintel_trailer_480p.mkv mkfifo pipe.yuv ; ffmpeg -i /media/E436B32136B2F420/larry_crown.vob -vcodec rawvideo -aspect 1:1 -vf scale=1024:576 pipe.yuv | vpxenc pipe.yuv -o larry_crown_video.webm --i420 -w 1024 -h 576 --fps=25000/1001 -v -t 4 --best --end-usage=vbr --auto-alt-ref=1 --lag-in-frames=20 --kf-min-dist=0 --kf-max-dist=360 --cq-level=20 --min-q=20 --max-q=20
FFmpeg verwurstet auch nahezu jedes andere Audio- und Videoformat, ist also eine recht universeller Encoder
[14:22:21] <basilgohar> ffmpeg -i source.mkv -vcodec libvpx -qmin 15 -qmax 15 -g 250 -acodec libvorbix -aq 4 output.webm [14:22:37] <bgaute> *libvorbis [14:22:37] <basilgohar> For the types of videos I work with, that set of options works very well.
Siehe hier :)