我有大量电影,我想重新编码以减小尺寸并提高图像质量。大量是老旧的黑白电影,颗粒感很强,但即使是 1980 年代的影片也可能有过多的颗粒感。这在美学上令人不快,并且还会增加文件大小。
ffmpeg 有大量可用的过滤器,而且很难知道从哪里开始。有人可以推荐一个具有合理值的过滤器吗?
我目前的设置:
ffmpeg -i in.mkv -c:v libx265 -c:a copy -crf 28 out.mkv
Run Code Online (Sandbox Code Playgroud) 如何将视频从一种格式(在本例中为.vob)转换为另一种格式,例如.avi?
我有一张 4.2 GB 的 DVD,想将其转换为较小的文件大小和不同格式的 .avi 文件,大约 700 MB。
我正在使用 Windows XP 机器。
我有一堆 1280x720 分辨率的视频,但我真的不需要那么高分辨率,所以我想重新编码并将它们调整为 852x480 以节省一些空间,但我注意到手刹编码结果变成了一个有点模糊的视频当我只是调整窗口大小时,它会在我的 VLC 视频播放器上显示。
所以,我正在寻找一种完全像 VLC 那样调整视频大小的方法,因为这实际上提供了比普通调整大小算法或调整大小+锐化算法更好的质量,我什至在手刹中找不到。但是,有没有办法使用 Handbrake 锐化视频?
这样做ffmpeg -codecs | grep -i huffyuv表明我的 FFmpeg 版本支持三个不同版本的 HuffYUV 无损视频编解码器:
DEVI.S ffvhuff Huffyuv FFmpeg variant
DEVI.S huffyuv HuffYUV
D.VI.S hymt HuffYUV MT
Run Code Online (Sandbox Code Playgroud)
我知道 HuffYUV MT 是多线程的,我的构建似乎只支持解码它,但是标准编HuffYUV解码器和ffvhuffFFmpeg 版本之间有什么区别?这有记录在任何地方吗?
我正在尝试将视频转码为 H.264/MP4。我正在使用该crf = 20选项,但根据要求,我还想将最大比特率限制为 3 MBit/s。
我试图通过x264opts这样的方式来欺骗它
-x264opts crf=20:vbv-bufsize=14000:vbv-maxrate=3000:keyint=40
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?这可以完成吗?还是我只能使用恒定比特率而不使用 CRF?
我正在尝试以最低要求编译 ffmpeg,以便使用 h264 进行编码/解码。
到目前为止我的命令行配置是:
./configure --disable-yasm --disable-everything --enable-encoder=libx264 --enable-encoder=libfaac --enable-decoder=h264 --enable-muxer=h264 --enable-demuxer=h264 --enable-parser=h264 --enable-protocol=file
Run Code Online (Sandbox Code Playgroud)
编译后,我尝试这样做:
./ffmpeg -i ~/Dropbox/TestFile.mov -vcodec libx264 test.mp4
Run Code Online (Sandbox Code Playgroud)
但我收到错误:
ffmpeg version N-58081-g2925571 Copyright (c) 2000-2013 the FFmpeg developers
built on Nov 14 2013 15:49:58 with Apple LLVM version 5.0 (clang-500.2.76) (based on LLVM 3.3svn)
configuration: --disable-yasm --disable-everything --enable-encoder=libx264 --enable-encoder=libfaac --enable-decoder=h264 --enable-muxer=h264 --enable-demuxer=h264 --enable-parser=h264 --enable-protocol=file
libavutil 52. 52.100 / 52. 52.100
libavcodec 55. 43.100 / 55. 43.100
libavformat 55. 21.100 / 55. 21.100
libavdevice 55. 5.100 / …Run Code Online (Sandbox Code Playgroud) 我知道一些技术可以让编码器自由地为相对复杂的序列提高比特率,但这会导致与更典型场景所需的比特率相比整体比特率膨胀。
是否有可能放宽编码器的界限,在预定义的间隔内给它更多的比特率自由度?
我正在尝试使用 ffmpeg 将 libx265 的配置文件级别设置为 mainstillpicture。但我似乎不能这样做。我基本上是在尝试将每一帧编码为帧内(仅空间编码)而没有时间编码。
我试过以下命令
ffmpeg -f rawvideo -vcodec rawvideo -s 3840x2160 -r 30 -pix_fmt yuv420p -i <input_filename> -c:v libx265 -b:v 45000k -preset veryslow -profile:v mainstillpicture <output_filename>
Run Code Online (Sandbox Code Playgroud)
和
ffmpeg -f rawvideo -vcodec rawvideo -s 3840x2160 -r 30 -pix_fmt yuv420p -i <input_filename> -c:v libx265 -b:v 45000k -preset veryslow -profile:v 3 <output_filename>
Run Code Online (Sandbox Code Playgroud) 我想将高质量非隔行输入视频转换为质量较低但可分发范围更广的 H.264/MP4 格式。输出应该有一些限制 - 特别是:它应该是交错的!
我尝试了以下命令,其中mandelbrot是高质量输入的同义词:
ffmpeg -hide_banner \
-t 10 -y \
-f lavfi \
-i anullsrc=r=48k:cl=stereo \
-f lavfi \
-i mandelbrot=r=50:size=1920x1080 \
-vf 'interlace=scan=tff:lowpass=complex,format=yuv420p' \
-codec:a aac \
-b:a 128k \
-aac_coder twoloop \
-codec:v libx264 \
-preset veryfast \
-tune animation \
-profile:v high \
-crf 35 \
-level 5.2 \
-x264opts interlaced=1 \
-shortest \
mandelbrot.mp4
Run Code Online (Sandbox Code Playgroud)
我的 ffmpeg 是ffmpeg version 3.4.2-2.
但是,我不确定命令行是否正确。
libx264本身不检测隔行输入。我必须插入-x264opts interlaced=1.-flags …我试图从给定视频中选择 10 个帧,可能具有最高的多样性和场景。我想尝试各种选择场景,但好处是,I-frame本质上意味着场景变化的概念!所以我想获得 I 帧。但也许有很多 I 帧,所以我可能必须对它们进行采样。
如何在 FFMpeg 或 Python 中获取视频中所有 I 帧的frame_number 列表?我想使用列表仅选择其中 10 个并将它们另存为 PNG/JPEG。
video-encoding ×10
ffmpeg ×7
video ×5
x264 ×3
h.264 ×2
codec ×1
conversion ×1
h.265 ×1
handbrake ×1
iframe ×1
python ×1
windows-xp ×1