我正在将视频转换为 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 的质量?
我正在尝试使用以下命令获取视频的分辨率:
ffmpeg -i filename.mp4
Run Code Online (Sandbox Code Playgroud)
我得到了很长的输出,但我只需要 bash 脚本的宽度和高度。我应该如何过滤掉这些参数?也许有更好的方法来做到这一点。
我想加入两个 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 秒的延迟。任何建议都非常受欢迎。
我正在尝试使用 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模糊箱的位置。
这样的事情可能吗?
我的笔记本电脑无法处理 10 位 H.265 / HEVC 视频,所以我想将它们转换为 10 位 H.264。我如何使用 ffmpeg 来做到这一点,质量损失最少?以及如何将 10 位 H.265 转换为 8 位 H.265?
我正在运行一个批处理脚本来转换 Python 中的视频文件,但可能会发生输出文件已经存在,那么是否有一个选项可以避免 ffmpeg 询问我如果输出已经存在该怎么办?我希望它自动跳过这个过程。
我正在尝试在 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我们所有的转码服务器上进行编译。
我正在尝试使用 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) 在我的文件夹中,有一堆名为 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) 是否可以指示 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要运行的帧数或总数?