• 音视频相关处理


    1.花屏

    原因:丢掉了关键帧。

    解决:把这个丢掉的I帧后的B帧P帧也丢掉。

    2.快进方式

    1)平滑快进:40ms变成20ms,最高8倍速,不能快退。

    2)I帧快进:I帧太少可能,支持HTTP。

    3.音视频不同步

    原因:1.帧率低了。

       2.视频帧快于音频帧。

    4.编码参数设置

    1)码率:码率越大,视频越大。

    2)码率偏差,允许的偏差越大,视频越小。

    3)gop_size:没多少帧插入一个I帧。

    4)max_b_frame:= 0 表示不适用I帧。!=0表示两个帧之间允许出现多少个B帧,B帧越多,图片越小。

    5)pre_me: =2运动估计。

    6)lmin-lmax:最小,最大拉格朗日系数。

    7)qmin-qmax:最小,最大量化系数,与视频质量有关,值越大,质量越差。

    8)qblur:量化浮动系数,在0.0-1.0之间。

    5.上采样:在奇数点插入零值,频率高一倍。

       下采样就是抽取偶数点的值,奇数点的值不要,频率降低一倍。

    6.ffplay播放yuv视频的命令:

      ffplay -s 420x240 -pix_fmt uyvy422/nv12/nv21/yuyv422 test.yuv

    7.YPbPr:逐行扫描色差输出。

      YCbCr:隔行扫描色差输出。

    8.仿射变换:

      如矩形映射为非矩形的纹理。

    9.界面java层-->封装实现java层-->jni实现层

    10.rtmp://192.168.1.104:1935/live/12345

      IP:服务器的配置决定的,先把这个地址告诉推流端,再把这个地址告诉拉流端

      live:app的应用名,服务器规定的。

      12345:流名字。

    11.流媒体服务器的作用是把推上来的裸流进行封装切片等。

    12.DRM

      1)全部加密:破坏文件格式。

      2)mdat内容进行加密处理,通用性不强。

    13.cdn加速原理和p2p的区别

      cdn是把数据缓存放在附近的节点,而不是其他的client上。

    14:p2p:减小服务器压力就会变得很快,

         client A<--server-->client B

    A和B通信之前要服务器同意转给目标主机,打开socket目标端口。

    15.flip是刷新layer操作,blit是内存数据搬移操作,layer可以直接使用显存,节省内存。

    16.rtsp,rtmp直播或者点播,发给客户端的都是裸流,

      hls和本地播放才需要客户端解复用的。

      直播:服务器接收的也是裸流。

      rtmp-nginx流媒体服务器,支持mp4,flv文件点播,不支持ts,mkv文件点播。

      rtmp点播最好用flv,因为格式与rtmp封包格式类似,直播就用rtmp协议封装264,aac就可以。

      rtmp用flv就是把tag头的第一个字节解析后添加到rtmppacket结构体。

    17.

    avcc字段解析:

    0x01:其他的信息如configurationversion

    0x42:avcprofile的Indication

    0xc0:profile_compatibility

    0x1e:avclevelIndiction

    0xFF:是6bit的reserval和2bit的lengthsize(NALu包长数据使用的字节数)

    0xE1:是3bit的reservel和5bit numifsequenceParaterset.

    0x00 0x18:长是sps的长度。

    然后是sps数据。

    0x01:numofpictureParametersets

    0x00 0x04是pps长度

    然后是pps数据。

    18 git回退版本命令

      git reset --hard HEAD^^

    19.音频首包解析---》然后会封装成edts结构

    0001 00101  0010000

    LC-AAC格式   声道数   采样率

    20.avstream中的timebase= 1/90000

    avcodeccontext中的timebase =1/30帧率

    aac是固定的1024个时间戳的增长。 

  • 相关阅读:
    记人生第一面之ThoughtWorks面试经历
    2016阿里笔试
    思特沃克学院学习方法总结
    敏捷软件开发
    express
    如何将项目部署到heroku并使用malb数据库
    渐进增强与平稳退化
    what is react?
    什么是Node.js
    面试1(转)
  • 原文地址:https://www.cnblogs.com/mcy0808/p/7289976.html
Copyright © 2020-2023  润新知