ffmpeg - 用于视频转换的 AVCONV/FFMPEG 硬件加速

标签 ffmpeg libav avconv

我有一台没有视频卡的 Ubuntu PC。

我使用 avconv 进行视频转换:

avconv -i video.wmv -c:v libx264 -c:a libmp3lame -b:v 1800K video.mp4

我的 CPU(英特尔酷睿 i7-4770K)在大约 7-10 分钟内处理 1.5-2Gb 视频。

avconv github sources我看到了选项
Hardware accelerators:
  --enable-d3d11va         enable D3D11VA code
  --enable-dxva2           enable DXVA2 code
  --enable-vaapi           enable VAAPI code
  --enable-vda             enable VDA code
  --enable-vdpau           enable VDPAU code

我正在考虑用 --enable-vdpau 编译 avconv并将视频卡放入PC。

这是否允许 avconv 使用视频卡进行视频转换?

这如何提高视频转换的速度(我的意思是我的命令)?

如果您的 PC 中有带有视频卡的 avconv,您能帮我做这个测试吗?

这是 example WMV 的。

最佳答案

如果您不想从源代码编译任何内容或使用 PPA 获取额外的包,您可以首先查看发行版必须提供的内容:

$ avconv -codecs | grep vdpau
avconv version 9.18-6:9.18-0ubuntu0.14.04.1, Copyright (c) 2000-2014 the Libav developers
  built on Mar 16 2015 13:19:10 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
DEV.L. mpeg1video           MPEG-1 video (decoders: mpeg1video mpeg1video_vdpau )
DEV.L. mpeg2video           MPEG-1 video (decoders: mpeg2video mpegvideo_vdpau )
DEV.L. mpeg4                MPEG-4 part 2 (decoders: mpeg4 mpeg4_vdpau ) (encoders: mpeg4 libxvid )
DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_vdpau ) (encoders: libx264 )
D.V.L. vc1                  SMPTE VC-1 (decoders: vc1 vc1_vdpau )
D.V.L. wmv3                 Windows Media Video 9 (decoders: wmv3 wmv3_vdpau )

仔细查看字母“D” - 用于解码,“E”用于编码。如您所见,VDPAU 仅用于解码 - 它不会帮助您将视频编码回来。您必须测量是否:
avconv -vcodec wmv3_vdpau -i video.wmv -c:v libx264 -c:a libmp3lame -b:v 1800K video.mp4

... 让您在转码时间上有任何改进。

根据我的经验,VDPAU 非常适合观看视频 - Mplayer2 和 VLC 支持它进行显示,我让 Mplayer2 也将它用于 h264 解码。相同的 1080p 剪辑可以在 2 个内核上通过软件解码以 80% 的 CPU 负载播放,而当解码和演示(视频输出)都通过 VDPAU 完成时,CPU 负载为 5-10%。

对于编码,您可以研究 AMD 的 VCE、Intel 的 QuickSync 和 Nvidia 的 NVENC(按字母顺序排列)。

同时,来自 ffmpeg:

我在获取 avconv 时遇到问题使用 VDPAU 进行解码。然后我偶然发现了这个(无论如何推荐阅读这类问题):
https://trac.ffmpeg.org/wiki/HWAccelIntro

-> 似乎 VDPAU 解码器支持状态为:

Actually yes, but is deprecated and should not be used.



所以,最后的答案是 - 一张带有 VDPAU 的卡在你的情况下可能没有优势。

关于ffmpeg - 用于视频转换的 AVCONV/FFMPEG 硬件加速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33570695/

相关文章:

c# - 使用 FFMPEG 进程从 rtsp 获取所有帧

audio - 如何确定编解码器/容器组合是否与 FFmpeg 兼容?

ffmpeg - i586-mingw32msvc-pkg-config 应该在哪里?

javascript - 如何在javascript中使用ffmpeg设置输出视频的帧率

ffmpeg - 使用 ffmpeg 将 png 合并为 mp4 时,透明背景意外变为绿色

c++ - 解析具有多个流的音频文件时出错 - ffmpeg

FFmpeg/Libav 音频解码示例

aac - avconv:让 aac 工作。 -严格的实验不起作用

ffmpeg - 连续图像的通配符

ffmpeg - 使用 FFmpeg 和 SDL_QueueAudio 播放视频中的声音会产生高音调的音频