
音视频
文章平均质量分 64
顾文繁
功不捐唐终入海
展开
-
【解决】QT 中使用SDL多次创建窗口不能渲染画面
在QT中多次绑定创建窗口句柄会出现不能渲染的问题。win_ = SDL_CreateWindowFrom(this->win_id_); SDL_ShowWindow(win_);原因是SDL中SDL_CreateWindowFrom的源码中voidSDL_DestroyWindow(SDL_Window * window){ SDL_VideoDisplay *display; CHECK_WINDOW_MAGIC(window, ); /* Restor原创 2022-01-16 22:24:56 · 1725 阅读 · 0 评论 -
ffmpeg No start code is found ,Error splitting the input into NAL units.解决方案
对于此错误,大概有两方面原因,一方面,ffmpeg的将要发送给解码线程的packet与解码器上下文的不对应,另一方面是解码器上下文参数缺失导致1.所以很大概率是把音频的packet当做视频的packet发送到解码线程去做了。2.没有把解封装的参数复制到解码器的上下文中。...原创 2021-10-25 22:44:58 · 6021 阅读 · 0 评论 -
ffmpeg编解码器包装类
对视频处理过程中,有编码,解码过程,两个过程在ffmpeg实现过程中有相同的处理函数,为了降低代码冗余,封装两个过程显得很有必要。编码,解码两个过程的处理函数有:avcodec_find_encoder() 找到编码器avcodec_find_encoder() 找到解码器avcodec_alloc_context() 生成编码器上下文avcodec_open2打开编码器上下文avcodec_send_frame() 发送帧到线程中压缩(编码)avcodec_send_packet() 发送原创 2021-10-09 11:13:11 · 389 阅读 · 0 评论 -
FLV文件推流到Nginx(C++实现)
本文将介绍如何通过librtmp将flv文件推送到Nginx。首先我们明确文件flv和rtmp flv的文件格式是不一样的,具体参考RTMP FLV和FLV文件的区别。文章结构:首先进行解析flv文件,然后从解析后的文件中,读取音频/视频文件,最后将音视频文件利用librtmp推送到Nginx服务器中。Nginx 支持RTMP就不在此赘述。该过程的实现放在下文。解析FLV首先我们要了解FLV文件的格式图片来源于网络。这张图片清楚地展示了FLV的文件结构,首先是FLV Header,一般是9个字节,然原创 2021-08-17 12:16:40 · 676 阅读 · 0 评论 -
RTMP消息格式
先放一张网络资源的图。这里的RTMP Header和RTMP Body是把传输层的外壳剥掉之后的内容,其实就是TCP建立连接以后的数据,这些头再经过RTMP服务端和客户端解析这些数据。RTMP HeaderBasic HeaderBasic Header中format和Chunk Stream ID一共占用1个字节。format占用2位,Chunk Stream占用6位。如果Chunk Stream在2~63之间,则不再扩展Basic Header。如果为0或者1分别进行扩展Basic Hea原创 2021-08-13 11:55:03 · 522 阅读 · 0 评论 -
RTMP协议
RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/red5等。RTMP与HTTP一样,都属于TCP/IP四层模型的.原创 2021-08-13 11:18:18 · 223 阅读 · 0 评论 -
H264基本知识
压缩比为1%原创 2021-08-02 18:54:47 · 9955 阅读 · 0 评论 -
YUV基础知识
图像的基础像素分辨率 RGBRBG888(24位),RGBA(32位)图像是数据,屏幕是显示设备,图像数据经过驱动程序让屏幕显示图像。Bitmap是BGR格式,若要现实,需将BGR数据转化为RGB数据。PPI(pixels per inch),DPI(Dots pen inch),两者基本属于1:1的关系,PPI >300 属于视网膜级别。分辨率:X轴像素个数✖️Y轴像素的个数。常见的宽高比16:9/4:3。...原创 2021-07-19 14:48:03 · 1482 阅读 · 2 评论 -
FFmpeg API进行AAC编码
FFmpeg API进行AAC编码步骤1 注册设备avdevice_register_all();2 查找格式并打开输入av_find_input_format("avfoundation");avformat_open_input(&fmt_ctx, devicename, iformat, &options))3编码器 //avcodec_find_encoder(AV_CODEC_ID_AAC); AVCodec *codec = ...原创 2021-07-06 21:56:37 · 678 阅读 · 0 评论 -
音视频基础知识
常见的音频编码器常见的音频编码器包括OPUS(速度快,压缩率大),AAC(最为广泛的),Ogg,Speex,iLBC,AMR,G.711其中,ACC在直播系统中应用的比较广泛,OPUS是较新的音频编解码,WebRTC模式使用OPUS,固话一般使用G.711(损耗很大)系列。评测结果:OPUS>AAC>Ogg。音频编码质量比较音频编码率比较ACCAAC(Advanced Audio Coding)由许多知名公司开发,其目的是取代MP3格式,其最开始是基于MPEG-2的.原创 2021-07-06 16:21:45 · 1256 阅读 · 0 评论