北邮ACM视频直播回忆录

这是半年前的事了,趁着开通博客,赶紧写下来,以免时间长了,什么都没留下。

视频链接

倒计时一年

  最早想做视频直播还在2010年秋季的赛季。当时对到赛场和人一决高下已经没有很大的动力了,只想试着让比赛变得更有趣一些。首先能想到的就是提供环境让大家围观,于是有了排行榜的场外直播。很快,排行榜上数字的变化满足不了大家的围观欲望,于是开始构想网络视频直播。

  其实网络视频直播在近年ACM-ICPC World Final的比赛中均已采用。每次世界总决赛,主办方都会和当地媒体合作,拍摄比赛实况,并在网上直播。既然Final能做,赛区赛肯定也可以做。可惜如果由我发起的话,只能使用超低成本的设备和技术,做“山寨直播”……


  经过简单的调研,我发现可以利用SopCast进行直播。只需装个编码器,用摄像头拍摄,用比赛场地的wifi直接转播到场外。2010年杭州赛区,在hhanger的帮助下,用这套方法终于完成了第一次直播。虽然在最后一小时才调通了软件,最终也只是测试性地找到了8个人观看。不管怎样,这都是从无到有的一个飞跃,让我相信这是可以做到的。

这次直播用的技术非常之“山寨”,总共需要四个软件来完成。
A. 一个将摄像头的画面显示在屏幕上的软件,不记得名字了
B. e2eSoft VCam
C. Windows Media Encoder 9
D. SopCast
A把摄像头拍摄到的画面显示到屏幕上;B截取屏幕上显示的内容,做成一个虚拟摄像头;C把虚拟摄像头的画面编码成视频流;D把视频流用P2P的方式播出去。
实际上如果用好一些的摄像头的话,可以忽略A、B两个过程。但是一般的摄像头C都不认,只能通过屏幕显示转发一下……

倒计时半年

  2011年5月的世界总决赛,我几乎全程围观了比赛,并在群里一起讨论。围观的ACMers无不热血沸腾、心潮澎湃。这更加深了我组织一次视频直播的决心。

倒计时一月

  从各方面因素看,能做直播的只有2011年的北京赛区。一是认识的人多,找人帮忙容易、设备好借;二是北邮离我在的地方近,额外的开销小;三是时间上可能只有那段时间会稍空闲一些。

  起初担心的是版权的问题,比如北邮会不会觉得现场视频实况有版权,不能随便拍云云……后来发现这是最浮云的浮云了……一次在聊天中从北邮某位大神那里得知,房教也想搞视频直播,只是暂时没人做过这个。于是我果断就把这事接了下来。在DIY群里找到了志同道合的人一同研究直播方案,也找到了神牛为直播做解说。

倒计时一周

  在做了一些准备工作后,我提前一周到北邮测试设备。由于房教的大力支持,原本打算一手包办的我,压力顿时减轻不少。一台NB的新服务器用来做视频服务器,四台高清摄像机,还有足够的志愿者。同时,“山寨”直播的名号也扶正为官方直播,这也对直播的质量提出了新的挑战。虽然有了这些设备,但与专业的直播设备还是有很大的差距的。摇臂、导播机、调音台,这些高成本的设备都没有。当然,要是有这些的话,肯定也没我的事了。

  在这样的条件下,最大的难点就是导播(切屏)以及播出内容的策划。北邮电视台的台长以及几位数媒专业的同学也来帮忙,他们都对这场直播有着很大的兴趣。数媒的同学在场景的把握、构图方面,必然是强我很多。在考察了篮球馆之后,我们讨论修改了许久,终于敲定了几台摄像机的位置,以及主持人临时直播间的位置。一台拍摄主持人以及受采访者;一台在场地角落拍摄赛场全景;还有两台进入场地拍摄特写镜头。直播间实际由主席台改造而成,为了避免后面一排排的座位过于碍眼,主办方借来了一台42吋的液晶电视放在主持人身后,一个伪专业的直播间就诞生了。

  环境安排妥后,就是软件的难题了。网上能找到的导播软件动辄上千,不亚于借专业导播设备的价格。无奈之下,只能通过土办法解决导播问题了。中间纠结的解决过程就忽略了……多谢在东北大学一位做过视频直播的同学的帮助,解决了Windows media server以及P2P转发的很多问题。

  下面简述直播方案,直接跳过便可。若真看了,看官不崩溃便是我最大的荣幸。

