J'ai un PC (cassé), où VLC ne lit les vidéos que sur la moitié gauche de l'écran, ce qui semble lié à OpenGL/pilotes (cf. aquí ). D'autre part, ffplay
n'a pas le problème de la demi-fenêtre, mais ne peut ouvrir que certaines vidéos que je veux lire.
Donc, comme pour Comment puis-je faire passer la sortie de ffmpeg à ffplay ? j'ai pensé à utiliser VLC pour ffplay
et je suis arrivé jusqu'ici (j'utilise cette vidéo ):
$ cvlc Rent_an_Ambassador.ogv --sout '#transcode{vcodec=IYUV}:std{access=file,mux=raw,dst=-}' | ffplay -f rawvideo -s 398x224 pipe:-
...
Warning: call to srand(1369860697)
Warning: call to rand()
Blocked: call to unsetenv("DBUS_ACTIVATION_ADDRESS")
Blocked: call to unsetenv("DBUS_ACTIVATION_BUS_TYPE")
[0x98f4b64] dummy interface: using the dummy interface module...
[0x9903254] mux_dummy mux: Open
[rawvideo @ 0x98bf890]Estimating duration from bitrate, this may be inaccurate
Input #0, rawvideo, from 'pipe:-':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0.0: Video: rawvideo, yuv420p, 398x224, 25 tbr, 25 tbn, 25 tbc
Donc, en gros ffplay
il détecte que l'interface de VLC IYUV
devrait être yuv420p
comme je l'ai lu dans Questions et discussions des utilisateurs de Libav - Re : Mettre à l'échelle une image de 4:2:2 à 4:2:0
Notez que YUV420P est aussi connu sous le nom de I420 et IYUV.
... malheureusement, la sortie vidéo n'est pas bonne :
Notez que si je ne spécifie pas la taille pour les ffplay
il échoue avec :
picture size invalid (0x0)
Last message repeated 1 times
[rawvideo @ 0x9c6f890]Could not find codec parameters (Video: rawvideo, yuv420p)
[rawvideo @ 0x9c6f890]Estimating duration from bitrate, this may be inaccurate
pipe:-: could not find codec parameters
Donc, ma question est :
- Quelqu'un connaît-il une ligne de commande correcte pour passer de
vlc
affplay
- en utilisant la vidéo brute ? - Y a-t-il un moyen de faire
vlc
de lire l'audio comme d'habitude, et d'acheminer sa sortie vidéo sous forme de vidéo brute versffplay
(afin d'éviter la surcharge du muxing de la vidéo et de l'audio dans un nouveau format, que ffplay devrait démuxer en plus ?)
EDIT : Voici une ligne de commande qui fournit une vidéo correcte avec le fichier de test ci-dessus (via The VideoLAN Forums - Envoyer des données YUV à un tube sous Windows ):
cvlc Rent_an_Ambassador.ogv --vout=yuv --yuv-yuv4mpeg2 --yuv-file=/dev/stdout | ffplay pipe:-
Cependant :
-
ffplay
segfaults lorsque j'essaie de décompresser d'autres vidéos avecvlc
- Pour une troisième catégorie de vidéos,
vlc
n'exportera pas le paramètre FPS - doncffplay
démarre, affiche une image, puis fige l'affichage (et vous devrez faire défiler continuellement le bouton de la souris pour que la fenêtre vidéo se rafraîchisse). Notez ici que vous ne pouvez pas forcer le taux de trame de ffplay pour les conteneurs intemporels - et en faisant--yuv-file
(au lieu de--sout
) le--sout-transcode-fps
ne s'appliquera pas (duvlc
côté des choses)