2012-09-27 350 views
2

這是我第一次在這裏發佈一個問題,所以請耐心等待。我使用的是Ubuntu 12.04和ffmpeg版本0.11.2,我試圖從/ dev/video0中捕獲視頻,對視頻進行分段,然後創建一個列出所有分段的m3u8列表文件。根據http://ffmpeg.org/ffmpeg.html#Synopsis的ffmpeg文檔,ffmpeg在創建列表文件(如'-segment_list_flags'和'-segment_list_type')時支持某些選項。但是,當我嘗試將這些內容實施到腳本中時,我剛剛收到一條錯誤消息:「無法識別的選項'segment_list_flags'」或「無法識別的選項'segment_list_type'」。我很喜歡這樣,只要是在外觀還是實際的命令:ffmpeg無法識別的選項'segment_list_flags'

ffmpeg -f video4linux2 -s wvga -t ${CAPTURE_DURATION} -i "/dev/video0" \ 
    -vcodec ${VID_CODEC} -b:v 96k -flags +loop -cmp +chroma \ 
    -partitions +parti4x4+partp8x8+partb8x8 -subq 5 -trellis 1 -refs 1 -coder 0 \ 
    -me_range 16 -keyint_min 25 -sc_threshold 40 -map 0 -flags -global_header \ 
    -i_qfactor 0.71 -bt 200k -maxrate 96k -bufsize 96k -rc_eq 'blurCplx^(1-qComp)' \ 
    -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -aspect 320:240 -g 30 \ 
    -async 2 -preset fast -crf 22 -threads 0 -sameq -f segment -segment_time ${SEG_TIME} \ 
    -segment_list ${LOCATE}${OUTPUT}_first.m3u8 -segment_list_flags +live \ 
    -segment_list_size ${SEG_LIST_SIZE} -segment_format ${SEG_FORMAT} -acodec libmp3lame \ 
    -ar 4800 -ab 64k -y "${LOCATE}${OUTPUT}%01d.${EXTENSION}" 

在我的劇本的其他部分,我明明有你看到的定義這些變量,他們都做工精細。我應該提到,在我嘗試實施-segment_list_flags選項之前,它確實吐出了一個列表文件,但它不是我需要用於Http Live Streaming的合法.m3u8列表文件。它只是順序列出了我告訴它創建的不同$ {LOCATE} $ {OUPUT}段。

我在終端命令的完整輸出是這樣的:

ffmpeg version 0.11.2 Copyright (c) 2000-2012 the FFmpeg developers 
    built on Sep 27 2012 13:32:44 with gcc 4.6.3 
    configuration: --enable-gpl --enable-gray --enable-runtime-cpudetect --enable-bzlib --enable-gnutls --enable-libass --enable-libcelt --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libcdio --enable-libdc1394 --enable-libfaac --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libnut --enable-libopenjpeg --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libv4l2 --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-openal --enable-openssl --enable-zlib --enable-nonfree --enable-version3 --enable-x11grab 

    libavutil  51. 54.100/51. 54.100 
    libavcodec  54. 23.100/54. 23.100 
    libavformat 54. 6.100/54. 6.100 
    libavdevice 54. 0.100/54. 0.100 
    libavfilter  2. 77.100/2. 77.100 
    libswscale  2. 1.100/2. 1.100 
    libswresample 0. 15.100/0. 15.100 
    libpostproc 52. 0.100/52. 0.100 

[video4linux2,v4l2 @ 0x30e1e80] The V4L2 driver changed the video from 852x480 to 640x480 
[video4linux2,v4l2 @ 0x30e1e80] Estimating duration from bitrate, this may be inaccurate 
Input #0, video4linux2,v4l2, from '/dev/video0': 
    Duration: N/A, start: 10590.729975, bitrate: 110592 kb/s 
    Stream #0:0: Video: rawvideo (I420/0x30323449), yuv420p, 640x480, 110592 kb/s, 30 tbr, 1000k tbn, 30 tbc 
Unrecognized option 'segment_list_flags' 
Failed to set value '+live' for option 'segment_list_flags' 

如果有任何人知道它爲什麼給我這個錯誤,我會很感激,如果你能幫忙。也許我沒有從./configure啓用一些選項?

回答

1

在線文檔由FFmpeg git-master生成。因此,如果您使用的不是最新代碼,那麼您必須參考ffmpeg -hman ffmpeg獲取您的特定ffmpeg版本的文檔。這是爲什麼一般用戶被推薦使用git-master而不是發行版的原因之一。發行版主要針對有強制性使用「發行版」的發行版。 segment_list_flags選項是added less than 3 weeks ago,可能不會回到0.11.2。

爲你的命令的一些建議:

  • 不要使用-sameq。見sameq does not mean "same quality"

  • 不建議聲明每個單獨的libx264選項,並且 已被-preset選項折舊。另外,由於您的 已經使用預設,因此另外聲明 這些選項可能會導致破損是沒有意義的。請參閱FFmpeg and x264 Encoding Guide

  • FFmpeg使用問題更適合於superuser.com。