l'extraction h264 flux vidéo brut de mp4 ou flv avec ffmpeg générer un flux invalide
Je suis en train d'extraire le flux vidéo à partir d'un mp4 ou flv h264 vidéo (vidéo youtube) à l'aide de ffmpeg. La vidéo d'origine (test.flv) jouer sans problème avec ffplay , ffprobe donne une erreur comme suit:
ffprobe version N-55515-gbbbd959 Copyright (c) 2007-2013 the FFmpeg developers
built on Aug 13 2013 18:06:32 with gcc 4.7.3 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l
ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
eex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-
amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --
enable-libxvid --enable-zlib
libavutil 52. 42.100 /52. 42.100
libavcodec 55. 27.100 /55. 27.100
libavformat 55. 13.102 /55. 13.102
libavdevice 55. 3.100 /55. 3.100
libavfilter 3. 82.100 / 3. 82.100
libswscale 2. 4.100 / 2. 4.100
libswresample 0. 17.103 / 0. 17.103
libpostproc 52. 3.100 /52. 3.100
[flv @ 000000000031ea80] Stream discovered after head already parsed
Input #0, flv, from 'test.flv':
Metadata:
starttime : 0
totalduration : 142
totaldatarate : 692
bytelength : 12286492
canseekontime : true
sourcedata : B42B95507HH1381414522145462
purl :
pmsg :
Duration: 00:02:22.02, start: 0.000000, bitrate: 692 kb/s
Stream #0:0: Video: h264 (Main), yuv420p, 640x268, 568 kb/s, 23.98 tbr, 1k t
bn, 47.95 tbc
Stream #0:1: Audio: aac, 44100 Hz, stereo, fltp, 131 kb/s
Stream #0:2: Data: none
Unsupported codec with id 0 for input stream 2
pour se débarrasser de la plus-flux ( j'ai seulement besoin de la vidéo), j'ai utilisé la suite de ffmpeg en ligne de commande:
ffmpeg -i test.flv -map 0:0 -vcodec copy -an -f h264 test.h264
Le nouveau flux est illisible par n'importe quel joueur, y compris ffplay et donne une erreur avec ffprobe :
test.h264: données non valides trouvé lors du traitement de inputq= 0B f=0/0
Tout corps d'avoir une idée sur ce que je fais mal?
J'ai aussi essayé de plus simple youtube ligne de commande:
ffmpeg -i test.flv -vcodec copy -an test.h264
si j'utilise un autre format (avi par exemple):
ffmpeg -i test.flv -vcodec copy -an test.avi
la vidéo de sortie est valide.
Si je transcoder la vidéo
ffmpeg -i test.flv -an test.h264
la sortie est également valable
Des suggestions?
Vous devez toujours inclure l'intégralité de ffmpeg sortie de la console(s) et pas seulement des sections.
J'ai édité ma question pour ajouter le remplir sortie de la console. En réalité, le bsf:v h264_mp4toannexb signalé par @alexbuisson filtre a résolu le problème. Pouvez-vous l'ajouter comme une réponse ou devrais-je le faire? Merci!!!!!
stackoverflow.com/questions/10380045/...
OriginalL'auteur dhia | 2013-10-10
Vous devez vous connecter pour publier un commentaire.
Pour extraire une vidéo brute de un MP4 ou FLV conteneur, vous devez spécifier le
-bsf:v h264_mp4toannexb
ou-vbfs h264_mp4toannexb
option.Le raw flux sans H264 Annexe B /NAL ne peut pas être décoder par le joueur. Avec cette option, ffmpeg effectuer un simple "mux" de chaque h264 échantillon dans une unité NAL.
OriginalL'auteur alexbuisson