VC环境集成FFMPEG
直播卖货系统开发想要顺利的实现直播,就需要进行推流,接下来就让我们一起了解一下,直播卖货系统开发如何通过FFMPEG实现简单的推流。
-
- 使用Visual Studio创建一个win32项目,并在解决方案文件的目录下,创建FMPEG文件夹
-
- 从官网下载,将dev版本中的include文件夹和bin文件夹拷贝到上面创建的FMPEG文件夹内
-
- 在项目--属性--配置属性--C/C++--常规--附加包含目录中添加“../FFMPEG/include”
-
- 在项目--属性--配置属性--链接器--常规--附加目录库中添加“../FFMPEG/lib”
-
- 在项目--属性--配置属性--链接器--输入--附加依赖项中添加lib的文件名:avcodec.lib;avdevice.lib;avfilter.lib;avformat.lib;avutil.lib;postproc.lib;swresample.lib;swscale.lib;
-
- 将share版本中bin目录下的dll拷贝到解决方案的Debug目录下
-
- 将一个flv文件拷贝到Debug目录下
FFMPEG相关概念
-
- 为什么会有DTS解码时间戳和PTS显示时间戳
通常一个视频的视频帧是这样的顺序来播放的,IBBP,但是由于算法的原因,可能在展示B帧的时候,需要用到P帧的数据,因此实际上的存储顺序可能是IPBB,所以对于帧而言,他的解码顺序与播放顺序并不一致。如果直播卖货系统开发,仅仅使用简单的帧数乘以频率的方式来同步视频,播放端在改变了播放速度或者播放时间的时候,就无法正确同步了
-
- time_base的作用
在视频内没有绝对时间,只有相对时间,如00:00:05是指相对于起始点来讲的,在视频内部使用时间戳来表示,时间戳是按照时间刻度来计算的,也就是time_base,如果time_base是1/60,就表示一个时间单位是1/60秒。如果直播卖货系统开发在编码的时候采用了1/1000的time_base,某个帧的pts是465000,在视频解码时,换成了1/9000的time_base,此时时间刻度不一致了,就需要通过计算才能得到解码时的pts
-
- AVRational
说白了就是标识一个分数,num是分子,den是分母,用av_q2d来表示这个分数的double结果
一个RTMP推流的代码
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69982461/viewspace-2785010/
,如需转载,请注明出处,否则将追究法律责任。