
~によるとこの記事 コマンドを正常に使用しました。
$ ffmpeg -vf "select='eq(pict_type,I)'" -i somevideo.mp4 -vsync 0 -f image2 /tmp/thumbnails-%02d.jpg
2番目のコマンドを試しました。
$ 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が2番目のコマンドで動作する唯一の理由のようです。フィルタを解析せずに削除する必要があるためです。パラメータを後ろに移動すると、指定されたエラーと同じエラーが-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