WriteN, RTMP send error
WriteN, RTMP send error 32 (133 bytes)
WriteN, RTMP send error 32 (49 bytes)
WriteN, RTMP send error 9 (42 bytes)
现象:
推流失败,srs服务出错。
原因
视频流较慢,音频流较快。
复现
视频解码得到帧数据,用异步接口处理帧数据,在回调函数中取回处理完的帧数据再编码推流,此时因为处理帧数据有一定的延时,10ms左右,所以在 write_frame 时,写入了较多的音频数据和少量的视频数据,推流时报错。
处理
将音频帧数据存到一个队列中,每一次异步接口返回时,从队列中弹出适当的音频帧数据。
ret = av_interleaved_write_frame(fmt_rtmp_ctx_, pkt);AVPacket* audio_packet = NULL;if (!audio_packets_queue_.empty()) {audio_packet = audio_packets_queue_.front();} else {return ret;}while(audio_packet->pts < video_pts_ + 200) {printf("audio pts: %ld dts: %ld duration: %ld\n", audio_packet->pts, audio_packet->dts, audio_packet->duration);av_interleaved_write_frame(fmt_rtmp_ctx_, audio_packet);mutex_.lock();audio_packets_queue_.pop();av_packet_free(&audio_packet);if (audio_packets_queue_.empty()) {mutex_.unlock();break;}audio_packet = audio_packets_queue_.front();mutex_.unlock();}av_packet_unref(pkt);
WriteN, RTMP send error相关推荐
- ffmpeg rtmp 推流错误WriteN, RTMP send error 10053 10038
利用ffmepg推264流到rtmp服务端出现错误WriteN, RTMP send error 10053,具体如下图所示. 图1推流到rtmp服务错误 原因是视频流缺少SPS,PPS信息,加上这两 ...
- python利用ffmpeg进行rtmp推流直播
思路: opencv读取视频 -> 将视频分割为帧 -> 将每一帧进行需求加工后 -> 将此帧写入pipe管道 -> 利用ffmpeg进行推流直播 pipe管道: 啥是pipe ...
- CrtmpServer不支持FFMpeg截图以及个别客户端推流(如XSplit)的解决办法
近期由于流媒体服务人员离职的原因,从事C#工作的我被迫分析开源流媒体服务CRtmpServer.一切从零开始,从google下载了源码在环境搭建编译出现链接库等各种问题不断出现,在度娘的帮助下和还不算 ...
- librtmp 源码分析笔记 WriteN
WriteN实现很简单.贴下源码方便以后翻看. static int WriteN(RTMP *r, const char *buffer, int n) {const char *ptr = buf ...
- RTMPdump(libRTMP) 源代码分析 8: 发送消息(Message)
===================================================== RTMPdump(libRTMP) 源代码分析系列文章: RTMPdump 源代码分析 1: ...
- 3.1 HI3518+RTMP
前面介绍了HI3518作为服务器实现RTSP传输视频,但HI3518毕竟只是个嵌入式CPU,处理并发能力有限,如果多个客户端同时观看视频就会有性能上的问题,而且实现一些直播功能如暂停,回放功能就有些捉 ...
- 流媒体分析之rtmp协议srs服务器数据收发
根据上篇文章,rtmp 推流处理publishing .do_publishing 处理SrsLiveSource及传入收发SrsPublishRecvThread协程. srs_error_t Sr ...
- SRS4.0源代码分析之RTMP拉流处理
目标: 上一节分析了SRS针对推流客户端的处理逻辑,这里接下来分析针对拉流客户端的处理逻辑. SRS拉流端处理逻辑简单说就是SrsRtmpConn::do_playing()协程从SrsLiveCon ...
- 5、SRS4.0源代码分析之RTMP拉流处理
目标: 上一节分析了SRS针对推流客户端的处理逻辑,这里接下来分析针对拉流客户端的处理逻辑. SRS拉流端处理逻辑简单说就是SrsRtmpConn::do_playing()协程从SrsLiveCon ...
最新文章
- 哈啰顺风车成立5亿元“顺风绿色出行基金”
- (30)保护模式阶段测试
- Protobuf序列化的原理-负数的存储
- 谁知道这个代码片段干嘛的
- 【项目管理】git和码云的使用
- [html] 写html代码时,如果缺少了结束标签,你如何检测及如何预防?
- 大地SEO教程学习笔记之八:
- python 读取excel太慢_Python 读取excel并转换为字典
- java-图像的几何变换
- 面试官:怎么解决MySQL中的死锁问题?
- [ ArcGIS for Server 10.1 系列 ] - 重新创建Site
- 【实践】腾讯PCG推荐系统应用实践(附PPT下载链接)
- Python编程手册系列 - 日历、日期、时间相关内建模块详解
- 爱普生L3153打印机如何清洗喷头
- 给 Android 开发者的 Gradle 入门指南
- 十分钟看懂时序数据库(I)-存储
- python表情换头_教你用Python制作表情包,实现换脸技术!
- [NodeBB]NodeBB论坛站点管理小结
- 保姆式学习,解决夜神模拟器ADB版本不一致问题
- Linux课程第十九天学习笔记
热门文章
- linux不重启换root密码是什么原因,在Linux下修改和重置root密码的方法(超简单)
- 某个元素的距离页面的左边距_在机检测圆心距
- 拿着5家offer的Java,对面试官做了什么?
- kotlin 添加第一个 集合_Flutter开发必学Dart语法篇之集合操作符函数与源码分析...
- H5 input输入限制最大位数,和调用小键盘需求发生冲突的解决办法
- JS_单个或多个文件上传_不支持单独修改
- 200行代码写一个简易的dva
- HTML5 参数传递
- 【SQL Server 学习系列】-- sql 随机生成中文名字
- 配置Ubuntu虚拟环境