Après avoir examiné le projet Web, je ne vois aucune preuve d'un moyen de générer une vidéo WebM. Je vois des pilotes pour Windows et Quicktime, mais aucune preuve que l'utilitaire ffmpeg le plus courant est pris en charge.
Existe-t-il un convertisseur open source qui produit webm?
Merci.
Vous pouvez utiliser ffmpeg
pour convertir en webm. Assurez-vous de le compiler avec le --enable-libvpx
et --enable-libvorbis
flags (voir FFmpeg compile guides ), ou visitez la page FFmpeg Download pour les liens vers les builds qui incluent le support. Après cela, vous pouvez utiliser la commande suivante (j'utilise input.flv
comme exemple de fichier d'entrée):
ffmpeg -i input.flv -vcodec libvpx -acodec libvorbis output.webm
Pour plus d'informations, reportez-vous au FFmpeg vpx (WebM) Encoding Guide .
J'ai mis cela en place récemment, mais c'est une sorte de douleur. Voici ce que je devais faire:
Tout d'abord, créez ffmpeg à partir de la source pour inclure les pilotes libvpx (même si vous utilisez une version qui en dispose, vous avez besoin des plus récents (à partir de ce mois-ci) pour diffuser webm car ils ont juste ajouté la fonctionnalité pour inclure des en-têtes globaux). Je l'ai fait sur un serveur et un bureau Ubuntu, et ce guide m'a montré comment - des instructions pour d'autres OS peuvent être trouvés ici .
Une fois que vous avez obtenu la version appropriée de ffmpeg/ffserver, vous pouvez les configurer pour le streaming, dans mon cas, cela a été fait comme suit.
Sur le périphérique de capture vidéo:
ffmpeg -f video4linux2 -standard ntsc -i /dev/video0 http://<server_ip>:8090/0.ffm
Extrait pertinent de ffserver.conf:
Port 8090
#BindAddress <server_ip>
MaxHTTPConnections 2000
MAXClients 100
MaxBandwidth 1000000
CustomLog /var/log/ffserver
NoDaemon
<Feed 0.ffm>
File /tmp/0.ffm
FileMaxSize 5M
ACL allow <feeder_ip>
</Feed>
<Feed 0_webm.ffm>
File /tmp/0_webm.ffm
FileMaxSize 5M
ACL allow localhost
</Feed>
<Stream 0.mpg>
Feed 0.ffm
Format mpeg1video
NoAudio
VideoFrameRate 25
VideoBitRate 256
VideoSize cif
VideoBufferSize 40
VideoGopSize 12
</Stream>
<Stream 0.webm>
Feed 0_webm.ffm
Format webm
NoAudio
VideoCodec libvpx
VideoSize 320x240
VideoFrameRate 24
AVOptionVideo flags +global_header
AVOptionVideo cpu-used 0
AVOptionVideo qmin 1
AVOptionVideo qmax 31
AVOptionVideo quality good
PreRoll 0
StartSendOnKey
VideoBitRate 500K
</Stream>
<Stream index.html>
Format status
ACL allow <client_low_ip> <client_high_ip>
</Stream>
Cette commande ffmpeg est exécutée sur la machine précédemment appelée server_ip (elle gère la conversion mpeg -> webm réelle et la renvoie dans le ffserver sur un flux différent):
ffmpeg -i http://<server_ip>:8090/0.mpg -vcodec libvpx http://localhost:8090/0_webm.ffm
Une fois que ceux-ci ont tous été démarrés (d'abord le serveur ff, puis le processus ffmpeg feeder_ip puis le processus ffmpeg server_ip), vous devriez pouvoir accéder au flux en direct sur http: //: 8090/0.webm et vérifier l'état sur http : //: 8090 /
J'espère que cela t'aides.
ffmpeg -i input.mp4 -c: v libvpx -crf 10 -b: v 1M -c: une sortie libvorbis.webm
Par défaut, la valeur CRF peut être comprise entre 4 et 63, et 10 est un bon point de départ. Des valeurs plus faibles signifient une meilleure qualité.
Pour Linux: Le logiciel open source disponible pour utiliser les codecs vp8 et vp9 pour linux est Arista pour le bureau gnome. Google: Arista Transcoder
Pour Windows et Linux: Miro Video Converter est également gratuit et open source avec une interface graphique très lisse. Vous pouvez le vérifier sur: Google: mirovideoconverter
FFMPEG est un outil en ligne de commande et je l'ai trouvé le plus à jour pour suivre le projet webmd. N'oubliez pas de regarder les options d'encodage vp8 fournies par le site webmproject https://sites.google.com/a/ webmproject.org/wiki/ffmpeg . Vous devriez également jeter un œil au Guide d'encodage VPX: https://trac.ffmpeg.org/wiki/vpxEncodingGuide
Un autre poste mentionné vpxenc.exe Cependant, vpxenc.exe doit être compilé par source.
Exemple d'utilisation de FFMEG: Remplacez {NPUT} et {OUTPUT} à l'emplacement du fichier. Sur Windows 7, je devais utiliser le Power Shell (Démarrer> Accessoires> Windows Power Shell> Power Shell) et fournir l'emplacement complet pour ffmpeg, entrée et sortie. Notez le paramètre - vcodec libvpx utilise VP8 par défaut. Pour utiliser VP9, remplacez par - vcodec libvpx-vp9
WedmbSD
ffmeg.exe -i {INPUT} -s hd480 -vcodec libvpx -g 120 -lag-in-frames 16 -deadline good -cpu-used 0 -vprofile 0 -qmax 63 -qmin 0 -b:v 768k -acodec libvorbis -ab 112k -ar 44100 -f webm {OUTPUT}
FFmpeg. MP4 à WebM. Pour avoir la synchronisation des lèvres et de haute qualité
$ ffmpeg -i input.mp4 -b:v 1M -q:v 10 -vcodec libvpx -acodec libvorbis output.webm
ffmpeg version 2.8.6-1ubuntu2 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.3.1 (Ubuntu 5.3.1-11ubuntu1) 20160311
configuration: --prefix=/usr --extra-version=1ubuntu2 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
libavutil 54. 31.100 / 54. 31.100
libavcodec 56. 60.100 / 56. 60.100
libavformat 56. 40.101 / 56. 40.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 40.101 / 5. 40.101
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
libpostproc 53. 3.100 / 53. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'SPBFRE_01.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42mp41
creation_time : 2015-05-29 14:49:20
Duration: 00:01:41.61, start: 0.000000, bitrate: 9452 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 9132 kb/s, 50 fps, 50 tbr, 50k tbn, 100 tbc (default)
Metadata:
creation_time : 2015-05-29 14:49:20
handler_name : ?Mainconcept Video Media Handler
encoder : AVC Coding
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 317 kb/s (default)
Metadata:
creation_time : 2015-05-29 14:49:20
handler_name : #Mainconcept MP4 Sound Media Handler
File 'output.webm' already exists. Overwrite ? [y/N] y
[libvpx @ 0x132af40] v1.5.0
Output #0, webm, to 'output.webm':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42mp41
encoder : Lavf56.40.101
Stream #0:0(eng): Video: vp8 (libvpx), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 1000 kb/s, 50 fps, 1k tbn, 50 tbc (default)
Metadata:
creation_time : 2015-05-29 14:49:20
handler_name : ?Mainconcept Video Media Handler
encoder : Lavc56.60.100 libvpx
Stream #0:1(eng): Audio: vorbis (libvorbis), 44100 Hz, stereo, fltp (default)
Metadata:
creation_time : 2015-05-29 14:49:20
handler_name : #Mainconcept MP4 Sound Media Handler
encoder : Lavc56.60.100 libvorbis
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> vp8 (libvpx))
Stream #0:1 -> #0:1 (aac (native) -> vorbis (libvorbis))
Press [q] to stop, [?] for help
frame= 755 fps= 10 q=0.0 size= 1987kB time=00:00:15.12 bitrate=1076.5kbits/s
MiroVideoConverter est un wrapper multiplateforme et open source Nice autour de ffmpeg, qui, en particulier, prend en charge la conversion en WebM.
Je ne savais pas si ma copie de FFMPEG prend en charge WebM, j'ai donc d'abord converti ma vidéo MPEG4 en vidéo brute à l'aide de FFMPEG.
J'ai ensuite utilisé le vpxenc.exe fourni avec le SDK du projet WebM pour le convertir en WebM.
Lien vers le téléchargement du SDK: http://code.google.com/p/webm/downloads/list
Téléchargez, extrayez et regardez dans le dossier "bin". Il y a quelques exemples d'applications là-bas. Un décodeur est également fourni.
Commande que j'ai utilisée pour convertir une vidéo brute en WebM:
vpxenc.exe -w 720 -h 480 --rt -o v1.webm v1.yuv
HTH
Essayez-le avec avconv
:
avconv -i inmovie.mp4 -flags global_header -strict experimental outmovie.webm