web-dev-qa-db-ja.com

V4L2でのFFmpegビルド

Ffmpegを使用してWebカメラにアクセスしたい。私は試した:

ffmpeg -f v4l2 -i /dev/video0 output.mp4

しかし、エラーが発生します:

Unknown input format: 'v4l2'

同様に、video4linux2の代わりにv4l2を使用します。したがって、ffmpegのビルドにv4l2がないことを前提としています。設定オプション--enable-libv4l2https://ffmpeg.org/ffmpeg-all.html#video4linux2_002c-v4l2 )があることがわかります。これを構成に追加しましたが、configureを実行すると次のようになります。

ERROR: "libv4l2 not found using pkg-config"

これをビルドに追加するにはどうすればよいですか?私は https://trac.ffmpeg.org/wiki/CompilationGuide/Ubunt のガイドに従っていますが、特定のデコーダーなどを含めるためにいくつかの変更が加えられています。

Libv4l2がUbuntuパッケージlibv4l-devに付属している可能性があることを理解しています。それをインストールする:

Sudo apt-get install libv4l-dev

しかし、私の問題には影響を与えていないようです。 /usr/lib/x86_64-linux-gnu/pkgconfig/libv4l2.pcが表示されます。これは、必要なファイルだと思います。たぶん私はconfigureオプションでffmpeg/pkg-configを指す必要がありますか?何かのようなもの:

PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig" ./configure ...

? (動作しません)。 --extra-cflagsまたは--extra-ldflagsを変更して、/ libsを含めるようにしますか?それも機能させることができませんでした。リンクされたFFmpegビルドガイドは、すべてのパッケージを私のホームフォルダーのffmpeg_buildディレクトリに保持します。どういうわけかそこにlibv4l-devをインストールする必要がありますか?

Config.logのテール:

END /tmp/ffconf.5wdQhyZ1.c
gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -I/home/jon/ffmpeg_build/include -std=c99 -fomit-frame-pointer -pthread -c -o /tmp/ffconf.LGU7tq3n.o /tmp/ffconf.5wdQhyZ1.c
gcc -L/home/jon/ffmpeg_build/lib -Wl,--as-needed -Wl,-z,noexecstack -o /tmp/ffconf.Fhn6FivT /tmp/ffconf.LGU7tq3n.o -lv4l2 -lpthread -lv4lconvert -lrt -lm -ljpeg -lmp3lame -lfdk-aac -lm -lz -pthread
/usr/bin/ld: cannot find -ljpeg
collect2: error: ld returned 1 exit status
ERROR: libv4l2 not found using pkg-config

Jpegライブラリがないようです:

Sudo apt-get install libjpeg-dev

コンパイルはOKですが、元のエラーに戻ります。

Unknown input format: 'v4l2'

最初のコマンドの実行時。

1
Jon G

設定オプションがありました--disable-indevsそしてオプションを逃していた--enable-indev=v4l2。後者を追加すると、ビルドでWebカメラにアクセスできるようになります。

1
Jon G