2225|11

2939

帖子

0

TA的资源

五彩晶圆(中级)

楼主
 

【BIGTREETECH CB1】搭建视频转码服务器 [复制链接]

 
 

        随着互联网技术的发展和通讯带宽的提高,人们对视频的清晰度要求越来越高,前几年1080P分辨率的电影是主流,最近几年4K分辨率的视频越来越多,编码方式由主流的H.264到了现在的H.265,但是现在4K分辨率的H.265的影片对于几年前的硬件设备却是一个挑战,处理器速度不足,没有H.265硬件解码器是主要的问题,我的电脑是10年前的Intel 二代I3的CPU,没有硬解H.265的功能,是H.265编码的电影,1080P的影片勉强可以观看,但是4K下就非常卡顿,这就让我有了搭建一个视频转码服务器的想法。

    这个视频转码服务器要完成3个功能
1,更改视频编码格式,主要是H.265或其他格式改到H.264。
2,更改视频分辨率,将一些4K的视频改到1080P或更小的分辨率。
3,提取视频内的声音文件。

H.264和H.265介绍(摘自网络)
H.264是一种高度压缩的数字视频编解码器标准,具有低码率,高质量,高容错能力,网络适应性强等特点。
H.265(HEVC,高效率视频编码),是新一代视频编码技术。它围绕现有视频编码标准H.264,保留原来的某些技术,对一些技术进行了改进,同样质量的视频存储空间只需要H.264的一半。H.265带来了高于H.264的压缩率,也带来了高于H.264数倍的解码难度,算法复杂度相比H.264提高了2-10倍,复杂的运算对处理器运算速度有很高的要求。

软件的选择:
软件我选择大名鼎鼎的FFmpeg,以下介绍摘自网络。
FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。具有视频采集、视频格式转换、视频抓图、给视频加水印等功能。
FFmpeg的几个主要用途:
视频处理
FFmpeg可以用于各种视频处理任务,比如去噪、模糊视频、色彩转换,视频旋转、提取帧、缩放视频尺寸等。
视频压缩
FFmpeg 包含为各种编解码器[如 JPEG、MPEG-1/2/4、H263+AAC (MPEG)、Theora (Ogg Vorbis)、AVS+、VP8 (WebM)、H.264/AVC、HEVC、AV1 等]提供接口的库,你可以根据需要使用它们来压缩、转码或解码视频。
支持视频打包
对于OTT系统厂商和开发者来说,FFmpeg还完全支持使用HLS和MPEG-DASH打包视频,它还可以配置为使用RTMP或其他协议来传输视频。
支持音频、视频容器格式
FFmpeg同样广泛支持各种容器格式,可以用来读、写及转换各种容器格式,比如avi、mp4、mp3、wma、wav、ts、flv、mkv以及许多其他未知格式。

 

安装
使用命令sudo apt-get install ffmpeg安装
发现系统自带,都已经按照好了。

安装完成后,可输入以下命令查看安装是否成功
ffmpeg -version

显示所有编解码器ffmpeg -codecs
该命令可以打印出所有可用的编解码器,并显示每个编解码器对应的功能信息,比如是否支持解码或编码。此外,如以下输出结果所示,打印出来的信息还会按照首字母顺序标注出每个编码器和解码器的位置。
biqu@Hurakan:/$ ffmpeg -codecs
Codecs:
 D..... = Decoding supported
 .E.... = Encoding supported
 ..V... = Video codec
 ..A... = Audio codec
 ..S... = Subtitle codec
 ...I.. = Intra frame-only codec
 ....L. = Lossy compression
 .....S = Lossless compression
 -------
会显示出版本信息,编译器信息,各种配置信息,还有各种库的信息。

Codecs:代表的含义是:
 D..... = Decoding supported 支持解码
 .E.... = Encoding supported 支持编码
 ..V... = Video codec 视频编解码器
 ..A... = Audio codec 音频编解码器
 ..S... = Subtitle codec 字幕编解码器
 ...I.. = Intra frame-only codec 仅限帧内编解码器
 ....L. = Lossy compression 有损压缩
 .....S = Lossless compression 无损压缩

类似的命令还有:
显示所有编码器ffmpeg -encoders
显示所有解码器ffmpeg -decoders

