ffplay - comment lire ensemble des fichiers vidéo et audio séparés

9

Je suis donc capable de transcoder des fichiers vidéo et audio séparés en un seul fichier film, comme ceci:

ffmpeg -ss 0 -lowres 0 -r 24 -i dcp/picture.mxf -vf "xyz2rgb" -i mov/sound.wav -ac 2 -ab 256k -vb 3000k -t 10 -y mov/movie.mp4

Et voyez et écoutez le film résultant comme ceci:

ffplay -ss 0 -lowres 1 -vf "xyz2rgb" mov/movie.mp4

Cependant, pour éviter d'avoir à transcoder le film et le son ensemble dans un fichier avant de pouvoir le voir, je voudrais simplement lire les deux fichiers séparés ensemble. Pour autant que je sache, ffplay ne vous permet pas de combiner deux fichiers différents (non?).

En lisant ces forums, il semble que vous pouvez diriger une sortie ffmpeg vers ffplay . Ce qui suit est aussi proche que moi. Ce n'est pas si proche. :( Les ​​informations vidéo sont clairement transférées, mais il s'agit de "neige" verte dans la bonne taille de trame, avec des indices de l'imagerie réelle dansant à l'intérieur de la neige verte horrible. De cette façon, je sais que quelque chose des données d'image réelles est transféré , tout simplement pas correctement. Du tout.

Et pas de lecture audio. Le son ne continue pas (je ne pense pas.) Maintenant ... je suis coincé. Ce qui suit suggère ce que j'essaie de faire, mais cela ne fonctionne pas:

ffmpeg -ss 0 -lowres 0 -r 24 -i dcp/picture.mxf -vf "xyz2rgb" -i mov/sound.wav -f rawvideo - | ffplay -f rawvideo -vf "xyz2rgb" -s 1998x1080 -
Bill Rudolph Yaber Russell
la source

Réponses:

4

Les informations vidéo sont clairement transférées, mais il s'agit de «neige» verte dans la bonne taille de cadre, avec des notes d'imagerie réelle dansant à l'intérieur de l'horrible neige verte.

Ce doit être le format de pixel. Vous appliquez le xyz2rgbfiltre qui convertit l'espace colorimétrique DCP en RVB, puis vous redirigez la vidéo brute vers ffplay. Ici, vous appliquez à nouveau le xyz2rgbfiltre , ce qui provoque probablement les distorsions, car FFmpeg n'a aucune idée de la façon dont la vidéo brute est codée. Il fera tout ce que vous voulez avec la vidéo, même en convertissant deux fois l'espace colorimétrique.


J'ai eu de bons résultats en canalisant le format Matroska au ffplaylieu de rawvideo, ce qui vous donne également la possibilité de décoder l'audio (voir ci-dessous). Le format Matroska peut contenir tout type de codec.

Notez que l'ordre des options est important dans FFmpeg, et vous devriez probablement utiliser une version plus récente car elle est plus stricte sur l'endroit où vous placez les options:

  • Les options globales comme -yviennent en premier.
  • Ensuite, spécifiez les options de lecture des fichiers d'entrée - -r 24force la fréquence d'images du picture.mxffichier.
  • Spécifiez ensuite tous les fichiers d'entrée.
  • Viennent ensuite les options de codec telles que les filtres vidéo, le débit vidéo, etc.

Dans votre situation, il est logique de simplement copier le flux audio, car nous n'avons pas vraiment besoin de le transcoder. La vidéo doit être transcodée pour pouvoir appliquer le filtre.

Quelque chose comme ça devrait faire. Notez comment nous définissons explicitement le format de sortie matroskaet laissons ffplayle reste lui-même:

ffmpeg -r 24 -i dcp/picture.mxf -i mov/sound.wav \
-filter:v "xyz2rgb" -b:v 3000k -c:a copy -t 10 -f matroska - | \
ffplay -

J'ai utilisé la syntaxe (IMO moins ambiguë) pour des options telles que -filter:vau lieu de -vf, -b:vau lieu de -vbet -c:aau lieu de -acodec.

Si ce format ne fonctionne pas pour vous, essayez AVI:

ffmpeg -i picture.mxf -i sound.wav -f avi - | ffplay -

Cela a fonctionné pour moi sans problème , et cela ne m'a même pas obligé à utiliser le filtre dont vous aviez besoin. L'audio fonctionnait également.

