00:00
在解码的时候发生了错误,也就是我把IBP呢进行解码的时候,根本就没有解码成功,这时候就出现了乱码,所以所谓的花屏就是乱码对吧?乱码呢,不仅检测就直接进行了显示,OK,进行性了显示,这时候就出现了我们的花瓶对不对?那这个时候怎么解决呢?大家可以想一些解决方案,对吧?那我们一般常规的解决方案是什么呢?给大家提一下啊,第一个呢,就是当我们发现解码错误的时候。你们怎么做?难道我又重新从服务器拿一个数据过来再解码吗?再解码吗?不需要,这个时候应该怎么做?这个时候我们就直接干掉就可以了,如果你当下这个帧出现了解码失误,OK,干掉干掉怎么办?第二步,马上重新解码下一帧数据。听到没有,重新解码下一帧数据,然后怎么做,然后第三步显示。显示,也就是说如果发现错误,就把错误的数据丢掉,快速的解码下一帧数据,然后显示上去,这个时候就会出现什么卡顿对不对?
01:03
就是就会有一些轻微的卡顿啊,轻微的卡顿。但目前啊,我们很多这种做视频播放的APP,像这样的现象变得越来越少了,变得越来越少了,对吧,只有一些对吧,一些大家平常晚上对吧,晚上私人看的一些晚上可能会出现这个问题啊,因为这个确实服务器有时候跟不上,对吧,或者说你的解码器出现一些问题啊,所以才会出现这样的问题,所以就不要怪那个。不不是你的手机的问题啊,OK,好,然后呢,我们再来看一下第二个现象,比如说我们做直播对不对,我们再来从这上面延伸一下啊,我们做直播的时候,我们强调的是什么时效性。对吧,就是如果我说话和大家间隔六秒钟,你会发现不爽对不对啊不爽好,那这个时候呢,一般啊做直播同学听清楚啊,如果我们做直播的话,可以有一个动作叫抛弃逼真。为什么要抛弃逼真呢?诶,面试官就问你了,对吧,为什么要做这种抛弃逼真的行为呢?你跟他解释一下,原因很简单,因为我们在逼真提高的是什么?逼真的目的是提高它的压缩率。
02:08
对吧,它能带来,诶这个视频本来很大,通过这个逼真可以降低的更小,但是呢,直播它强调的是什么时效性,我不管你对吧多大,但是我要快,我要爽,对不对?好,所以这个时候直播会选择抛弃逼真的,为什么呢?因为我们在解码逼真的时候,对吧对前后的喘啊,就前后的针的数据有依赖。有依赖就意味着什么,我在网络传输的过程中,对吧,我前面这张拿到了,我后面在下一个包呢,没拿到,你就需要干嘛,你就需要等待,明白了没有明白扣个六啊,就我如果对前后数据有依赖的话,我就需要等待,这个时候任何的等待。都带来降低了时效性。对吧,都降低了时效性,所以说我要摒弃一切会影响到我时效性的问题,从而来提高,所以说它是一个比较困难的事情,好,那我们再来提一下,再来讲一个好不好,从这个地方延伸一下,做这种小视频。
03:06
那我问大家,做小视频要不要抛弃逼真呢?要不要?要不要要的扣一,不要扣二。啊,注意了啊,做小视频我们就不需要了,为什么?因为我们做小视频是不是直接服务器上传MP4文件,然后拉取。对吧,拉取一个MP4文件读取,然后播放对不对,这个时候我们强调什么?这个视频小视频要越小越好,对不对,就是这个视频文件越小越好,所以我们为什么要把逼帧抛弃呢?因为他可以把我们的视频压缩率提高呀,对吧,可以更多更小呀,所以逼真是不抛弃的,所以这个时候大家可以发现举一反三,如果你不了解它的本质,你就不知道这些现象为什么去这么做,明白了没有?明白了扣个六啊好,那我们现在呢,来开始讲业务代码了啊。首先呢,我们来看一下目前呢,我们选择用什么呢?用video To Box啊注意了这个业务对吧,视频编码对吧?视频编码既可以对吧,既可以使用video tour box也可以干嘛啊老师如果去了P针会怎么办?缺了P针对吧,你就没办法解码了呀。
04:16
对不对啊,就没办法解码了,你不可能只有I针和B针组成啊,注意了啊好,然后呢,再来往下看。We To Box只是它的啊,就是它的方向选择之一,你可以用fpa,也可以用v To Box,明白了没有,明白了扣个六啊,用fpa很简单,你只要用它的指令就可以了,对不对?好,那我们先来看一下v To Box,这是一个原声的,也就是今天晚上我讲完。所有同学都可以去玩一玩,对不对,所有同学可以玩一玩,好,那我跟大家讲一下步骤啊,第一步对吧?创建session数字编码参数对吧?开始编码,注意了第一条,你可以发现特别的简单是吧,但是呢。这玩意儿呢,你可以去通过腾讯啊,去通过这样的一个,呃,官方文档啊,去学习和了解啊,如果你有足够多的耐性,但是第二个你发现官方文档有时候你你可能搞不出来,所以说这个时候是。
05:07
官方文档加经验的结合学习啊,所以我们注意看啊,老师大家认识两个结构体,Cm sample buffer,这个结构体在我们的iOS这个平台上面去做音视频这个方向是至关重要的,你不管是做音视频的编码还是解码,包括我在渲染的时候,对吧?包括我们在渲染的时候,我们也会用到,对吧,我们也会用到,所以说呢,这地方大家注意看,这里面呢有两个,一个呢是我们编码后的视频帧cm block buffer,也就是我进行压缩后的数据存在哪里呢?存在了cm buffer。如果我没有编码的,也就是我采集到的原数据,或者说解码后的数据存在哪里呢?存在CV pack buffer,看到没有看到扣六啊,这两个结构体可能现在看有点陌生,但你要知道啊,因为以后我们要用到对不对,好。那我们来往下看好,然后呢,这个时候呢。
06:00
啊,那这时候我们来往下看这地方呢,我们来到我们现在的这样的一个代码部分。大家注意看,首先的话呢,我们要通过这样的一个a foundation来完成我们视频数据的采集,对不对,通过a foundation来采集我们的音频视频或者音视频数据,那我们这边呢,直接基于a foundation呢,封装了这样的一个工具类,你就说如果大家有需要对吧,要用到这个采集,诶你直接把它拽进去就可以用了,好注意看这里面呢,我们。各位同学对吧,我用是可以用,但我得什么我得学对不对?好,那注意了,A foundation的学习建议第一个看官方文档啊,看官方文档,因为A的其实你说它它的学习难度啊,大概是在85%左右。它没有特别特别难,但是呢,也没有很简单啊,没有很简单,所以这个时候呢,我们来往下看。我们就可以从这个every foundation对吧?啊,老师其实可以只需要音频数据,然后截图转换为Sam buffer啊,录屏推流啊,这个是一个舍近而取远的事情啊,舍近而取远的事情啊,而且呢,我们再往下看,司老师讲的是直播业务,也是我是通过摄像头采集啊,不是拿你屏幕上面的数据来进行啊这样的一个推流,明白了没有啊,不是说分享桌面,而是分享我在摄像头里面拍的这个美女,对吧?这是大多数业务里面对不对,直播会议啊对吧,包括这种抖音直播啊,是不是大多数业务上面的直播场景,OK,好来,往下继续。
07:26
好当家,大家也可以提出自己很好的方向和方案,去测试啊或去玩都可以啊,好第二个什么呢?第二个呢,你如果有兴趣啊,我只是说有兴趣啊,你也可以关注一下老师的博客。我先找到啊,大家可以直接在上面搜索老师啊。OK,大家可以直接在百度上面搜索老师第一个对吧,四老师的简书大家可以自己进去看啊,在这里面啊,直接在百度上面搜索第一个就是胖C啊,胖C本人,然后在四老师这里面呢,有一些文章,我觉得如果你有需要可以给你一些学习的啊这个渠道,比如说这个open GS对吧,然后呢,还有我们的这个啊a foundation对不对,然后呢,然后呢,这个时候我们的这个音视频的学习啊都有,大家可以去看一下啊。
08:17
对吧,音视频的学习OK,好,然后呢,四老师做项目的吗?OK,当然做项目呀,对吧,因为老师就是做音视频项目出身的呀,对不对啊,那我之前可能更多的是往项目方向发展,比如说做直播,对吧,做这种手机类的KTV项目啊,但是呢,现在如果我只从项目本身去出发,给大家讲技术的话,你会发现。就是大家可能觉得就是比较的片面,因为我之前在做项目的时候关注的是什么,关注的是技术落落地的点,就跟大家一样,就是我可能关注的是这个项目在这个时刻我怎么去解决问题,它只是一个点,但是我现在作为一个讲师的时候是什么,我要有点及面,对不对要有点及面,因为我需要传递的是一个面的知识,明白了没有,明白了扣个六啊,如果只一个点的东西,你会发现其实是比较单薄的啊,比较单薄的对这个麒麟乐乐同学提的是特别好的音视频,是一个在音视频里面,视频这个赛道。
09:10
的难度要低于音频这个赛道啊,要低于音频这个赛道,音频这个赛道要有一定的乐理知识做支撑,如果你光会技术,没有乐理知识做支撑的时候,你会发现你也没办法这个事情做好啊,这事实,但是大家也可以,这个过程是很就音视频这个赛道是博大而精深的,就值得大家可能50岁60岁还可以从业,这个方向就一直学,一直经验比较老道之后,你会发现你得到的东西也会更多啊,就这个意思啊,好,然后大家有兴趣的话呢,也可以关注四老师博客去学习啊,我也会持续的更新一些文章,来帮助大家解决在学习上面的一些困惑,好,那我继续往下讲啊,那这个关于c capture呢,我就不多说了,这时候呢,有一个回调方法会从我们的。AB foundation捕获到我们的音频也好,视频也好,都会放在哪里呢?放在这个数据结构里面,那这种我来到control里面呢。
我来说两句