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

现在随着智能设备普及以及宽带的升级,越来越的的视频素材在不断的产生。无论是我们自己拍摄的视频,还是从网上收集来的电影、电视剧,并不是全部都值得我们保存最高清的版本。打个比方,比如你下载了一个 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-cli
 make -j4
 sudo 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中得到提升。至于具体会提升多少,待买到新机器到手后再进行测试。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容