标签: x264

使用 ffmpeg 将 png 序列转换为 x264

我正在尝试将一系列 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)

所以仍然没有骰子。

png ffmpeg x264

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

编译支持 mp4 的 x264

我需要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 支持,或者我需要使用不同的选项来编译它?

video encoding mp4 ffmpeg x264

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

x264 编码速度,我的期望是什么?

我在配备 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)

这是正常的还是我在某处有瓶颈?

谢谢

video linux ffmpeg conversion x264

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

调整大小并降低 mp4 的比特率

我想执行以下命令:

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 的所有必需(可能)库

linux ffmpeg ubuntu x264

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

FFMPEG 多输出性能(单实例 vs 多实例)

我正在从单个文件输入 (.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% 的 …

video cpu performance ffmpeg x264

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

如果我在 x264 (FFmpeg) 中使用低于 17/18 的 CRF 值,我会获得任何视觉上的好处吗?

如果我在 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 值编码的代数损失会更少吗?

ffmpeg x264 video-encoding

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

在 Windows 7 上进行 x264 播放的硬件加速

使用 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 2.0.0 中的设置图片

尽管当前的驱动程序/vlc 版本与 h264 的硬件解码兼容,但资源监视器仍显示高 CPU 使用率: 资源监视器捕获

vlc-media-player windows-7 x264

3
推荐指数
1
解决办法
9770
查看次数

在 Matroska 容器中实时转码为 H264+AAC

设想

我有一个电影库,我希望使用 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)

upnp ffmpeg real-time transcode x264

3
推荐指数
1
解决办法
5312
查看次数