2012-09-27 3 views
2

이것은 처음으로 여기에 질문을 게시 한 것이므로 나와 함께하시기 바랍니다. 우분투 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' '또는'unrecognized option '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 라이브 스트리밍에 필요한 합법적 인 .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 버전에 대한 설명서는 ffmpeg -h 또는 man 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에서 더 적합합니다.

관련 문제