abcxiawei 发表于 2024-6-9 10:29

从摄像头里获得的影像源,推流时需要再次编码吗?

假设现在有三个直播平台A,B,C。都使用这个摄像头的源开始直播,它是否要消耗三倍的编码能力?还是说摄像头提供的源本身就是编码好的流,不需要再消耗额外的编码算力?

木谷高明 发表于 2024-6-9 10:36

日日夜夜 发表于 2024-6-9 11:51

用什么软件都不说是要虚空讨论吗,比如obs不管你摄像头是啥编码收到后都要编码一次,obs不用插件只能推给1个服务器,你可以自己建一个推拉流服务器比如srs,这时候可以只复制不再重新编码,不过你想要重新编码应对不同平台的特殊要求也可以做到

二丁目拓也 发表于 2024-6-9 12:56

日日夜夜 发表于 2024-6-9 11:51
用什么软件都不说是要虚空讨论吗,比如obs不管你摄像头是啥编码收到后都要编码一次,obs不用插件只能推给1 ...

我之前有一次活动是需要同时在抖音、B站、小红书上直播
采集卡连相机,OBS读采集卡,然后将OBS设置为虚拟摄像头
然后用其他三家的直播助手读虚拟摄像头,虚拟摄像头不会因为某软件占用而不能被其他软件读取
层层套娃能实现单机位三平台直播,就是非常吃性能

abcxiawei 发表于 2024-6-9 13:01

日日夜夜 发表于 2024-6-9 11:51
用什么软件都不说是要虚空讨论吗,比如obs不管你摄像头是啥编码收到后都要编码一次,obs不用插件只能推给1 ...

原来这个东西和软件有关系的啊,我一直没搞懂软件从摄像头获取数据的原理。所以我就没说软件,OBS确实是我用的最多的一款。


我有个疑惑是,摄像头给软件的到底是什么,是已经编码后的数据?还是什么?

abcxiawei 发表于 2024-6-9 13:03

二丁目拓也 发表于 2024-6-9 12:56
我之前有一次活动是需要同时在抖音、B站、小红书上直播
采集卡连相机,OBS读采集卡,然后将OBS设置为虚拟 ...

其实这里也是我想问的,

抖音,B站,小红书同时从这个虚拟摄像头里取数据,那么它们取到后,会重新编码一次吗?还是说取到的就已经是编码好的数据,直接推流就行了?

如果是需要重新编码,那这就需要三倍的编码算力啊

二丁目拓也 发表于 2024-6-9 13:09

abcxiawei 发表于 2024-6-9 13:03
其实这里也是我想问的,

抖音,B站,小红书同时从这个虚拟摄像头里取数据,那么它们取到后,会重新编码 ...

应该会再次编码
每个平台的码率也不一样

花江夏樹 发表于 2024-6-9 13:57

普通摄像头采集的是 YUV 格式的数据,可以理解为一帧一帧的 BMP 图片,不可能不编码直接推流的,这种可以把视频编码后推到多个地址。

也有支持直接推流的摄像头,比如监控之类的就支持,可以用软件拉摄像头的流然后转推到直播平台,可以避免重编码。

日日夜夜 发表于 2024-6-9 13:57

abcxiawei 发表于 2024-6-9 13:01
原来这个东西和软件有关系的啊,我一直没搞懂软件从摄像头获取数据的原理。所以我就没说软件,OBS确实是 ...

摄像头给的数据类型主要看摄像头(包括驱动给的选项),老一些的usb摄像头很多是mjpeg流,新一点的usb摄像头(包括很多wifi摄像头)也有h264、hevc,如果是hdmi接口、sdi接口或带宽足够的USB接口的有YUV或RGB流
YUV或RGB都算raw格式,数据量大,一般用于制作,不用于成品交付
mjpeg、h264、hevc这些都是已经编码的数据,理论上直接上传也可以,但实际上可能不一定满足平台的编码要求
因为不解码成raw就不可能进行任何画面修改,所以obs干脆没有直接上传的选项,都是重新编码的

日日夜夜 发表于 2024-6-9 14:00

本帖最后由 日日夜夜 于 2024-6-9 14:02 编辑

abcxiawei 发表于 2024-6-9 13:03
其实这里也是我想问的,

抖音,B站,小红书同时从这个虚拟摄像头里取数据,那么它们取到后,会重新编码 ...
虚拟摄像头获取的都是显卡framebuffer里面的raw数据,也就是RGB数据,所以肯定每个软件再各自编码的

所以你想要一次编码推流多个平台,只有知道平台的推流地址,绕过平台的推流工具,自己建立推流服务器推过去才行

laotoutou 发表于 2024-6-9 15:14

大部分是重新编码的。
你可以看看gstreamer这个框架,sink source的使用
页: [1]
查看完整版本: 从摄像头里获得的影像源,推流时需要再次编码吗?