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相关推荐

  1. ffmpeg rtmp 推流错误WriteN, RTMP send error 10053 10038

    利用ffmepg推264流到rtmp服务端出现错误WriteN, RTMP send error 10053,具体如下图所示. 图1推流到rtmp服务错误 原因是视频流缺少SPS,PPS信息,加上这两 ...

  2. python利用ffmpeg进行rtmp推流直播

    思路: opencv读取视频 -> 将视频分割为帧 -> 将每一帧进行需求加工后 -> 将此帧写入pipe管道 -> 利用ffmpeg进行推流直播 pipe管道: 啥是pipe ...

  3. CrtmpServer不支持FFMpeg截图以及个别客户端推流(如XSplit)的解决办法

    近期由于流媒体服务人员离职的原因,从事C#工作的我被迫分析开源流媒体服务CRtmpServer.一切从零开始,从google下载了源码在环境搭建编译出现链接库等各种问题不断出现,在度娘的帮助下和还不算 ...

  4. librtmp 源码分析笔记 WriteN

    WriteN实现很简单.贴下源码方便以后翻看. static int WriteN(RTMP *r, const char *buffer, int n) {const char *ptr = buf ...

  5. RTMPdump(libRTMP) 源代码分析 8: 发送消息(Message)

    ===================================================== RTMPdump(libRTMP) 源代码分析系列文章: RTMPdump 源代码分析 1: ...

  6. 3.1 HI3518+RTMP

    前面介绍了HI3518作为服务器实现RTSP传输视频,但HI3518毕竟只是个嵌入式CPU,处理并发能力有限,如果多个客户端同时观看视频就会有性能上的问题,而且实现一些直播功能如暂停,回放功能就有些捉 ...

  7. 流媒体分析之rtmp协议srs服务器数据收发

    根据上篇文章,rtmp 推流处理publishing .do_publishing 处理SrsLiveSource及传入收发SrsPublishRecvThread协程. srs_error_t Sr ...

  8. SRS4.0源代码分析之RTMP拉流处理

    目标: 上一节分析了SRS针对推流客户端的处理逻辑,这里接下来分析针对拉流客户端的处理逻辑. SRS拉流端处理逻辑简单说就是SrsRtmpConn::do_playing()协程从SrsLiveCon ...

  9. 5、SRS4.0源代码分析之RTMP拉流处理

    目标: 上一节分析了SRS针对推流客户端的处理逻辑,这里接下来分析针对拉流客户端的处理逻辑. SRS拉流端处理逻辑简单说就是SrsRtmpConn::do_playing()协程从SrsLiveCon ...

最新文章

  1. 哈啰顺风车成立5亿元“顺风绿色出行基金”
  2. (30)保护模式阶段测试
  3. Protobuf序列化的原理-负数的存储
  4. 谁知道这个代码片段干嘛的
  5. 【项目管理】git和码云的使用
  6. [html] 写html代码时,如果缺少了结束标签,你如何检测及如何预防?
  7. 大地SEO教程学习笔记之八:
  8. python 读取excel太慢_Python 读取excel并转换为字典
  9. java-图像的几何变换
  10. 面试官:怎么解决MySQL中的死锁问题?
  11. [ ArcGIS for Server 10.1 系列 ] - 重新创建Site
  12. 【实践】腾讯PCG推荐系统应用实践(附PPT下载链接)
  13. Python编程手册系列 - 日历、日期、时间相关内建模块详解
  14. 爱普生L3153打印机如何清洗喷头
  15. 给 Android 开发者的 Gradle 入门指南
  16. 十分钟看懂时序数据库(I)-存储
  17. python表情换头_教你用Python制作表情包,实现换脸技术!
  18. [NodeBB]NodeBB论坛站点管理小结
  19. 保姆式学习,解决夜神模拟器ADB版本不一致问题
  20. Linux课程第十九天学习笔记

热门文章

  1. linux不重启换root密码是什么原因,在Linux下修改和重置root密码的方法(超简单)
  2. 某个元素的距离页面的左边距_在机检测圆心距
  3. 拿着5家offer的Java,对面试官做了什么?
  4. kotlin 添加第一个 集合_Flutter开发必学Dart语法篇之集合操作符函数与源码分析...
  5. H5 input输入限制最大位数,和调用小键盘需求发生冲突的解决办法
  6. JS_单个或多个文件上传_不支持单独修改
  7. 200行代码写一个简易的dva
  8. HTML5 参数传递
  9. 【SQL Server 学习系列】-- sql 随机生成中文名字
  10. 配置Ubuntu虚拟环境