Erstellen von Videos im WebM Format
WebM?
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.
Kompatible Browser
WebM Plugins für Programme
Videos ins WebM Format bringen
vpxenc
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)
VP9 Test Bashscript
#!/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
FFmpeg
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
Beispielkommandozeilen
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
Optionen
[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.
GStreamer
Siehe hier :)