slhck
la source
slhck, merci pour ça! OK, j'ai obtenu ceci: <br/> <br/> Impossible de trouver un format de sortie approprié pour '-filter: v' -filter: v: Argument invalide <br> <br> ?? (idem pour -vf). Le codec et le filtre sont d'ici: goo.gl/avE1f - l'auteur l'a écrit et conçu une installation personnalisée de ffmpeg (une seule version qui fonctionne avec cette procédure et ses fichiers) qui inclut le codec propriétaire et le filtre d'espace colorimétrique, et donc peut le décoder. L'installation ffmeg personnalisée doit être capable de lire la séquence d'images propriétaire JPEG2000 MJPEG contenue à l'intérieur du MFX d'image. Si cela aide à noter :)
Bill Rudolph Yaber Russell
Oups, je suis un mannequin, j'ai oublié de supprimer les pauses "\" sur la ligne de commande. Quoi qu'il en soit, maintenant, lorsque j'entre votre suggestion, les chiffres montrent la diffusion en continu mais aucune fenêtre ne s'ouvre, puis environ 20 secondes plus tard, elle s'arrête avec: <br /> <br /> Erreur de segmentation: 1136,0 taille = 138 Ko temps = 00: 00: 00,08 débit binaire = 13445.2kbits / s
Bill Rudolph Yaber Russell
UNE IMAGE VAUT MILLE MOTS - ici, cette vidéo d'écran pratique montre ce qui fonctionne et ce qui ne fonctionne pas: dl.dropbox.com/u/11290938/screen_grab_ffdcp_750.mov
Bill Rudolph Yaber Russell
Merci beaucoup pour la vidéo. Tout d'abord, votre première commande rawvideo a le problème que vous spécifiez la mauvaise taille. Votre entrée a 500x270, ou du moins c'est ce qui est canalisé ffplay. , Votre sortie a également rgb48lele format de pixel ( en raison du filtre), mais ffplaysuppose yuv420p, vous devez également préciser que: ffplay -f rawvideo -s 500x270 -pix_fmt rgb48le -. Quant au segfault: aucune idée… peut-être que vous pourriez créer et télécharger un petit fichier de test quelque part?
slhck
Ooo goodie, testez les fichiers! En effet, merci. La raison de 500x270 est que j'ai spécifié "lores 2" qui le réduit deux fois (pour tenir dans une capture d'écran bien rangée pour vous :) Il semble donc que j'ai raté un. En guise d'arrière-plan, ce fichier est un DCP fait maison (pensez à "l'impression de film numérique" pour une salle de cinéma, c'est pourquoi les médias sont si étranges), 2K à 1998x1080 (aspect 1,85 pixel carré). Lors de l'extraction de la séquence d'images, c'est correct, et moi et j'ai soumis le package hier et ils l'ont joué sur un DLP dans la salle de cinéma où il sera montré (pour une nuit en festival) - & c'était vrai (ouf!).
Bill Rudolph Yaber Russell
3

Cela ne transcoderait pas les flux:

ffmpeg -i video.mkv -i audio.mkv -c copy -map 0:0 -map 1:1 output.mkv

-map 1:1= deuxième fichier, flux 1 (généralement audio). -c copy= -c:v copy -c:a copy. Par défaut, le fichier multiplexé est aussi long que le fichier plus long, mais le -shortestferait aussi longtemps que le fichier plus court.

Lri
la source
Merci pour cette information. Je n'ai pas besoin d'un fichier de sortie, mais ces commutateurs sont vraiment bons à connaître.
Bill Rudolph Yaber Russell
3
ffmpeg -lowres 2 -ss 0 -r24 -i MOVIE.MOV -ss 0 -i AUDIO.WAV -vf xyz2rgb -ac: 2 -c:v mpeg2video -f avi - | ffplay -

Pour mes besoins, cela permet un examen rapide du contenu d'un DCP (Digital Cinema Package) que vous pouvez créer avec des outils open source . Le DCP utilise l'espace colorimétrique xyz, vous devez donc avoir un filtre vidéo xyz installé , sinon vous ne pouvez pas l'utiliser dans la ligne ci-dessus. (Ce n'est pas grave, ça aura juste l'air fortement orange, vous ne verrez pas les vraies couleurs.)

J'ai ajouté le codec mpeg2video b / c, mais en réduisant la qualité, c'est un faible taux et des tampons un peu, donc cela fonctionne plus bien sur ma machine. (De plus, pour une raison quelconque, sans transcoder d'abord, je ne reçois qu'une image figée de la séquence mpeg jpeg2000 alimentée à un puissant 125 Mo / s du MXF, à moins que je ne commence "- ss 0", c'est-à-dire au tout début du .) Avec une machine TRÈS RAPIDE, ne spécifiant aucun codec (supprimez "-c: v mpeg2video"), pleine taille ("-lores 0") et à partir de 0 (-ss 0), vous pouvez théoriquement revoir le cinéma 2K DCP de qualité exactement tel quel. Eh bien, à l'exception des instructions spéciales incluses dans les XML - sous-titres ou autre programmation. Mais en général. (BTW "-ac: 2" sous-mélange 5.1 à 2.0 - bien que vous puissiez disposer d'un matériel prenant en charge l'audition 5.1, auquel cas utilisez "-c: une copie".)

Merci à Matthias à Belle-Nuit , et slhck ci-dessus pour POUR PATIENTEMENT me guider à travers cela. Je vous remercie!!!! C'est assez utile. Et en fait, cela m'a sauvé d'une projection de film potentiellement embarrassante au théâtre Aero dimanche soir. La numérotation de ma séquence d'images était hors séquence - je l'ai trouvée avec cela et corrigée!

Wow, tout cela pour une seule ligne de commande, qui savait;)

Cheereo - b worldpoop.com

Bill Rudolph Yaber Russell
la source
J'ai eu cette erreur: Aucun filtre de ce type: 'xyz2rgb'
Dr.jacky