2013-10-10 9 views
8

उत्पन्न करता है मैं ffmpeg का उपयोग कर एक mp4 या flv h264 वीडियो (यूट्यूब वीडियो) से वीडियो स्ट्रीम निकालने का प्रयास कर रहा हूं।fppeg के साथ mp4 या flv से h264 कच्चे वीडियो स्ट्रीम निकालने के लिए एक अवैध स्ट्रीम

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 

(मैं केवल वीडियो की जरूरत है) अतिरिक्त धाराओं से छुटकारा पाने के मैं निम्नलिखित ffmpeg कमांड लाइन का इस्तेमाल किया: मूल वीडियो (test.flv) ffplay के साथ परेशानी के बिना खेलते हैं, ffprobe पालन एक त्रुटि देता है:

ffmpeg -i test.flv -map 0:0 -vcodec copy -an -f h264 test.h264 

नई धारा ffplay सहित किसी भी खिलाड़ी द्वारा पढ़ने योग्य नहीं है और ffprobe के साथ एक त्रुटि देता है: test.h264: अमान्य डेटा मिला जब प्रसंस्करण inputq = 0B च = 0/0

किसी भी शरीर एक है मैं क्या गलत कर रहा हूँ के बारे में विचार? अगर मैं (उदाहरण के लिए avi) एक और स्वरूप का उपयोग

ffmpeg -i test.flv -vcodec copy -an test.h264 

:

मैं भी सरल यूट्यूब कमांड लाइन करने की कोशिश की

ffmpeg -i test.flv -vcodec copy -an test.avi 

उत्पादन वीडियो वैध है।

अगर मैं ट्रांसकोड वीडियो

ffmpeg -i test.flv -an test.h264 

उत्पादन भी मान्य

कोई सुझाव है?

+0

कुछ ऐसा करने की कोशिश करें -vfbs h264_mp4toannexb। अपने आउटपुट से पहले उस विकल्प को जोड़ें। – alexbuisson

+0

आपको हमेशा पूर्ण ffmpeg कंसोल आउटपुट (केवल) शामिल करना चाहिए और न केवल अनुभागों को शामिल करना चाहिए। – LordNeckbeard

+0

मैंने पूरा कंसोल आउटपुट जोड़ने के लिए अपना प्रश्न संपादित किया। दरअसल, -bff: v h264_mp4toannexb @alexbuisson फ़िल्टर द्वारा इंगित की गई समस्या हल हो गई। क्या आप इसे एक उत्तर के रूप में जोड़ सकते हैं या मुझे यह करना चाहिए? धन्यवाद!! – dhia

उत्तर

19

एमपी 4 या एफएलवी कंटेनर से कच्चे वीडियो निकालने के लिए आपको -bsf:v h264_mp4toannexb या -vbfs h264_mp4toannexb विकल्प निर्दिष्ट करना चाहिए।

ffmpeg -i test.flv -vcodec copy -an -bsf:v h264_mp4toannexb test.h264 

H264 Annex B/NAL के बिना कच्ची धारा प्लेयर द्वारा डीकोड नहीं की जा सकती है। उस विकल्प के साथ ffmpeg एक एनएएल इकाई में प्रत्येक H264 नमूना का एक सरल "mux" निष्पादित करता है।

संबंधित मुद्दे