自己大概了解了一下架构 专业摄像机 --HDMI--> USB HDMI 采集卡 --编码--> 推流服务器 -->流媒体发布服务器
现在问题是: USB HDMI 采集卡的主机上通常是如何采集的?是用 Flash Media Encoder 然后在另外一台机器上用 ffmpeg 来推流到服务器, 还是可以直接就可以用 ffmpeg 就可以捕捉到采集卡的视频然后直接推流。
1
fxxkgw 2016-11-03 10:17:33 +08:00
nignx rtmp 模块
|
2
thomaspaine 2016-11-03 10:26:35 +08:00
pc 端用 obs 推流到服务端,用 FME 也可以,但是功能太少了。服务端,可以用 nginx 的 rtmp 模块,可以用 red5 ,可以用 crtmpserver
|
3
ETiV 2016-11-03 10:26:37 +08:00 via iPhone
但 USB 视频采集卡,对电脑来说,跟普通摄像头一样,都是视频输入设备。
所以 ffmpeg 直接推问题不大 但你难道直接将摄像头画面输出吗?不需要给画面上叠加个字幕啥的? |
4
douyang 2016-11-03 10:34:42 +08:00
|
5
yanest OP |
6
thomaspaine 2016-11-03 10:56:10 +08:00
@yanest 以前上学的时候搞过直播晚会,用的是采集卡+OBS ,没问题的,而且还不是 USB 采集卡,是 PCI 的板卡,接口是 SDI 。用 FME+FFMPEG 也不是不行,太麻烦了。
|
8
serve99 2016-11-03 18:01:59 +08:00 1
方式 1 :
1. 你现场布一台采集画面用的电脑(运行 FMLE ,在输入端的选项中选择采集卡,采集卡当然也接好摄像机),此时,你现场的那台电脑就取到你摄像机的画面了。 2. 在以上的 FMLE 有一个输出选项,填入你 [流媒体服务器,假设是 rtmp://www.abc.com/live] 及 [流名称,假设是 livestream] ,就可以将你采集到的画面发到服务器进行直播了; 3. 在你的服务器端,建一个站点,用来观看访问,假设是站点中直播观看地址是 http://www.abc.com/live.html ,你这个 live.html 中要用支持 rtmp 直播的播放器来调用你的直播画面,此时会要用到第 2 步中的 [服务器地址] 和 [流名称] (播放器的话,像国外的 flowerplayer 和国内的极酷阳光播放器,均支持 rtmp 协议流直播)。 4. 以上完成后,就可以通过 http://www.abc.com/live.html 来观看你的直播了。 方式 2 : 用 OBS 来发起直播(但这个偏向于发起桌面屏幕的直播); 方式 3 : 用 HDMI 编码器实际也可以直接发起直播的,像电视台节目在线直播一般就是用这种的; hdmi 有一个管理界面,当中设定 [流媒体服务器] 和 [流名称] 就可以了,其他步骤与方式 1 类似。 |
9
yanest OP @thomaspaine
@fxxkgw 用 nginx 的 rtmp 搭建了服务器,现在遇到一个问题,当推流端遇到网络不稳定丢包的时候, nginx rtmp 上的直播流就会僵死在上面,显示有推送流,但是没有流量。 使用 OBS 客户端没法再继续推流,需要停止等好久一阵 nginx rtmp 上的流才会自行消失,才能继续打开 obs 推流。 配置如下: server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } location /stat { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { root /data/nginx/nginx-rtmp-module/; } location /hls { types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root html; add_header Cache-Control no-cache; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; rtmp { server { listen 1935; # publish_time_fix off; application live { live on; #stream on live allow record off; hls on; hls_path /data/nginx/local/nginx/html/hls; allow publish all; # control access privilege allow play all; # control access privilege } } } |
10
thomaspaine 2016-11-09 22:33:46 +08:00
@yanest 我那时候搞直播是内网,网络质量不担心。如果你的网络环境差,可以考虑先推送到一个网络质量好的服务器 A 上, A 上只有 RTMP 的服务,然后直播服务器 B 从 A 上拉流过去转换成 hls 直播
|
11
linuxvivian 2017-07-13 11:37:38 +08:00
如果你的前端是摄像机的话,HDMI 接口。 用采集卡的方案,那就是 PC+采集卡+直播推流软件,就是现场直播,用 PC 来链接的话,不便携,现在都是上那种硬件编码器小盒子,也不贵,直接推送 RTMP。 流媒体系统的话,开源的有 red5, ngix,国外知名品牌的话,有 adobe 的 FMS, wowza 等,用国内的可以考虑 800li media server。
要是想省事,直接用云服务平台,现在有很多,baidu 一搜索一大堆。 ;) |