我截取了一段某连续剧20秒的片段,这个连续剧我在的电脑上是无法流畅播放的。
视频是HEVC(H.265)编码,3840*1620的分辨率,60帧率。

在linux下可以使用ffmpeg带的ffprobe命令来查看流媒体各种信息。
ffprobe pingfan20s.mp4

1,视频格式和分辨率转换
3840*1620分辨率的H.265视频我要转换成1080P以下H.264格式。
为了不改变电影的长宽比,我将输入视频成比例缩小为源视频一半大小,也就是宽和高都是原来的一半,那就加入命令scale=iw/2:ih/2,还得加入命令-max_muxing_queue_size 512,要不然报错“Too many packets buffered for output stream 0:1”,还得加入-threads 2要不然开发板的CPU在视频转换时满负荷会死机,最后得到的命令就是
ffmpeg -threads 2 -i pingfan20s.mp4 -max_muxing_queue_size 512 -vf scale=iw/2:ih/2 -vcodec h264 ok.mp4

经过10多分钟漫长的等待,终于转换完了,视频的编码由H.265转换为H.264,分辨率也由3840*1620变为1920*810,帧率还是60帧没有变,我的老电脑可以流畅播放了。

2,提取视频内的声音文件
输入命令,声音文件的提取还是很快的。
ffmpeg -i pingfan20s.mp4 -vcodec copy -vn out.mp3

总结:
这次搭建的视频转换服务器和自己当初想象的有些不同,没想到视频转换居然这么依赖CPU的性能,需要这么长的转换时间,这次的H.265转H.264,4K转2K,60帧的电影,大约需要40倍的影片时长,也就是说,一个小时的电影,我大约需要40个小时才能转换完,好在开发板功耗才几瓦,如果不着急可以慢慢等,但是提取视频内的声音文件还是很快的,只需要六分之一的影片时间。这次试验也让我了解到ffmpeg这个软件的功能强大,如果配合高性能的CPU(比如Intel的i9系列)会有惊人的表现。

 

最新回复

学习了,感谢楼主    对我太有用了    收藏了   详情 回复 发表于 2023-8-21 23:24
点赞 关注(1)
 
 

回复
举报

6587

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

一个小时的电影,需要40个小时转换时间,实在太长

点评

是我没有相关转码的经验,不知道转码需要的CPU计算量,不是这款开发板的CPU弱,而是不应该用这款CPU做视频解码用,看看现在市面上视频转码的PC机,都得需要intel i7以上的CPU。  详情 回复 发表于 2023-1-27 08:37
 
 
 

回复

2939

帖子

0

TA的资源

五彩晶圆(中级)

板凳
 
Jacktang 发表于 2023-1-26 23:22 一个小时的电影,需要40个小时转换时间,实在太长

是我没有相关转码的经验,不知道转码需要的CPU计算量,不是这款开发板的CPU弱,而是不应该用这款CPU做视频解码用,看看现在市面上视频转码的PC机,都得需要intel i7以上的CPU。

 
 
 

回复

6773

帖子

2

TA的资源

版主

4
 

这种转码是不是能用GPU会更快?因为感觉是图像处理。

点评

GPU出来的画质不好,难不成程序还不一样。。。  详情 回复 发表于 2023-1-28 17:37
是的,理论上用GPU回更快,但是这里没用GPU主要有以下3方面原因。 1,ffmpeg支持部分类型GPU,比如N卡某某型号, 2,GPU转码出来的画面效果不好,和纯CPU转码图像质量有很大差距。 3,这是我第一次做类似的  详情 回复 发表于 2023-1-28 15:22
 
 
 

回复

2939

帖子

0

TA的资源

五彩晶圆(中级)

5
 
wangerxian 发表于 2023-1-28 11:40 这种转码是不是能用GPU会更快?因为感觉是图像处理。

是的,理论上用GPU回更快,但是这里没用GPU主要有以下3方面原因。

1,ffmpeg支持部分类型GPU,比如N卡某某型号,

2,GPU转码出来的画面效果不好,和纯CPU转码图像质量有很大差距。

3,这是我第一次做类似的测试,自己没有技术和时间来弄GPU加速转码的测试。

 
 
 

回复

6773

帖子

2

TA的资源

版主

6
 
