小编llo*_*gan的帖子

如何使用 ffmpeg 以合理的质量将视频转换为 GIF?

我正在将视频转换为 GIF 文件ffmpeg

ffmpeg -i input.flv -ss 00:00:00.000 -pix_fmt rgb24 -r 10 -s 320x240 -t 00:00:10.000 output.gif
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但输出 gif 文件的质量非常低。

任何想法如何提高转换后的 gif 的质量?

gif ffmpeg

500
推荐指数
12
解决办法
39万
查看次数

如何使用 ffmpeg 获取视频分辨率?

我正在尝试使用以下命令获取视频的分辨率:

ffmpeg -i filename.mp4
Run Code Online (Sandbox Code Playgroud)

我得到了很长的输出,但我只需要 bash 脚本的宽度和高度。我应该如何过滤掉这些参数?也许有更好的方法来做到这一点。

video metadata ffmpeg

56
推荐指数
3
解决办法
7万
查看次数

在 linux 中加入 mp4 文件

我想加入两个 mp4 文件来创建一个。视频流以 h264 编码,音频以 aac 编码。由于计算原因,我无法将视频重新编码为另一种格式。此外,我不能使用任何 GUI 程序,所有处理都必须使用 Linux 命令行实用程序执行。FFmpeg 无法对 mpeg4 文件执行此操作,因此我使用 MP4Box:

MP4Box -add video1.mp4 -cat video2.mp4 newvideo.mp4
Run Code Online (Sandbox Code Playgroud)

不幸的是,音频变得混乱了。我认为问题是音频在 aac 中,所以我将其转码为 mp3 并再次使用 MP4Box。在这种情况下,音频在newvideo.mp4(对应于video1.mp4)的前半部分很好,但随后它们没有音频,我也无法在视频中导航。

我的下一个想法是音频和视频流的长度存在一些小的差异,我应该修复。因此,对于每个输入视频,我拆分了视频和音频流,然后使用 FFmpeg 中的 -shortest 选项将它们连接起来。

因此,对于我运行的第一个视频:

 avconv -y -i video1.mp4 -c copy -map 0:0 videostream1.mp4
 avconv -y -i video1.mp4 -c copy -map 0:1 audiostream1.m4a
 avconv -y -i videostream1.mp4 -i audiostream1.m4a  -c copy -shortest  video1_aligned.mp4
Run Code Online (Sandbox Code Playgroud)

第二个视频类似,然后像以前一样使用 MP4Box。不幸的是,这也不起作用。我唯一的成功是当我分别加入视频流(即 videostream1.mp4 和 videostream2.mp4)和音频流(即 audiostream1.m4a 和 audiostream2.m4a),然后在最终文件中加入视频和音频。但是,视频的后半部分将丢失同步。具体来说,音频和视频有 1 秒的延迟。任何建议都非常受欢迎。

mp4 join concatenation

41
推荐指数
3
解决办法
6万
查看次数

FFmpeg - 在脸上应用模糊

我正在尝试使用 FFmpeg 来模糊视频的一部分(特别是为了模糊人脸)。

我一直在尝试使用时间线编辑和各种模糊过滤器的组合,但我找不到一种方法来只模糊视频的一部分。

我希望是这样的:

-vf boxblur=enable='between(t,10,100)':width=20:height=20:x=400:y=200
Run Code Online (Sandbox Code Playgroud)

width/height模糊盒的大小和x/y模糊箱的位置。

这样的事情可能吗?

video ffmpeg

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

如何在不损失质量的情况下将 10 位 H.265/HEVC 视频转换为 H.264?

我的笔记本电脑无法处理 10 位 H.265 / HEVC 视频,所以我想将它们转换为 10 位 H.264。我如何使用 ffmpeg 来做到这一点,质量损失最少?以及如何将 10 位 H.265 转换为 8 位 H.265?

ffmpeg video-conversion x264 video-encoding x265

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

ffmpeg - 如果输出已经存在则跳过进程

