小编Jon*_*n G的帖子

FFmpeg - PNG / JPG - 处理输入时发现无效数据

我正在尝试使用 FFmpeg 为视频添加水印。我有一个自定义版本的 FFmpeg,我正在创建它以保持二进制大小。我好像排除了FFmpeg在这个过程中读取PNG/JPG图片的能力:

ffmpeg -i ../weather.png
ffmpeg version 2.6.git Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
  configuration: --prefix=/home/user/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/user/ffmpeg_build/include --extra-ldflags=-L/home/user/ffmpeg_build/lib --bindir=/home/user/bin --enable-gpl --disable-doc --enable-yasm --disable-decoders --enable-decoder=mpeg4 --enable-decoder=aac --enable-decoder=h264 --enable-decoder=mpegvideo --enable-decoder=mpeg1video --enable-decoder=mpeg2video --enable-decoder=png --disable-encoders --enable-encoder=mpeg4 --enable-encoder=aac --enable-encoder=h264 --enable-encoder=libx264 --enable-encoder=mpeg1video --enable-encoder=mpeg2video --enable-encoder=png --disable-parsers --enable-parser=aac --enable-parser=mpeg4video --enable-parser=ac3 --enable-parser=h261 --enable-parser=h264 --enable-parser=vc1 --enable-parser=mpegvideo --disable-demuxers --enable-demuxer=aac --enable-demuxer=h264 --enable-demuxer=mpegvideo --enable-demuxer=m4v --enable-demuxer=mov --enable-demuxer=vc1 --enable-demuxer=mp4 --enable-demuxer=concat --disable-muxers --enable-muxer=h264 --enable-muxer=mpeg1video --enable-muxer=mpeg2video --enable-muxer=m4v --enable-muxer=mov --enable-muxer=vc1 --enable-muxer=md5 --enable-muxer=mp4 --enable-protocols --enable-indev=v4l --enable-indev=v4l2 --disable-filters --enable-filter=aresample --enable-filter=scale --enable-filter=movie …
Run Code Online (Sandbox Code Playgroud)

png codec ffmpeg decoding

5
推荐指数
1
解决办法
1万
查看次数

使用 V4L2 构建 FFmpeg

我想使用 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 …
Run Code Online (Sandbox Code Playgroud)

linux webcam ffmpeg ubuntu v4l2

5
推荐指数
1
解决办法
8435
查看次数

FFmpeg eq 过滤器复合体:对比

我在 FFmpeg 中使用 eq 过滤器:

https://ffmpeg.org/ffmpeg-filters.html#eq

使用如下命令:

ffmpeg -y -loop 1 -i input.jpg -filter_complex "[0:v]eq=1:0:1:1:1:1:1:1[outv]" -map [outv] -c:v libx264 -t 3 -pix_fmt yuv420p out.mp4 # does nothing
Run Code Online (Sandbox Code Playgroud)

文档表明过滤器的第一个组成部分是对比度:

设置对比度表达式。该值必须是 -2.0 到 2.0 范围内的浮点值。默认值为“0”。

但是,我发现为了不发生对比度变化,该值应为“1”。这不应该是默认的吗?

无论如何,如果这个第一个值是对比,我很困惑。它不像我期望的那样表现。我将它与例如 css 进行比较-webkit-filter: contrast(x)。在 CSS 中,contrast(0)使整个图像变灰。然而,在 FFmpeg 中,图像似乎是部分黄色和部分灰色(大概取决于我的图像:

在此处输入图片说明

CSScontrast(-1)无效。但是,在FFmpeg中,对比度-1几乎是倒对比度。我知道这两件事是完全分开实现的,但我本来希望有一个近似的关系。我误解了 eq 过滤器对比度值吗?

ffmpeg colors contrast

4
推荐指数
2
解决办法
2万
查看次数

标签 统计

ffmpeg ×3

codec ×1

colors ×1

contrast ×1

decoding ×1

linux ×1

png ×1

ubuntu ×1

v4l2 ×1

webcam ×1