~에 따르면이 기사 명령을 성공적으로 사용했습니다.
$ 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이것은 빌드에 포함되지 않습니다.
그러므로 당신은필요도착하다얻다필터를 사용하시려면 최신 버전을 사용해 주세요.
설치 후 -vf
After로 이동하여 -i
명령어를 실행하면 결과가 나옵니다.
$ ffmpeg -i somevideo.mp4 -vf "select='gt(scene,0.9)'" -vsync 0 -f image2 /tmp/thumbnails-%02d.jpg