avconvのシーンチェンジ検出が正しくありません。

avconvのシーンチェンジ検出が正しくありません。

~によるとこの記事 コマンドを正常に使用しました。

$ 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これはビルドに含まれません。

だからあなたは必要到着得るフィルタを使用するには、最新バージョンを使用してください。

インストール後に-vfAfterに移動して-iコマンドを実行すると、結果が表示されます。

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

おすすめ記事