Ffmpegを使用してWebカメラにアクセスしたい。私は試した:
ffmpeg -f v4l2 -i /dev/video0 output.mp4
しかし、エラーが発生します:
Unknown input format: 'v4l2'
同様に、video4linux2
の代わりにv4l2
を使用します。したがって、ffmpegのビルドにv4l2
がないことを前提としています。設定オプション--enable-libv4l2
( https://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'
最初のコマンドの実行時。
設定オプションがありました--disable-indevs
そしてオプションを逃していた--enable-indev=v4l2
。後者を追加すると、ビルドでWebカメラにアクセスできるようになります。