LoginSignup
3

More than 5 years have passed since last update.

[FFmpeg] libavfilter関連ツールのインストール

Posted at

Libavfilter

FFmpegには複雑な処理をおこなえるフィルターがたくさん備わっているのだが、使い方がちょっとむずかしい。
公式ドキュメントをみてもさっぱり感はある。

そこでまずは、同梱されているユーティリティーツールを使ってみることにする

前提

ffmpegをインストール済み(してない人はこちらへ)

graph2dotのビルドとインストール

$ cd ffmpeg
$ make alltools
# cp tools/graph2dot /usr/local/bin
$ graph2dot -h
Convert a libavfilter graph to a dot file.
Usage: graph2dot [OPTIONS]

Options:
-i INFILE         set INFILE as input file, stdin if omitted
-o OUTFILE        set OUTFILE as output file, stdout if omitted
-h                print this help
$ echo nullsrc,scale=640:360,nullsink | graph2dot -o graph.tmp
[Parsed_nullsrc_0 @ 0x30d78e0] size:320x240 rate:25/1 duration:-1.000000 sar:1/1
[Parsed_scale_1 @ 0x30d7ca0] Setting 'w' to value '640'
[Parsed_scale_1 @ 0x30d7ca0] Setting 'h' to value '360'
[Parsed_scale_1 @ 0x30d7ca0] w:640 h:360 flags:'bilinear' interl:0
query_formats: 3 queried, 2 merged, 0 already done, 0 delayed
[Parsed_scale_1 @ 0x30d7ca0] w:320 h:240 fmt:yuv420p sar:1/1 -> w:640 h:360 fmt:yuv420p sar:3/4 flags:0x2
$ cat graph.tmp
digraph G {
node [shape=box]
rankdir=LR
"Parsed_nullsrc_0\n(nullsrc)" -> "Parsed_scale_1\n(scale)" [ label= "inpad:default -> outpad:default\nfmt:yuv420p w:320 h:240 tb:1/25" ];
"Parsed_scale_1\n(scale)" -> "Parsed_nullsink_2\n(nullsink)" [ label= "inpad:default -> outpad:default\nfmt:yuv420p w:640 h:360 tb:1/25" ];
}

graphvizのインストール

graph2dotというツールは、グラフコンテキストからグラフスクリプト(?)を生成してくれるツールで
それだけではただのテキストですので、dotというツールで画像化します。

dotgraphvizというパッケージで管理されています。
yum管理されているので、簡単にインストール。

man dot
graphviz

# yum install graphviz
$ rpm -qs graphviz | grep dot
normal        /usr/bin/dot
normal        /usr/bin/dot2gxl
normal        /usr/bin/dotty
normal        /usr/bin/gxl2dot
normal        /usr/bin/vimdot
normal        /usr/lib64/graphviz/libgvplugin_dot_layout.so.6
normal        /usr/lib64/graphviz/libgvplugin_dot_layout.so.6.0.0
normal        /usr/lib64/libxdot.so.4
normal        /usr/lib64/libxdot.so.4.0.0
normal        /usr/share/graphviz/lefty/dotty.lefty
normal        /usr/share/graphviz/lefty/dotty_draw.lefty
normal        /usr/share/graphviz/lefty/dotty_edit.lefty
normal        /usr/share/graphviz/lefty/dotty_layout.lefty
normal        /usr/share/graphviz/lefty/dotty_ui.lefty
normal        /usr/share/man/man1/dot.1.gz
normal        /usr/share/man/man1/dotty.1.gz
normal        /usr/share/man/man1/vimdot.1.gz

dotで画像化

$ dot -Tpng graph.tmp -o graph.png

graph.png

すこし複雑にする

$ echo "nullsrc,split[main][tmp];[tmp]crop=iw:ih/2:0:0,vflip[flip];[main][flip]overlay=0:H/2,nullsink" | graph2dot -o graph2.tmp
$ dot -Tpng graph2.tmp -o graph2.png

graph2.png

小さい。。
dot以外に、レイアウトを変更するコマンドやオプションがたくさんありますので、マニュアルを御覧ください。

おわりに

無事に自分の記述しているフィルターグラフが正しいかどうかを可視化することができました。
エンジョイ Libavfilter !!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3