使用 V4L2 构建 FFmpeg

Jon*_*n G 5 linux webcam ffmpeg ubuntu v4l2

我想使用 ffmpeg 访问我的网络摄像头。我试过:

ffmpeg -f v4l2 -i /dev/video0 output.mp4
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

Unknown input format: 'v4l2'
Run Code Online (Sandbox Code Playgroud)

类似地用video4linux2代替v4l2. 因此,我假设我的 ffmpeg 版本丢失了v4l2。我看到有一个配置选项--enable-libv4l2https://ffmpeg.org/ffmpeg-all.html#video4linux2_002c-v4l2)。我将其添加到我的配置中,但运行配置我得到:

ERROR: "libv4l2 not found using pkg-config"
Run Code Online (Sandbox Code Playgroud)

我如何将其添加到我的构建中?我正在遵循https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu上的指南,并进行一些修改以包含特定的解码器等。

据我所知,libv4l2 可能随 Ubuntu 软件包一起提供libv4l-dev。安装它:

sudo apt-get install libv4l-dev
Run Code Online (Sandbox Code Playgroud)

不过似乎并不影响我的问题。我可以看到/usr/lib/x86_64-linux-gnu/pkgconfig/libv4l2.pc,我猜这就是我需要的文件。也许我只需要在配置选项中将 ffmpeg / pkg-config 指向它?就像是:

PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig" ./configure ...
Run Code Online (Sandbox Code Playgroud)

?(不起作用)。修改--extra-cflags或者--extra-ldflags指向include/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
Run Code Online (Sandbox Code Playgroud)

似乎缺少 jpeg 库:

sudo apt-get install libjpeg-dev
Run Code Online (Sandbox Code Playgroud)

它编译正常,但我返回到原来的错误:

Unknown input format: 'v4l2'
Run Code Online (Sandbox Code Playgroud)

运行第一个命令时。

Jon*_*n G 1

我有配置选项--disable-indevs,但错过了该选项--enable-indev=v4l2。添加后者允许我的构建访问我的网络摄像头。