2 votes

Comment lire une vidéo avec de l'audio provenant d'un fichier séparé ? (mux pendant la lecture)

Mon ordinateur portable fonctionne sous Xubuntu 14.04 LTS. Je compose la musique d'un film muet et j'essaie de "Mickey Mouse" il (synchroniser les notes avec l'action). Je peux modifier légèrement le montage du film muet pour aligner les événements sur les temps de la musique. L'outil de réalisation du film produit un rendu intermédiaire sans perte (AVI avec Huffyuv) d'environ 1 Go pour deux minutes, que je peux encoder dans un format compressé (WebM avec VP8 ou MPEG-4 avec AVC).

Si j'ai déjà encodé la vidéo, j'utilise normalement cette ligne de commande pour combiner la vidéo compressée avec le score, sur la base des éléments suivants avconv remplacer l'audio :

avconv -y -i the_video.mp4 -i the_audio.wav -map 0:0 -map 1:0 -c:v copy -c:a libvo_aacenc -ac 1 -ab 48000 -t 120 result.mp4
avplay result.mp4

Parce que l'intermédiaire sans perte fait des gigaoctets, je ne veux pas utiliser -c:v copy de copier ces gigaoctets à chaque fois que je veux vérifier mes modifications. Je ne veux pas non plus encoder à chaque fois, car le processeur de mon ordinateur portable (Atom N450, 1 cœur 2 threads) est trop lent pour encoder une vidéo de taille normale en temps réel. Mais lorsque j'essaie d'utiliser une ligne de commande similaire pour lire au lieu de coder :

avplay -i the_video.avi -i sound/sticks.wav -map 0:0 -map 1:0

Je reçois le message d'erreur suivant :

avplay version 9.18-6:9.18-0ubuntu0.14.04.1, Copyright (c) 2003-2014 the Libav developers
  built on Mar 16 2015 13:20:58 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
Argument 'sound/sticks.wav' provided as input filename, but 'hyf_enc.mp4' was already specified.

Google "avplay" "was already specified" n'a produit que des résultats de code source, pas de solutions de contournement. J'ai essayé "ffplay" "was already specified" mais la plupart des pages contenant des questions à ce sujet concernaient la superposition d'un PNG, et non le muxing.

Comment lire l'audio d'un fichier et la vidéo d'un autre fichier, avec recherche liée entre les deux, sans avoir à les remuxer dans un fichier sur le disque ? Est-ce qu'un lecteur dans les dépôts d'Ubuntu autre que avplay fonctionne bien pour cela ? Ou devrais-je simplement réduire la taille de l'intermédiaire sans perte afin de rendre le remuxing pratique ?

0voto

jeckhart Points 186

Mes connaissances sont basées sur le ffmpeg y ffplay outils qui, d'après ce que j'ai compris, sont remplacés par avconv y avplay sur Ubuntu qui sont censés être fonctionnellement équivalents (ne débattons pas de la portée de cette équivalence fonctionnelle).

Je ne pense pas que le jouer les outils acceptent des entrées multiples. Vous pouvez diffuser via un tuyau de ffmpeg (er, avconv ) en ffplay ( avplay ). Essayez ceci :

$ avconv -i the_video.avi -i sound/sticks.wav -map 0:0 -map 1:0 - | avplay -

Ce qui précède est une supposition basée sur votre question, mais elle est basée sur mon propre exemple réel que j'ai collé ci-dessous juste à titre de référence (oui, j'utilise l'outil de gestion de l'information). ffmpeg y ffplay outils) :

ffmpeg -f alsa -i hw:0,2 -f v4l2 -i /dev/video0 -f avi pipe:1 | ffplay -

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X