wangerxian 发表于 2023-1-28 11:40 这种转码是不是能用GPU会更快?因为感觉是图像处理。

GPU出来的画质不好,难不成程序还不一样。。。

点评

GPU 转码效果不如纯 CPU的原因 在进行视频转码的时候,有一些软件支持三种模式 ,纯CPU、CPU核显加速、nvidia GPU加速,这三种画质依次降低,但速度依次升高,GPU浮点运算强大,流处理器多,速度快可以理解,但画  详情 回复 发表于 2023-1-28 21:58
 
 
 

回复

2939

帖子

0

TA的资源

五彩晶圆(中级)

7
 
wangerxian 发表于 2023-1-28 17:37 GPU出来的画质不好,难不成程序还不一样。。。

GPU 转码效果不如纯 CPU的原因

在进行视频转码的时候,有一些软件支持三种模式 ,纯CPU、CPU核显加速、nvidia GPU加速,这三种画质依次降低,但速度依次升高,GPU浮点运算强大,流处理器多,速度快可以理解,但画质的降低难道是因为在整型和浮点转化的过程中有损失么。

gpu里的gpgpu是图灵完备的,也就是cpu能做的事,他能100%的、不打任何折扣的完成,但是,视频编码不是只用gpgpu,还需要显卡里一部分专用晶体管,这个专用电路唯一的作用就是视频编码,它不是图灵完备的,它只有有限且固定的几个特定的工作模式。视频编码要尽可能优化效率,那就要尽可能深的向前后扫描变化不大的部分,扫描复杂度越高,扫描范围越大,耗时也就越长,而编码器的多核优化,本质上是把不同的帧分配给了不同的核心。

通常在低码率下, CPU 编码+Slow Profile 可以实现更好的画质,而不同的硬件编码器有各自擅长的场景, 比如 NVENC 在低带宽游戏编码表现上好于 VCN 和 QuickSync,视频编码是一种很特别的东西:压缩格式实际上只是规定了存储的内容的格式,至于你如何生成这些存储的内容,那就是各显神通,具有极大的灵活性。

GPU编解码往往是有损的。这就是刻意的性能优化导致的画质下降,而不是意外产生的损失,所以用GPU编解码基本相当于牺牲画质换取效率。用CPU编解码就相当于牺牲效率换取画质。

点评

原来是这样,就没有两全其美的方法。。。  详情 回复 发表于 2023-1-29 09:23
 
 
 

回复

6773

帖子

2

TA的资源

版主

8
 
tagetage 发表于 2023-1-28 21:58 GPU 转码效果不如纯 CPU的原因 在进行视频转码的时候,有一些软件支持三种模式 ,纯CPU、CPU核显加速 ...

原来是这样,就没有两全其美的方法。。。

 
 
 

回复

157

帖子

0

TA的资源

一粒金砂(高级)

9
 

非常不错的一个研究经验,感谢博主分享,大赞

点评

谢谢回复,对H616感兴趣的话可以看我的测评总结帖。 【BIGTREETECH CB1】开发板测评总结 https://bbs.eeworld.com.cn/thread-1231854-1-1.html  详情 回复 发表于 2023-7-9 11:11
 
 
 

回复

2939

帖子

0

TA的资源

五彩晶圆(中级)

10
 
小火苗 发表于 2023-7-8 13:39 非常不错的一个研究经验,感谢博主分享,大赞

谢谢回复,对H616感兴趣的话可以看我的测评总结帖。

【BIGTREETECH CB1】开发板测评总结

https://bbs.eeworld.com.cn/thread-1231854-1-1.html

点评

测评的 【BIGTREETECH CB1】 如此的板正精炼 哈哈  详情 回复 发表于 2023-7-9 14:06
 
 
 

回复

157

帖子

0

TA的资源

一粒金砂(高级)

11
 
tagetage 发表于 2023-7-9 11:11 谢谢回复,对H616感兴趣的话可以看我的测评总结帖。 【BIGTREETECH CB1】开发板测评总结 http://bb ...

测评的 【BIGTREETECH CB1】 如此的板正精炼 哈哈

 
 
 

回复

26

帖子

0

TA的资源

一粒金砂(中级)

12
 

学习了,感谢楼主    对我太有用了    收藏了

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表