我正在尝试将一系列 png 转换为 mp4 视频。我正在使用 ffmpeg,并希望使用 H.264 编解码器对视频进行编码。使用命令
ffmpeg -y -r 30 -b 1800k -i _tmp%04d.png -vcodec libx264 out.mp4
Run Code Online (Sandbox Code Playgroud)
我收到以下警告消息
Incompatible pixel format 'bgra' for codec 'libx264', auto-selecting format 'yuv420p'
Run Code Online (Sandbox Code Playgroud)
我的理解是 png 中有一个 alpha 通道,x264 编码器无法处理。有没有办法解决这个问题?例如,有没有办法让编码器忽略 alpha 通道(我的 png 实际上没有任何透明元素)?
我知道我可以预先批量转换 png 以去除 alpha 通道,但是图像序列是由另一个程序生成的,并且每次制作视频时都必须预处理图像将不是最佳选择。
编辑:使用命令从每一帧中剥离 alpha 通道后
convert in.png -background white -flatten +matte out.png
Run Code Online (Sandbox Code Playgroud)
ffmpeg 给出警告信息
Incompatible pixel format 'pal8' for codec 'libx264', auto-selecting format 'yuv420p'
Run Code Online (Sandbox Code Playgroud)
所以仍然没有骰子。
我需要x264我的项目。
我有一个 at /opt/local/bin/x264,但是当我执行以下命令时:
x264 --qpfile cuepoints.qp --output output.mp4 input.mp4
Run Code Online (Sandbox Code Playgroud)
它说:
x264 [error]: not compiled with MP4 output support
我决定x264从源代码编译。我从http://www.videolan.org/ (git://git.videolan.org/x264.git)下载了源代码。
现在我这样做:
cd x264
./configure --enable-mp4-output
Run Code Online (Sandbox Code Playgroud)
x264 说:
Unknown option --enable-mp4-output, ignored
Run Code Online (Sandbox Code Playgroud)
事实上,如果我打开configure文件,就没有这样的选择。
最后,我可以找到支持 mp4 的已编译 x264(请参阅此处),但它已经使用 3 年了,我还需要一个用于 Windows 的。
你知道是否x264已经放弃了 mp4 支持,或者我需要使用不同的选项来编译它?
我在配备 core2duo 2.29 GHz、NVidia Geforce G105M (512MB)、CUDA 和 4GB RAM 的 HP Pavillion dv3 上运行 Ubuntu 10.10(特立独行)。我有最新版本的 ffmpeg 和 x264。
我认识到这些并不是编码的绝佳规范,但我习惯于在具有大约 2GHz 处理器的(不同的)单核 PC 上使用 DIVX 进行编码,并且能够在一夜之间转换 10 多个小时的电视剧集。
我刚刚开始在上述 HP 笔记本电脑上使用 x264 和 ffmpeg 进行编码,我惊讶地发现一部 2 小时的电影需要 22 小时才能编码!
我使用的命令行是:
ffmpeg -i infile.mpg -vcodec libx264 -preset slow -profile normal -crf 24 -threads 0 outfile.mp4
Run Code Online (Sandbox Code Playgroud)
这是正常的还是我在某处有瓶颈?
谢谢
我想执行以下命令:
x264 --level 30 --profile baseline --bitrate 900 --keyint 30 -o test.mp4 video01.mp4 --vf resize:720,480
Run Code Online (Sandbox Code Playgroud)
但我得到以下输出(错误)
raw [error]: raw input requires a resolution.
x264 [error]: could not open input file `video01.mp4' via any method!
Run Code Online (Sandbox Code Playgroud)
我尝试过的: - 在输入文件旁边添加分辨率,但没有运气 - 尝试更改--vf为--video-filter resize:
我做错了什么?是否可以像这样调整 mp4 文件的大小?如果第一个错误是指输入文件,我该如何指定分辨率?我需要这个命令工作,因为我需要在 bash 脚本和 JAVA 代码中实现它。根据我所做的研究,我可能需要 avisynth,但没有用于 linux 的端口,有吗?
如果你有更好的东西给我,请帮助我。我在 64 位 Ubuntu 11.04 上运行,具有 ffmpeg 和 x264 的所有必需(可能)库
我正在从单个文件输入 (.mp4) 创建多个编码流。输入流没有音频。每个编码流都是通过裁剪输入的不同部分创建的,然后在 32 核系统上以相同的比特率进行编码。
这是我在 ffmpeg wiki 中解释的用于创建多个输出的场景。 https://trac.ffmpeg.org/wiki/Creating%20multiple%20outputs
场景 1(使用单个 ffmpeg 实例)
ffmpeg -i input.mp4 \
-filter:vcrop=iw/2:ih/2:0:0 -c:v libx264 -b:v 5M out_1.mp4 \
-filter:vcrop=iw/2:ih/2:iw/2:0 -c:v libx264 -b:v 5M out_2.mp4 \
-filter:vcrop=iw/2:ih/2:0:ih/2 -c:v libx264 -b:v 5M out_3.mp4
在这种情况下,我假设 ffmpeg 将仅对输入解码一次,并将其提供给所有裁剪过滤器。如果不正确,请纠正我。
Scenario2(使用多个 ffmpeg 实例,因此使用三个单独的进程)
ffmpeg -i input.mp4 -filter:vcrop=iw/2:ih/2:0:0 -c:v libx264 -b:v 5M out_1.mp4
ffmpeg -i input.mp4 -filter:vcrop=iw/2:ih/2:iw/2:0 -c:v libx264 -b:v 5M out_2.mp4
ffmpeg -i input.mp4 -filter:vcrop=iw/2:ih/2:0:ih/2 -c:v libx264 -b:v 5M out_3.mp4
就我而言,我实际上需要通过裁剪输入视频的不同部分来编码更多数量的流。我在这里展示三个只是为了让这个例子更简单。
现在,就 fps 性能而言,我认为场景 2 的性能更好。它还最大限度地使用 cpu(超过 95% 的 …
如果我在 x264 (FFmpeg) 中使用低于 17/18 的 CRF(恒定速率因子)值,我会获得任何视觉上的好处吗?除了大小之外还会有什么不同吗?
CRF 17/18 在视觉上无损。
CRF 0 表示帧的每个像素都由它自己的数据决定。CRF 17/18 意味着,如果它们相同,则该帧的每个像素要么由其自己的数据确定,要么根据前一帧确定。
所以在视觉上两者都是一样的。那么较低值的CRF(0-16)编码有什么好处呢?
我已经测试了大部分可用的 CRF 值(包括 CRF 0)。我使用“CRF 0”编码了一部 1080P 蓝光电影。输出最终比蓝光源大 2.5 倍 (110GB)。
据我所知,我没有看到使用低于 CRF17/18 的 CRF 值的理由。而且我无法在任何地方找到证明使用较低 CRF 值的理由。那么较低的 CRF 值有什么好处呢?
CRF 17/18 中的代数损失会更多,而较低 CRF 值编码的代数损失会更少吗?
使用 VLC 2.0.0 和 windows 7 重播各种 mkv 文件 (x264),VLC 媒体播放器的 CPU 使用率平均为 25%。如何启用硬件加速以降低 CPU 使用率?
显示适配器是 a) NVIDIA NVS 4200M(驱动程序 8.17.12.6883)和 b)Intel(R) HD Graphics Family(驱动程序 8.15.10.2418)
VLC 视频设置如下所示:

尽管当前的驱动程序/vlc 版本与 h264 的硬件解码兼容,但资源监视器仍显示高 CPU 使用率: 
我有一个电影库,我希望使用 VLC 将其流式传输到我的 Android 平板电脑上进行播放。我想通过移动互联网连接使用 H264+AAC 以获得最佳视觉质量。我还希望使用支持文本字幕而不是 MPEG2TS 支持的位图字幕的 Matroska 容器。
我安装了 Mediatomb 并且 UPnP 正常工作,我可以在没有转码的情况下传输视频和音频。
我可以很好地转码和下采样到 MPEG2。但是对于任何一个视频,H264 播放会在 10-40 秒后停止,每次都在完全相同的位置,但每个视频的位置不同。播放甚至不会在 PC 上的 VLC 上开始(在第一帧后停止)。
我正在使用这个脚本
#!/bin/bash
LINES=720
PRESET=veryfast
PROFILE=main
TUNE=zerolatency
AUDIO="-c:a libfaac -b:a 128k -ar 48000 -ac 2 -async 1"
# Works well
VIDEO="-c:v mpeg2video -b 8192k"
# Freezes after a few seconds seconds.
#VIDEO="-c:v libx264 -preset ${PRESET} -tune ${TUNE} -profile ${PROFILE}"
SUBTITLES="-c:s copy"
exec /usr/bin/ffmpeg -threads 2 -i "${1}" -filter:v scale=-1:720 $VIDEO \
$AUDIO $SUBTITLES …Run Code Online (Sandbox Code Playgroud)