树莓派使用硬件加速视频转码

news/2024/11/15 3:57:45/

树莓派使用硬件加速视频转码

现在随着智能设备普及以及宽带的升级,越来越的的视频素材在不断的产生。无论是我们自己拍摄的视频,还是从网上收集来的电影、电视剧,并不是全部都值得我们保存最高清的版本。打个比方,比如你下载了一个 1080P 甚至是 4K 的电影视频,看完了之后,觉得这个电影值得收藏,但又不至于非常喜欢。一个 1080P 2个小时左右的视频可能大概有 5G 左右,如果将其压缩到 720P,那么视频文件大小可能会减少一半有多(具体还视码率及多个参数影响)。而且视频质量的观感并不会降低太多。

然而,使用我们的电脑进行转码,虽然说有很多现成的软件,但是转码的时候一般会占用很多的CPU资源,导致影响我们的日常使用。另一方面,如果需要对大量视频进行转码,如一套几十集的连续剧,那么长时间开启电脑转码也会浪费不少电。

如果能用一套低功耗的系统,就能完成这一目的,那是最好不过的。但是,目前能达到这一要求的设备,其实并不多。本来 NAS 非常适合这项工作,然而,中低端的群晖的性能都非常一般,并不适合用来转码。而带转码功能的群晖,价格非常高。当然,也可以使用类似 J3455 J4105 J5005 等低功耗集成平台,组装一台 NAS,或者买一个蜗牛星际的矿渣(J900)。如果配置一套这样的系统,先不论软硬件安装配置的问题,这样一通操作下来,还不如直接用电脑来进行转码。

最近树莓派4已经开卖了,新的树莓派有千兆网卡、还有USB3.0 ,而且性能还有大幅的提高。所以现在树莓派 I/O 慢,网络传输慢的问题基本都解决了,再加上树莓派的能耗低,自然就成了转码的首选。

由于树莓派4还没发货,所以先用我手上的树莓派3B来进行测试。

树莓派使用默认的 ffmpeg 进行转码,是使用 CPU 进行转码的,效率是非常低的。我们可以通过使用源码编译的方式来安装 ffmpeg,就可以使用硬件加速转码了。在具体配置之前,先来看效果的对比。这里我使用了一段一分多种的 Sony 大法广告视频作为素材进行转码,源视频为 1080P 3000kbpps 码率的视频,然后使用树莓派3B 对其转码成 720p 2000kbpps 码率的视频,同时使用 i5 4570 进行对比。

FFMPEG default(raspberrypi 3B) convert start ...
Convert used : 0:08:26.437337 s
FFMPEG omx(raspberrypi 3B) convert start ...
Convert used : 0:02:59.920381 s
FFMPEG default(i5 4570) convert start ...
Convert used : 0:00:40.825523 s

可以看到,树莓派使用硬件加速转码可以提速接近4倍,但是,和电脑的 i5 相比,差不多慢了3倍多。然而,树莓派满载的功耗也不过10W左右,我的这个i5平台满载转码功率差不多100多W,所以,使用树莓派来完成一些不要紧的转码任务,还是有一定可行性的。

下面,介绍一下树莓派使用硬件加速进行转码的配置

# 更新软件源
sudo apt-get update
sudo apt-get install git
# 依赖安装
sudo apt-get install libomxil-bellagio-dev
# x264 安装
git clone git://git.videolan.org/x264.git
cd x264
./configure --disable-shared --enable-static --enable-strip --disable-climake -j4sudo make install
# ffmpeg 编码安装
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
PREFIX=/usr/local
./configure --enable-gpl    --enable-version3 --enable-nonfree --enable-static --disable-shared --prefix=$PREFIX --disable-opencl --disable-thumb --disable-pic --disable-stripping --enable-small --enable-ffmpeg --enable-ffplay --enable-ffprobe --disable-doc --disable-htmlpages --disable-podpages --disable-txtpages --disable-manpages --disable-everything --enable-libx264 --enable-encoder=libx264 --enable-decoder=h264 --enable-encoder=aac --enable-decoder=aac --enable-encoder=ac3 --enable-decoder=ac3 --enable-encoder=rawvideo --enable-decoder=rawvideo --enable-encoder=mjpeg --enable-decoder=mjpeg --enable-demuxer=concat --enable-muxer=flv --enable-demuxer=flv --enable-demuxer=live_flv --enable-muxer=hls --enable-muxer=segment --enable-muxer=stream_segment --enable-muxer=mov --enable-demuxer=mov --enable-muxer=mp4 --enable-muxer=mpegts --enable-demuxer=mpegts --enable-demuxer=mpegvideo --enable-muxer=matroska --enable-demuxer=matroska --enable-muxer=wav --enable-demuxer=wav --enable-muxer=pcm* --enable-demuxer=pcm* --enable-muxer=rawvideo --enable-demuxer=rawvideo --enable-muxer=rtsp --enable-demuxer=rtsp --enable-muxer=rtsp --enable-demuxer=sdp --enable-muxer=fifo --enable-muxer=tee --enable-parser=h264 --enable-parser=aac --enable-protocol=file --enable-protocol=tcp --enable-protocol=rtmp --enable-protocol=cache --enable-protocol=pipe --enable-filter=aresample --enable-filter=allyuv --enable-filter=scale --enable-libfreetype --enable-indev=v4l2 --enable-indev=alsa --enable-omx --enable-omx-rpi --enable-encoder=h264_omx --enable-mmal --enable-hwaccel=h264_mmal --enable-decoder=h264_mmal
make -j4
sudo make install