我正在运行一个批处理脚本来转换 Python 中的视频文件,但可能会发生输出文件已经存在,那么是否有一个选项可以避免 ffmpeg 询问我如果输出已经存在该怎么办?我希望它自动跳过这个过程。

ffmpeg

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

错误:cuvid 请求,但并非所有依赖项都得到满足:cuda/ffnvcodec

我正在尝试在 Debian 9.3 上使用 Nvidia Cuda 支持编译 FFMPEG。参数,我使用的是:

--enable-cuda --enable-cuvid --enable-nvenc --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --enable-gpl --enable-libx264 --disable-x86asm --enable-libx265 --enable-libfdk-aac --enable-nonfree
Run Code Online (Sandbox Code Playgroud)

安装了带有驱动程序的 Nvidia Cuda。当我尝试配置 ffmpeg 时,它说:

ERROR: cuvid requested, but not all dependencies are satisfied: cuda
Run Code Online (Sandbox Code Playgroud)

较新的 ffmpeg 将显示类似的、重新措辞的消息:

ERROR: cuda requested, but not all dependencies are satisfied: ffnvcodec
Run Code Online (Sandbox Code Playgroud)

我完全不知道为什么我会遇到这个问题,因为我正在ffmpeg我们所有的转码服务器上进行编译。

linux ffmpeg cuda

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

如何定位 drawtext 文本

我正在尝试使用 ffmpeg 创建视频,但无法在右下角获得文本水印。它出现在视频的中间。我应该如何更改以下命令?

-vf drawtext="fontfile=C\\:/Windows/Fonts/Arial.ttf: \
text='Stack Overflow': fontcolor=white: fontsize=24: box=1: boxcolor=black: \
x=(w-text_w)/2: y=(h-text_h-line_h)/2"
Run Code Online (Sandbox Code Playgroud)

ffmpeg watermark

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

从图像生成的视频只能在 VLC 中播放,而不能在其他播放器中播放

在我的文件夹中,有一堆名为 0001.bmp、0002.bmp 的 13MP bmp 图像,...我从命令行运行以下命令。

将图像裁剪为 4K

ffmpeg -i %4d.bmp -vf "crop=3840:2160:184:240" croped%4d.bmp
Run Code Online (Sandbox Code Playgroud)

缩放图像

ffmpeg -i croped%4d.bmp -vf scale=1920:1080 scaled%4d.bmp
Run Code Online (Sandbox Code Playgroud)

将图像压缩成视频

ffmpeg -r 25 -i scaled%4d.bmp -c:v libx264 -b:v 25000k -minrate 25000k -r 25 -s 1920x1080 -c:v libx264 -qp 20 -preset medium output.mp4
Run Code Online (Sandbox Code Playgroud)

但是制作的视频只能在 VLC 中播放,其他播放器都失败了。

任何在 ffmpeg 方面有更多经验的人都可以建议我在哪里犯错吗?

这是最后一个命令后的 ffmpeg 控制台输出:

ffmpeg version N-47062-g26c531c Copyright (c) 2000-2012 the FFmpeg developers
  built on Nov 25 2012 12:21:26 with gcc 4.7.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-pthreads --enable-runtime-cpudetect --enab
le-avisynth --enable-bzlib …
Run Code Online (Sandbox Code Playgroud)

vlc-media-player ffmpeg

9
推荐指数
1
解决办法
3861
查看次数

ffmpeg 限制转换为视频的图像数量

是否可以指示 ffmpeg 将有限范围的图像组合在一起?

假设有一个名为img_0001.jpgto的 1000 张图像的文件夹,img_1000.jpg我只想img_0250.jpg通过img_0750.jpg.

-start_number选项指定了一个起点,但它将从那里运行到序列结束:

ffmpeg -start_number 250 -i img_%4d.jpg -vcodec mpeg4 output.mp4
Run Code Online (Sandbox Code Playgroud)

有没有办法指定-stop_number要运行的帧数或总数?

video ffmpeg

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