晕乎乎接了支付宝的面试电话

博主刚结束出差行程,经过长时间的大巴旅途后立即参加了支付宝的电话面试。尽管感到疲惫和思维迟钝,但仍希望能通过这次面试,并对自己充满信心。

  刚出差归来做了一天的大巴,刚到公司 接到支付宝 面试电话;

 

 就晕乎乎的电话面试了,说实话大脑真迟钝 什么都想不清楚;

 

 希望可以通过啊;

 

 自己还是有自己的优点哈!

 

鼓励哈自己!

我所使用的方法就是“码流伪装法”(自称)。本质是通过在码流打包发送的位置伪装成编码器发送过来的视频流,借助后续的rtp_rtcp模块(负责打包发送RTP的模块)将视频发送出去。我们的主角是一个叫做VideoSendStream的类(webrtc\video\video_send_stream.cc),Webrtc里面有很多名字很近的类你可能会晕乎乎的。这个类负责的工作就是收编码器发送过来的数据,在将数据推送给rtp_rtcp模块。步骤1.整体介绍类方法:EncodedImageCallback::Result VideoSendStream::OnEncodedImage( const EncodedImage& encoded_image, const CodecSpecificInfo* codec_specific_info, const RTPFragmentationHeader* fragmentation)一键获取完整项目代码elixir1234就是原本webrtc的编码器在帧编码完成后的回调口。这个方法一共需要三个参数:1.encoded_image视频的各种数据,包括数据buffer,数据大小,视频高宽和时间戳等等。2.codec_specific_info视频数据类型,我用的是webrtc::kVideoCodecH264,还有比如kVideoCodecVP8等类型3.fragmentation视频数据分片头信息,用于RTP的包内部多个帧的提取。(如果我没记错的话,vp8这个参数是空的。目前我没有验证手段。)阅读一下这个函数的代码,就会发现,他的核心其实是这句:EncodedImageCallback::Result result = payload_router_.OnEncodedImage( encoded_image, codec_specific_info, fragmentation);一键获取完整项目代码stylus12这个 payload_router_ 是一个处理编码器返回数据的一个封装类。他在整理获得的数据之后就会调用RtpRtcp模块进行打包发送RTP包。所以我们只要能够将我们的视频数据封装成上面三个参数的形式,再直调用这个 payload_router_.OnEncodedImage 方法,就可以伪装成编码器返回的视频数据发送出去了。2.EncodedImage和CodecSpecificInfoEncodedImage的成员比较通俗易懂。CodecSpecificInfo也就是简单的一个参数,我们就放在一起说。下图中的m_image就是一个EncodedImage,一些需要处理的成员主要如下所示:m_image_._encodedWidth = width;m_image_._encodedHeight = height;m_image_._size = CalcBufferSize(kI420, m_image_._encodedWidth, m_image_._encodedHeight);m_image_._buffer = buffer;//数据区指针m_image_._completeFrame = true;m_image_._length = buffer_length;//数据长度m_image_._timeStamp = time_stamp;//时间戳//m_image_.capture_time_ms_ = time_stamp;//视频捕获时间,并没有什么用m_codec_specific_info_.codecType = webrtc::kVideoCodecH264;
最新发布
11-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值