在 ubuntu 14.04 中,我的 ffmpeg 配置是,
ffmpeg version ebe0fa0 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-4)
configuration: --enable-gpl --enable-libx264 --enable-opencl --enable-nonfree --enable-libmfx --enable-libmp3lame --enable-libaacplus
libavutil 54. 31.100 / 54. 31.100
libavcodec 56. 60.100 / 56. 60.100
libavformat 56. 40.101 / 56. 40.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 40.101 / 5. 40.101
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
libpostproc 53. 3.100 / 53. 3.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
使用此命令,
ffmpeg -i /home/M.mp4 -c:v h264_qsv -preset:v faster /home/out.avi
CPU% 已超过 90(375%)。因此它在 CPU 中运行。
我研究发现 Intel QSV 运行在 die 处理器上,几乎是在 CPU 上。ffmpeg 主要用于硬件加速。那么是否可以让它在 ubuntu 中的 Intel GPU 上运行?
答案1
CPU 几乎被充分利用并不意味着它没有在 GPU 上工作。全部编码工作转移到 GPU,但 GPU 会加速并卸载部分任务。可能有工具可以直接查询 GPU 的利用率图形处理器组件(我不知道它们是什么)——这些可以确认你的 GPU 正在执行部分工作。
在我的特定机器上,h264_qsv 编解码器的运行速度在帧/秒方面比 libx264 编解码器快大约 5 倍,尽管在两种情况下报告的“CPU 利用率”都接近 100%。
[lwobker:/dtop/nobackup/]$ cat /proc/cpuinfo | egrep 'model name'
model name : Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz
[lwobker:/dtop/nobackup]$ ffmpeg -hide_banner -codecs | egrep 'qsv' | egrep '264'
DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_qsv ) (encoders: libx264 libx264rgb h264_nvenc h264_qsv nvenc nvenc_h264 )