2016-01-22 2 views
0

Je voudrais enregistrer un fichier .webm à côté de mon fichier principal .mkv pour servir, ce fichier .webm, à un objet vidéo à la page html pour lire (genre de diffusion en continu simple, juste pour voir ce qu'il est l'enregistrement)Est-il possible d'enregistrer un fichier .webm en utilisant gstreamer?

I « utilise pipeline ci-dessous (avec T à cet effet) pour enregistrer de ma webcam:

gst-launch-1.0 v4l2src device=/dev/video1 ! tee name=t t. \ 
! image/jpeg,width=1920,height=1080 ! capssetter \ 
caps='image/jpeg,width=1920,height=1080,framerate=30/1' ! queue \ 
! matroskamux name=mux pulsesrc device="alsa_input.usb-046d_Logitech_Webcam_C930e_AAF8A63E-02-C930e.analog-stereo" \ 
! 'audio/x-raw,channels=1,rate=44100' ! audioconvert ! vorbisenc ! queue \ 
! mux. mux. ! filesink location=/home/sina/Desktop/Recordings/Webcam.mkv \ 
t. ! queue ! (...pipeline?...) ! filesink location=/home/sina/Desktop/Recordings/TestWebcam.webm 

Comment dois-je remplir le pipeline pour la dernière ligne (?? quelle structure encodeur muxer ...)

+0

Vous voulez que le fichier .webm soit sans audio? –

+0

oui, seulement la vidéo, l'audio n'est pas important, juste pour être joué en utilisant l'objet vidéo sur l'interface utilisateur html tout en étant enregistré –

+0

Comme je l'ai compris, vous voulez mettre le flux de JPEG à votre fichier .mkv, correct? Pourquoi? –

Répondre

0

Bien qu'il soit encore possible de convertir le flux de JPEG pictur Avec .WebM avec le flux VP8 à l'intérieur, il va consommer des opérations et les résultats ne seront pas jolis: le codage → décodage → la séquence de codage va gâcher la sortie mauvaise (et utiliser plus de CPU).

Si vous n'avez pas besoin JPEGs et ne se soucient pas de format vidéo dans le fichier .mkv, solution la plus simple consiste à utiliser l'encodeur VP8 simple (parce que les deux .mkv et .webm fichiers peuvent contenir VP8) et diviser les flux codés:

gst-launch-1.0 -e \ 
    v4l2src ! vp8enc ! tee name=t ! \ 
     queue ! matroskamux name=m ! filesink location=1.mkv \ 
     pulsesrc ! vorbisenc ! m. \ 
    t. ! \ 
     queue ! webmmux ! filesink location=1.webm 

aussi, assurez-vous que vous utilisez l'option -e pour forcer EOS lorsque vous résiliez commande via Ctrl +C. GStreamer WebM muxer est très petite couche sur Matroska muxer: .webm est presque égale à .mkv.

+0

Merci pour votre commentaire! mais le format vidéo est important pour moi, il doit être MJPEG (c'est parce que ma webcam offre la capture HD uniquement avec MJPEG compte tenu du fait que je veux que le résultat final soit 1080P) d'autre part, le format de .webm n'est pas si important (juste besoin d'un fichier jouable via un objet vidéo html) la première partie de mon pipeline fonctionne bien mais quand j'ai ajouté vp8enc + webmmux à la deuxième partie (pour .webm) il n'a pas réussi à négocier le format ... avez-vous suggestion à ce sujet? –