alex

Results 25 issues of alex

RT, 那个分支有何不一样?看起来在事件循环有改动?应该使用master的还是这个分支的?

当使用拉流代理拉流的时候, resetWhenRePlay的作用其实很有限. 首先, 如果上游流断开了, 比如网络波动或者是拉取直播ts流, 特别是拉取ts流.一般都会每隔几分钟断开一次的, 因为当前读取数据上游下发并不是平滑的, 这点很容易验证, 比如使用ffmpeg输出一个ts流, 直接拉取. 所以当读取数据速度很快时, 上游没有新数据产生就会因为读取到0字节而断开. 但是其实这是不应该的, 因为流并不是正常终止, 后续还有数据的. 可是这时候就会重新拉流, 重建TsPlayer, 那么对应的HlsDemuxer也会析构, 而HlsDemuxer中是平滑处理流的, 最大缓存30秒. 这时候HlsDemuxer析构了, 那么就会丢失最大30秒的缓存流. 接下去会触发MpegMuxer::resetTracks() 写入一个空包后,会清空FrameMerger的cache, 这又会丢失一些packet. 这样操作虽然客户端是不会立即断开, 但是很大程度上会导致一些客户端没办法继续正常播放下去了. 直接使用ffmpeg的客户端还好, 卡住后会继续播放.但是有时会出现音画不同步. 如果是android系统,...

意见建议

今天部署了最新版的代码, 到现在8个小时, 已经崩溃了4次. dmesg日志 event poller 16[15269]: segfault at 200000009 ip 0000560be2957da0 sp 00007fe68f3fbb80 error 4 in media_server[560be25a6000+516000] root@lax:/opt/media# addr2line -e media_server 3b1da0 -f -a -p -C 0x00000000003b1da0: std::_Sp_counted_ptr_inplace::~_Sp_counted_ptr_inplace() at...

bug

如果服务器上负载流数量很多, 从日志根本就没办法分辨出来问题.特别是查找哪路拉流或者推送流出现问题时, 日志基本上帮助并不大. 能否按照流来区分日志?比如多个日志文件?或者是在日志中标识出来. 比如我遇到的 ``` 2021-12-24 19:39:49.015 W media_server[10643-event poller 0] TsMuxer.cpp:118 inputFrame | 必须提供adts头才能mpeg-ts打包 2021-12-24 19:39:49.015 W media_server[10643-event poller 0] TsMuxer.cpp:118 inputFrame | 必须提供adts头才能mpeg-ts打包 2021-12-24 19:39:49.096 W media_server[10643-event...

意见建议

我发现你推荐的EPG, 第一个收费的, 剩余的对咱们用处不大, 所以我这里贡献一个 https://epg.pm 大概上面2000来个频道的EPG吧, 页面下方有一个xmltv的接口, 每天更新一周节目预告.

``` if (0 == tsctx->sdt_period) { // SDT tsctx->sdt_period = dts; n = sdt_write(&tsctx->pat, tsctx->payload); r = mpeg_ts_write_section_header(ts, TS_PID_SDT, &tsctx->pat.cc /*fixme*/ , tsctx->payload, n); if (0 != r) return r;...

大佬, 昨天到今天出现了两次崩溃, 堆栈如下. 目前没办法定位到具体是什么流导致的崩溃. ``` ## crash date:2022-04-07 16:06:11 ## exe: media_server ## signal: 11 ## stack: [0]: ./media_server(+0x2d22d4) [0x55a0f53d52d4] ?? ??:0 [1]: /lib/x86_64-linux-gnu/libc.so.6(+0x3ef10) [0x7fd66f7bef10] ?? ??:0 [2]: ./media_server(pmt_read+0xa6) [0x55a0f566f6f6]...

因为没办法准确判断关键帧, 所以我尝试使用ffmpeg来解封装成AVPacket 然后在调用您的库写入hls或者mpeg_ts. 但是现在有一个很棘手的问题就是, 生成的文件播放时会花屏. 这个我觉得应该是dts的问题 ``` AVRational time_base = {1,90000}; pkt->dts = (AV_NOPTS_VALUE == pkt->dts ? pkt->pts : pkt->dts); pkt->pts = (AV_NOPTS_VALUE == pkt->pts ? pkt->dts : pkt->pts); pkt->dts...

当做拉取hls转ts流的时候, 如果遇到拉取hls分片超时, 那么最终输出的ts流, 在播放器里面就会卡住. 因为解码失败, 实际上就是这个问题https://github.com/ZLMediaKit/ZLMediaKit/issues/1348 能否增加一个接口, 判断输出的帧是否完整?如果不完整就可以选择丢弃.

../libflv/test/http-flv-live.cpp:217:68: error: invalid conversion from ‘void (*)(void*, const uint8_t*, int) {aka void (*)(void*, const unsigned char*, int)}’ to ‘void (*)(void*, const uint8_t*, size_t) {aka void (*)(void*, const unsigned char*, long...