avconv의 장면 변경 감지가 올바르지 않습니다.

avconv의 장면 변경 감지가 올바르지 않습니다.

~에 따르면이 기사 명령을 성공적으로 사용했습니다.

$ ffmpeg -vf "select='eq(pict_type,I)'" -i somevideo.mp4 -vsync 0 -f image2 /tmp/thumbnails-%02d.jpg

두 번째 명령을 시도했습니다.

$ ffmpeg -vf "select='gt(scene\,0.9)'" -i somevideo.mp4 -vsync 0 -f image2 /tmp/thumbnails-%02d.jpg

그러나 오류로 끝납니다:

Undefined constant or missing '(' in 'scene'

왜냐하면

$ ffmpeg -version
ffmpeg version 0.8.17-4:0.8.17-0ubuntu0.12.04.1, Copyright (c) 2000-2014 the Libav developers
  built on Mar 16 2015 13:28:23 with gcc 4.6.3
The ffmpeg program is only provided for script compatibility and will be removed
in a future release. It has been deprecated in the Libav project to allow for
incompatible command line syntax improvements in its replacement called avconv
(see Changelog for details). Please use avconv instead.
ffmpeg 0.8.17-4:0.8.17-0ubuntu0.12.04.1
libavutil    51. 22. 3 / 51. 22. 3
libavcodec   53. 35. 0 / 53. 35. 0
libavformat  53. 21. 1 / 53. 21. 1
libavdevice  53.  2. 0 / 53.  2. 0
libavfilter   2. 15. 0 /  2. 15. 0
libswscale    2.  1. 0 /  2.  1. 0
libpostproc  52.  0. 0 / 52.  0. 0

두 명령을 모두 성공적으로 실행한 .을 사용해 보았지만 avconv두 경우 모두 잘못된 결과가 나왔습니다(프레임이 너무 많아서 비디오 필터 표현식이 무시된 것 같았습니다).

ffmpeg내 오류를 수정 하거나 avconv올바른 결과를 제공하려면 어떻게 해야 합니까 ?

답변1

첫째, -vf입력에 영향을 미치려면 입력 뒤에 지정해야 합니다. 이것이 avconv가 두 번째 명령에서 작동하는 유일한 이유인 것 같습니다. 필터를 구문 분석하지 않고 삭제해야 하기 때문입니다. 매개변수를 뒤로 이동하면 주어진 것과 동일한 오류가 -i발생합니다 . ffmpeg새 버전에서는 ffmpeg실제로 이것을 버그로 취급합니다.

이제 두 명령이 모두 작동하지 않는 이유는 간단합니다. 사용 중인 버전 중 어느 버전도 필터를 지원하지 않기 때문입니다 scene. 게다가 scene필터가 아직 없는 것 같아요마스터 브랜치따라서 avconv현재로서는 avconv전혀 지원되지 않습니다. 의 경우 ffmpeg필터가r7286814이것은 빌드에 포함되지 않습니다.

그러므로 당신은필요도착하다얻다필터를 사용하시려면 최신 버전을 사용해 주세요.

설치 후 -vfAfter로 이동하여 -i명령어를 실행하면 결과가 나옵니다.

$ ffmpeg -i somevideo.mp4  -vf "select='gt(scene,0.9)'" -vsync 0 -f image2 /tmp/thumbnails-%02d.jpg

관련 정보