从『讲师问诊』到『讲师打分』,LiveVideoStackCon 2017期间在线搜集了许多参会者的问题,现已得到讲师的答复,一并整理如下。
文 / Ant
其实这篇文章可以出的更早,各位讲师基本上当天之内(大多数是在3个小时内)回复了问题,与自己的懒惰大相径庭,无比惭愧。刘歧还在短短几十分钟内,针对网友的问题在FFmpeg社区提了一个patch。
如果大家还有问题,可以在文末留言。当然,未来会采用更自动化的方式来Q&A。
Q:想知道熊猫直播H5什么时候开源?
姜雨晴:这几天正在做开源评审,通过了很快就可以开源。如果没过,需要对代码做些改动。
Q:在前车预测上面,是如何做的?
潘争:使用faster RCNN,SSD这些物体检测方法都可以做到. 当然, 要首先收集一个车辆检测的数据集。faster RCNN, SSD这些方法都可以从百度、Google中找到详细介绍。
Q:很高兴这边看到您,并且可以的提问,恰好,前段时间使用ffmpeg遇到了一个问题困扰着我,希望能向您请教。我们将视频(mp4)的一帧转为图片之后,同时希望获得该图像在整个视频中的时间。目前我们时通过帧率(rps)结算的,比如,我们有第120帧图像,并得知帧率为24,则在视频中的时间 t = 120 / 24 = 5s 。但是,有一些视频存在着丢帧现象,或者由于帧率不是整数的原因,这样计算出来的时间,会与视频播放时该帧的展现时间有差池。找了一些资料,好像可以用pts和ffmpeg内部时间基(AV_TIME_BASE)来计算一帧在视频中的时间,timestamp(秒) = pts * av_q2d(st->time_base),问题是:
- 貌似智能通过源码的调用;(目前我只会一些基本的命令行调用,获取某一帧使用FFmpegReader,视频信息用ffprobe)
- 用这个方法是否有效,是否有更好的方式来处理这个问题呢?
刘歧:基本无效,不过可以尝试一下,我研究一下看看能不能加一个对应的参数到ffmpeg中吧。 https://patchwork.ffmpeg.org/patch/5780/ patch我提到maillist里面了,可以先尝试用这个patch ffmpeg -i input -copyts -f image2 -frame_pts output-%d.jpg
Q:直播互动能够同时支持多少方?
赵加雨:视频互动支持包括主播在内的一共4人,纯音频互动包括主播在内的一共13人。
Q:如何实现QoS: NACK, adaptive bitrate and resolution, smooth sending;我想请问贵公司是怎么优化,测试QoS的呢?
赵加雨:音视频的QoS通常包括带宽评估、自适应码流、关键帧请求、FEC和丢包重传等,具体的策略是多种多样的,有的希望流畅优先,有的希望清晰优先,有的是通话场景,有的是音乐教学场景,不同模式不同场景下QoS的策略自然也会不同,这一部分也是音视频应用里比较复杂的部分。关于测试,网易有一个专业的音视频评测实验室,可以模拟各种网络环境,任何一种策略和算法都会先经过我们的音视频实验室验证,上线后我们也会先灰度一部分线上用户,通过统计线上用户的表现来评测算法和效果。
Q:随着Chrome对Flash的逐步封杀,如何在pc-web端实现低延时直播,延迟控制在1秒以内?
林正显:要控制端到端延时在1秒以内的话,需要在这几个方面都要做到很低: 1)音视频编解码延时 2)网络传输延时 3)音视频抖动缓冲引入的延时 第一点取决于编解码器的选择(如H.264/H.265/VP8/VP8)、编码参数的选择(是否带B帧,帧率大小如何)等因素。对于第二点,在严苛的延时要求条件下,CDN不一定是最好的选择,此时可以考虑用自建的网路 UDP传输来保证。至于第三点,首先还是要保证网路的抖动尽量低,所以好的传输网络很重要;其次在设计抖动缓冲时,注意平衡延时和流畅度两者之间的冲突。 如想减轻自己开发的工作量和难度,可以采用商用的实时交互音视频云服务,或参考WebRTC。目前来看,在web端,HLS是无法代替flash来实现<1秒的延时的,备选的无非就是WebRTC和MSE(后者苹果不支持)。