摄像机A拍摄主持人以及受采访者。
摄像机B拍摄场地角落,可用于赛后制作Timelapse,即比赛场地全景快放100倍。(http://v.youku.com/v_show/id_XMTcyNTA3ODYw.html)(最后Timelapse没做成,不过摄像机选择的位置离当时比赛最牛的NULL队特别近,拍到不少特写镜头)
摄像机C、D拍摄场地内景。可选拍摄送FB气球,抓拍队员表情等。
摄像机AD分别由4位摄影师负责拍摄。其中摄像机CD的摄影师各配一名志愿者协助管理笔记本CD

笔记本ABE通过网线接入局域网,笔记本CD通过无线信号接入局域网。(事实上由于环境限制,最后都用无线接入了)
摄像机AD分别通过1394数据线与笔记本AD相连。笔记本AD安装Expression Encoder,将视频信号编码后推送至服务器
笔记本CD需要安装Vcam。负责管理笔记本CD的志愿者需要在拍摄队伍特写时,加上字幕。

笔记本A需要外接显示器,显示器放在摄像机A旁合适的位置,以主持人目光基本向前,并且摄像机A不会拍到为准。(最后无奈把显示器直接放在旁边的桌子上了)笔记本A由导播使用,安装Vcam及自制4屏监视软件。Expression Encoder中视频源采用:1.Vcam;2.通过Vcam(用于加被采访者的字幕)的摄像机A;3.过场动画。4.备用Vcam。音频源采用摄像机A。在视频信号B、C、D之间切换时,需要先切换到过场动画,再切换回其它视频信号。笔记本A设置双屏,显示器显示的内容为当前直播的内容,主持人应关注该内容,并解说。
笔记本E显示排行榜,接电视机。

  这只是基本的拓扑结构,还有很多很多更细节的操作……

  其实这里经过了这么复杂的折腾(转到服务器再下载再传服务器再转播),主要解决了两个问题:
  1. 主持人的声音要和画面配合好,传统的导播设备可以通过硬件做到实时。但是这里通过网络中转,必然会存在延时,上面的方案可以让主持人看到自己正在解说的画面。
  2. 拍摄队伍时候需要叠加上该队的信息。其实这个并不是必须的,只是为了让效果看起来更像final。显得不那么山寨……

带字幕的直播画面

倒计时两天

  策划永远只能是策划,实际操作起来,会遇到无数坑爹的事……比如,方案上要借4台有1394线的笔记本,我还停留在远古时代,以为一般的笔记本都有1394口。其实,这都是远古人的武断。北邮的志愿者们费了好大的力气才凑齐四台有足够性能的带1394口的本;又比如中间一度因为没人认识大1394口,差点要去买专业的视频采集设备;再如摄像机借来之后发现少两台机器的电池。还有好多预想不到的事,就不一一吐槽了,所幸最后都解决了。
  周五的场地测试、周六的热身赛,一直在调试设备。笔记本一台台地借到,设备一台台地架设起来,安装软件(有些电脑不支持A软件,有些不支持B软件,各种不顺的事),培训志愿者。终于到了晚上,用之前策划的方案,播出了第一个画面。

开播

  那天从3点睡到6点,之前在改排行榜的程序,之后就直接打车去北邮准备了。设备上电很顺利,连网顺利。最后一台摄像机,直到今天才到位。但是到现在还没完整地测试过一次,心里完全没底。果然在开赛前,发现主持人讲解用的麦克失效了……又是换线又是换麦克,在开赛一个多小时之后才发现居然是与外接键盘冲突……经过一小时无声的直播之后,一切都渐渐走入了正轨。采访、拍摄,基本按照理想的情况进行下去,中间也只有笔记本死机之类的小插曲而已。
  主持人的解说还是很给力的,只可惜经验不足,没给足休息时间,最后一小时熄火了。
  如果所有人都多一天时间准备的话,最后的效果还能好一些。不过这应该是没必要了,直播算是比较成功了。

花絮

  为了让直播更有看点,我们策划,裁判在所有FB发出结果之前电话通知导播。让摄像机做好准备才发放气球。当然,如果可以抓拍到FB(First Blood,即第一个过某题)队屏幕上跳出的 “Yes”,以及队员兴奋的表情,就更完美了。实际操作的时候,摄像机响应并没有这么快,为了不影响比赛的进程,约定了裁判组在半分钟后还是要给出评测结果。于是基本只能拍摄送气球的过程了。
  但是,就算这样,“意外”还是发生了。湘潭大学的xtu_team10队夺得了I题的FB,裁判组打来电话,并延迟返回了结果。几秒之后,上海交大的Seraphim队也过了I题,并立即返回了结果……送气球的志愿者以及不明真相的群众都以为是上海交大先过了I题。

参考文献

2009年世界总决赛的直播录像(http://v.youku.com/v_show/id_XODgyMjM2MTI=.html
Windows Server 2003搭建流媒体服务器(http://hi.baidu.com/senya/blog/item/99ffc8ca8875af4af21fe7bc.html

致谢

感谢房教的大力支持,使这次直播上升了一个水准。
感谢柯神的鼎力协助,解决了很多Mission Impossible。
感谢各位数媒的同学以及场地志愿者,在大家的共同努力下完成了这次直播。
感谢东北大学的那位同学,给出了关键的技术建议。
感谢白衣、Bella、Barty的给力解说,为整个直播添上了不可或缺的生机。
感谢trouger制作了过场动画。
……
最后最重要的,感谢她,都懂的。

6 评论

  1. 请问有什么好的流合成器可以推荐么?我们想做暑假一个seminar的sopcast,图像采集设备可能会采用手机/DV,现在的问题是Android手机上的IP摄像头只能提供一个单独的MJPEG视频流和一个ogg音频流,现在手里找不到能把这两个流合成为sopcast能播放的流的工具。网上介绍的VLC使用上有很多问题,用microsoft expression encoder和windows media encoder都只能采集摄像头的图像~~

    1. 当时用的山寨方法大概是这样的,可以先用microsoft expression encoder,把视频流发布一份。然后用VCam读入刚发布的网络视频,以虚拟摄像头的方式输出。这时候就可以把视频和音频合并的,会有延时。

  2. 从NLP那边看过来,惊觉是北邮集训队的学长!
    我是11级集训队的同学,看您提到了柯神,方便的话可以告知您是哪位学长吗?
    膜拜ORZ

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注