如果没有出现异常,即可以使用硬件加速进行转码。使用方法如下:

ffmpeg -i <inputfile> -s <1280x720 {分辨率设置}> -c:v h264_omx -b:v <码率设置 如 2000k> <outputfile>

当然,目前树莓派3B 用来做转码任务,还是存在不少问题。比如,文件传输速度慢,一般上传的速度只有3~5M一秒,传输一个5G的文件要等待非常长的时间,当文件转码完成后,还需要下载回来,又需要漫长的等待。此外,虽然使用了硬件加速,转码速度有所提升,但是,经我测试,将一个两个半小时的1080P视频转成一个720P的视频,需要用到接近6个小时,同样的任务在 I5 平台上只需要 1 个小时。当然,这些问题都将会在树莓派4中得到提升。至于具体会提升多少,待买到新机器到手后再进行测试。


http://www.ppmy.cn/news/251460.html

相关文章

音视频常见面试题

面试题1 为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢? 1&#xff09;空间冗余&#xff1a;图像相邻像素之间有较强的相关性2&#xff09;时间冗余&#xff1a;视频序列的相邻图像之间内容相似3&#xff09;编码冗余&#xff1a;不同像素值出现的概率不…

视频,多媒体本地化总结

概念历史 提到多媒体不得不说到广播和无线电技术也叫做模拟信号&#xff0c;现代的是数字视频&#xff0c;没有以前的模拟视频就没有现代的数字视频&#xff0c;现在的数字视频技术是在模拟视频技术上不断发展起来的&#xff0c;并且很多地方仍然保留着模拟时代的烙印。 电视的…

浅析图像到视频

浅析图像到视频 何为视频&#xff1f; 所谓视频&#xff0c;其实就是将一张一张的图片连续的放出来&#xff0c;就像放幻灯片一样&#xff0c;由于人眼的视觉暂留特性&#xff0c;只要图片的数量足够多&#xff0c;就会觉得是连续的动作。 所以&#xff0c;只需要将一张一张的…

音视频基础之音频编码原理简介

一&#xff1a;隐蔽信号 数字音频信号如果不加压缩地直接进行传送&#xff0c;将会占用极大的带宽。例如&#xff0c;一套双声道数字音频若取样频率为44.1KHz&#xff0c;每样值按16bit量化&#xff0c;则其码率为&#xff1a; 244.1kHz16bit1.411Mbit/s 如此大的带宽将给信号…

音视频基本概念

音视频的几个率 帧率fps 游戏中都有这个属于&#xff0c;大都指的是每秒显示的图像帧数&#xff0c;或者说图形处理器每秒更新的次数>24fps 电影基本这个帧率<30fps 游戏卡顿>60fps 流畅>75fps 肉眼不容易察觉出变化码率&#xff1a;又称比特率&#xff0c;指每秒传…

机器视觉:基于压缩方式的视频采集卡的两大类别

机器视觉&#xff1a;基于压缩方式的视频采集卡的两大类别 视频采集即将视频源的模拟信号通过处理转变成数字信号&#xff08;0和1&#xff09;&#xff0c;并将这些数字信息存储在电脑硬盘上的过程。视频采集卡的压缩方式可分为软压缩与硬压缩&#xff0c;两者的区别主要在于压…

音视频处理中的硬压缩与软压缩

视音频的压缩是视音频处理中的核心部分&#xff0c;压缩通常分两种途径来实现&#xff0c;1.嵌入式CPU进行软压缩&#xff0c;2. 采用硬件芯片进行硬压缩。 软压缩的图像采集通过图像采集芯片完成。即以若干个图像采集芯片为核心&#xff0c;配合周边电路和元件&#xff0c;完成…

监控视频存储

在现代安防中&#xff0c;监控设备是一种必需品&#xff0c;以前各行业在监控上的竞争主要集中在摄像头的技术更新上&#xff0c;而随着监控技术的不断发展&#xff0c;与监控息息相关的存储设备竞争也随之火热&#xff0c;技术的进步对监控存储的要求也在不断的提高&#xff0…