【问题标题】:ffmpeg unrecognized option 'segment_list_flags'ffmpeg 无法识别的选项'segment_list_flags'
【发布时间】:2012-09-19 18:22:54
【问题描述】:

这是我第一次在这里发布问题,请多多包涵。我正在使用 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 -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 启用某些选项?

【问题讨论】:

    标签: ffmpeg streaming segment


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      • 2021-09-19
      • 1970-01-01
      相关资源
      最近更新 更多