音视频相关处理

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个时间戳的增长。 

原文地址:https://www.cnblogs.com/mcy0808/p/7289976.html