Commit Graph

1893 Commits

Author SHA1 Message Date
xiongziliang
b4166d5cfe 修复startSendRtp接口发送ipv4 udp地址失败的bug: #1635 2022-05-14 17:14:38 +08:00
xiongziliang
f1555a5501 防止忽略shutdown事件 2022-05-13 23:54:04 +08:00
xiongziliang
3e869c1f1d 修复https 302 跳转http相关bug 2022-05-13 23:24:17 +08:00
xiongziliang
fdbfccb32e hls/http-ts播放器在消费完frame时再触发shutdown事件 2022-05-13 23:22:00 +08:00
xiongziliang
9e6ff0e798 优化头文件引用: #1627 2022-05-13 20:48:22 +08:00
WuPeng
5bc313bafe 增加长期保存hls切片的功能,segKeep=0为不长期保存,segKeep=1为长期保存。此功能部分等效于segNum=0的情况,不同的是这个保留不会在m3u8文件中体现。 2022-05-10 17:32:50 +08:00
ziyue
9861091b18 优先使用ipv4地址 2022-05-10 14:48:05 +08:00
ziyue
45494c020b bug fixed 2022-05-10 10:44:12 +08:00
ziyue
d037acbf62 完善ipv6支持 2022-05-08 17:06:10 +08:00
ziyue
a44334acaf 全面支持ipv6 2022-05-08 16:33:33 +08:00
xiongziliang
a95bf960e0 完善ipv6支持 2022-05-08 09:25:47 +08:00
xiongziliang
d66845425c 完善ipv6网络适配 2022-05-08 00:26:01 +08:00
ziyue
3062ea0e7c 初步支持ipv6: #576, #1406 2022-05-07 20:06:08 +08:00
ziyue
200a193c04 openRtpServer新增ssrc参数修改为追加至函数末尾, 确保代码逻辑一致无歧义: #1572 2022-04-28 17:44:35 +08:00
alexliyu7352
c1d2adebae
rtmp拉流的兼容性改进 (#1595)
* 修复play指令的bug

* 修改MSG_AGGREGATE的时间戳处理逻辑

这里参考了ffmpeg的方式来计算时间戳.

* add bom
2022-04-28 14:13:09 +08:00
xiongziliang
974055fd17 确保推流器主动断开时,不开启断连续推特性: #1559 2022-04-16 21:37:07 +08:00
wangcker
e712639e33
openrtpserver接口新增ssrc参数,强制过滤不属于本端口的视频流,以解决视频串流问题 (#1572) 2022-04-16 15:12:49 +08:00
xiongziliang
24472ee346 修复aac adts头大于7个字节时的兼容性问题 2022-04-16 14:13:55 +08:00
ziyue
5144b84ee7 添加bom头 2022-04-10 23:58:56 +08:00
alexliyu7352
f128b35b18
解决多pps问题
解决某些流因为多pps而导致不能播放的问题.
2022-04-10 23:43:44 +08:00
alexliyu7352
08de795220
Update H264.h 2022-04-10 23:38:42 +08:00
alexliyu7352
a0c1bc13cc
修复多次调用onShutdown的bug (#1552)
当HlsPlayer拉取索引失败后会触发PlayerProxy的重试机制.
但是这里就有一个bug会导致重试次数不准确.
因为HlsPlayer播放失败会调用onShutdown.
然后回调PlayerProxy.
之后如果触发重试, 那么在HlsPlayer析构的时候又会在调用一次onShutdown.
这时候是安全的, 因为_on_shutdown已经被置空.
但是如果重试时又再次失败, 那么首先会调用
onPlayResult
这时候在PlayerProxy中会再次触发重试, 紧接着HlsPlayer析构, 又会调用一次onShutdown, 那么就又会触发一次重试.

修复方法有很多, 最简单的就是直接在
onShutdown中判断如果没有_demuxer就不需要父类的onShutdown方法来释放资源与重连了.
因为针对HlsPlayer来说, 如果重试拉取索引没有成功, 应该没有什么资源需要在onShutdown方法中释放了.

当然更完善的修复应该是在PlayerProxy中增加相关的判断逻辑, 给rePlay一个状态.
确保rePlay执行完成前, 不再执行一次rePlay.

具体哪种方式, 大佬您可以看着办.
2022-04-10 19:09:16 +08:00
xiongziliang
a1b350c9f0 startSendRtp接口udp发送不指定端口时,从端口池获取端口 2022-04-09 10:33:27 +08:00
xiongziliang
a6e82799f5 openRtpServer接口新增re_use_port参数 2022-04-09 10:26:15 +08:00
xiongziliang
6073175e75 Merge branch 'master' of github.com:ZLMediaKit/ZLMediaKit 2022-04-09 10:23:33 +08:00
alexliyu7352
78d32702e2
修复由于识别不出关键帧而导致hls不能切片. (#1551)
2.修复由于丢弃sei帧导致ffplay不能正常播放
2022-04-09 10:22:41 +08:00
xiongziliang
6c0fea4c46 Merge branch 'master' of https://gitee.com/xia-chu/ZLMediaKit 2022-04-07 20:39:34 +08:00
alexliyu7352
75b17b3a6a
避免m3u8文件为chunked时崩溃 (#1543)
* Update HttpChunkedSplitter.h

* 避免m3u8文件为chunked时崩溃

具体问题见
https://github.com/ZLMediaKit/ZLMediaKit/issues/1407

当数据最后小于2个字节时, 应该放弃回调.
做个保险, 避免导致溢出后崩溃.

这个bug很难出现, 但是的确存在. 一些特殊的服务器采用chunked返回的m3u8文件解析时, 有可能会遇到.

* Update HttpChunkedSplitter.cpp

Co-authored-by: 夏楚 <771730766@qq.com>
2022-04-06 14:16:48 +08:00
alexliyu7352
e4262222f4
hls拉流时应该适当重试 (#1541)
* hls拉流时应该适当重试

hls拉取索引文件失败时, 不应该直接上报,而应该内部适当重试几次.
避免由于网络抖动造成的客户端播放不流畅.

* Update HlsPlayer.cpp
2022-04-05 19:49:22 +08:00
alexliyu7352
efc3e78ba0
使用emplace_back优化代码 (#1542)
少了一次构造调用,为什么不用呢?
2022-04-05 19:32:02 +08:00
xiongziliang
8da23da35c 添加utf-8 bom头 2022-04-03 18:38:07 +08:00
xiongziliang
2818e371b8 完善startSendRtp接口 2022-04-03 18:37:22 +08:00
xiongziliang
de0738b1d1 Merge branch 'feature/rawrtpsend' of github.com:ZLMediaKit/ZLMediaKit 2022-04-03 17:34:51 +08:00
alexliyu7352
a7476e436a
修复HlsPlayer播放器BUG
当拉取加密流时, 因为不能正常播放, 所以不会触发playresult.
因此一直不会回调api请求.
2022-04-01 20:59:58 +08:00
xgj
9d532cf16b fix startsendrtp pt error 2022-04-01 19:12:37 +08:00
xgj
61625f458f for webapi startsendrtp can send raw rtp 2022-04-01 18:28:09 +08:00
wendelong
97ea8090ad 修复HLS播放导致程序异常的BUG 2022-03-29 13:43:17 +08:00
xiongziliang
ae99662a3d 修复编译警告 2022-03-27 21:57:05 +08:00
Dw9
822a401f30
优化端口池范围限定逻辑 (#1508) 2022-03-26 10:15:18 +08:00
xiongziliang
a16b6cbc59 mp4切片逻辑提高对音视频交织性差的流的兼容性能 2022-03-20 14:52:15 +08:00
xiongziliang
b127d8c2a9 rtsp/GB28181随机端口,支持端口范围设置 2022-03-13 20:50:25 +08:00
xiongziliang
0f1120b8a6 on_publish hook新增多种选项 2022-03-12 14:34:48 +08:00
xiongziliang
1cf0a0cc20 bug fix 2022-03-12 14:02:12 +08:00
xiongziliang
4dc621e1bb 转协议选项抽象为ProtocolOption对象 2022-03-12 13:24:23 +08:00
xiongziliang
ed661b1cf1 修改无法删除hls目录的bug:#1485 2022-03-12 10:57:39 +08:00
xiongziliang
2d88115b3f 完善http直播url解析规则pr:#1467 2022-03-12 10:04:36 +08:00
xiongziliang
81c0635bf2 Merge branch 'add_schema_query_string' of github.com:mtdxc/ZLMediaKit 2022-03-12 09:53:07 +08:00
alexliyu7352
090593f67c
hls拉取索引文件避免循环重试 (#1474)
当hls拉取索引文件失败时会触发重试.
但是play失败会调用一次rePlay, OnShutdow又会调用一次的rePlay.
由于m3u8文件非常小, 很大可能上短时间马上就会重试成功.
但是由于有两次的rePlay所以很可能再次析构了player, 又循环触发了更多的rePlay.

所以在播放成功后, 应该取消掉定时器
2022-03-12 09:44:47 +08:00
alexliyu7352
4be3c349be
mpeg-ts解析丢弃不完整的包 (#1478)
* 丢弃不正确的包

因为网络抖动或者拉流超时导致ts包不全.
这里丢弃掉有问题的包, 避免客户端解码中断

* Update TSDecoder.cpp

* 格式化代码

Co-authored-by: 夏楚 <771730766@qq.com>
2022-03-12 09:41:15 +08:00
alexliyu7352
276f763c08
hls拉流动态计算切片超时时间 (#1477)
* 动态计算切片超时时间

设置最大超时时间倍数和最小倍数,然后根据上一个切片的下载情况动态增加或者减少切片的超时时间.

* Update HlsPlayer.cpp
2022-03-12 09:39:33 +08:00
alexliyu7352
b4241e12d5
hls拉流新增支持mime类型 (#1476)
一些流服务器输出mime头有可能时audio/x-mpegurl, 所以这点的判断不能写的太死了.
2022-03-12 09:36:28 +08:00
alexliyu7352
2c63916973
http-ts拉流新增支持mime类型(#1475)
ts切片有些mime头并不是只有这两种,
比如youtube的ts切片头就是application/octet-stream
2022-03-12 09:35:22 +08:00
cqm
4cfac989b3 支持?schema=rtmp/ts/fmp4格式 2022-03-03 19:45:47 +08:00
ziyue
d88fe077ed on_publish hook新增originType字段 2022-03-02 18:03:44 +08:00
ziyue
4af83cbe7c 修复ENABLE_MEM_DEBUG时编译失败的问题 2022-03-01 19:00:50 +08:00
xiongziliang
8324a9fe43 修复rtsp推流访问空指针的bug:#1456 2022-02-28 17:20:20 +08:00
xiongziliang
b82cd5a500 确保ntp时间戳获取失败时,webrtc rtp重传缓存列队长度正常 2022-02-27 01:02:54 +08:00
ziyue
b2bb37dc5c http: 修复32位系统下,下载3GB以上文件失败的问题: #1446 2022-02-23 17:03:13 +08:00
ziyue
4a7f5796ba 修复ts文件大于3GB时,获取文件大小异常的问题 2022-02-23 17:01:53 +08:00
ziyue
147ba6147c rtsp/rtp: 过滤干扰的rtp pt, 提高兼容性: #1445 2022-02-22 16:53:05 +08:00
ziyue
a15d59cf23 hls/ts播放器改成绝对时间戳:#1389 2022-02-22 11:45:41 +08:00
ziyue
cb00dbab0f 在track就绪前,强制split frame,防止sps pps未被获取到 2022-02-17 14:32:49 +08:00
ziyue
c997d11bd1 修复mp4点播时,sps pps太长导致获取失败的问题 2022-02-17 14:31:28 +08:00
xiongguangjie
9c45fca761
根据配置禁用mmap缓存 (#1429) 2022-02-17 10:35:10 +08:00
ziyue
304c898a3a 完善http文件获取相关代码 2022-02-16 16:58:13 +08:00
xiongziliang
45d9bcd5f4 ts解析失败时清空split缓存 2022-02-13 22:02:16 +08:00
xiongziliang
2e9d77e8e1 删除多余ts split代码 2022-02-13 21:53:21 +08:00
xiongziliang
83c1f29253 HLS: 解决hls断流重新生成后异常的bug 2022-02-13 21:06:32 +08:00
夏楚
e37982adee
优化hls媒体流注册与无人观看清理机制 (#1421)
* 优化hls媒体流注册与无人观看清理机制

* 优化hls cookie管理

* bug fixed
2022-02-12 16:24:55 +08:00
ziyue
a2b6344861 修复hls m3u8返回content-type异常的问题 2022-02-11 16:36:40 +08:00
ziyue
49fc17d7e0 hls m3u8文件直接通过内存读写 2022-02-11 16:21:19 +08:00
ziyue
642c9c075a 修复设置cookie错误的bug 2022-02-11 15:14:34 +08:00
ziyue
36f24527a4 http cookie减少互斥锁,优化性能 2022-02-11 14:33:11 +08:00
ziyue
c510f3765a 关闭小文件mmap预加载功能 2022-02-11 14:02:55 +08:00
ziyue
984715a018 修复获取共享mmap大小bug 2022-02-11 13:40:41 +08:00
ziyue
8188aa0d53 非必要不调用fopen 2022-02-11 13:10:56 +08:00
ziyue
3f6f26731a ts小文件先加载到内存 2022-02-11 12:49:03 +08:00
ziyue
96503967fc 屏蔽sendfile特性 2022-02-11 12:03:45 +08:00
ziyue
832c8d0d80 优化mktime性能问题 2022-02-11 11:54:12 +08:00
ziyue
d541ed2572 修复编译警告 2022-02-11 11:13:43 +08:00
ziyue
8338773767 hls/http-ts播放器新增性能测试模式 2022-02-11 11:11:30 +08:00
ziyue
91c0a563c3 确保mmap缓存记录表不膨胀 2022-02-10 21:23:50 +08:00
ziyue
dc672b14e3 确保32位系统支持超过4GB文件下载 2022-02-10 21:06:51 +08:00
ziyue
ba213346bc http文件服务器mmap方案采用共享方式 2022-02-10 20:57:23 +08:00
ziyue
72caa43c97 主动关闭的流不支持断流续推: #1401 2022-02-09 14:31:40 +08:00
ziyue
595182cebb Revert "当调用mk_media_source_close(ptr, 1);时,主动注销流 (#1401)"
This reverts commit c97aa8483e.
2022-02-09 14:21:35 +08:00
ziyue
81747d114e Merge branch 'master' of github.com:ZLMediaKit/ZLMediaKit 2022-02-09 11:48:51 +08:00
ziyue
cd1ca2c18c http-flv直播后缀由.flv改成.live.flv(目的是防止与flv文件下载冲突) 2022-02-09 11:48:15 +08:00
xiongziliang
8c30f11c17 修复windows下编译错误 2022-02-05 21:32:56 +08:00
xiongziliang
1dd3d6f1ac 忽略SIGPIPE信号 2022-02-05 20:39:24 +08:00
xiongziliang
0402646f7c 防止命名空间歧义 2022-02-05 01:01:29 +08:00
xiongziliang
4505f8ff4f 仅http协议开启sendfile优化 2022-02-05 01:00:48 +08:00
夏楚
d13e31c21b
尝试使用sendfile优化http文件服务器 (#1411) 2022-02-04 23:02:19 +08:00
夏楚
c72cf4cbcc
整理命名空间 (#1409)
* feat: remove using namespace mediakit in header files.

(cherry picked from commit d44aeb339a8a0e1f0455be82b21fe4b1b536299f)

* feat: remove using namespace mediakit in FFmpegSource.h

* feat: remove using namespace mediakit in RtpExt.h

* feat: remove using namespace mediakit in header files.

* feat: remove using namespace std in header files.

* feat: remove using namespace std in header files when zltoolkit remove std in header

* 补充命名空间

* 整理命名空间

* 整理命名空间2

* 修复macos ci

* 修复编译问题

* 修复编译问题2

* 修复编译问题3

Co-authored-by: Johnny <hellojinqiang@gmail.com>
Co-authored-by: Xiaofeng Wang <wasphin@gmail.com>
2022-02-02 20:34:50 +08:00
joshuafc
c97aa8483e
当调用mk_media_source_close(ptr, 1);时,主动注销流 (#1401)
* 当调用mk_media_source_close(ptr, 1);时,主动注销流

主动调用上述函数时,期望不再等待RtmpSession.cpp:49处getPoller()->doDelayTask(continue_push_ms, [push_src]() { return 0; });捕获的指针,等待析构时反注册,而是立即反注册。

* `MediaSource::close`逻辑执行成功后执行`unregist`
2022-01-27 14:56:18 +08:00
xiongziliang
3bf6ec8939 修复获取推流所有权导致引用计数紊乱的bug: #1397 2022-01-26 00:37:51 +08:00
ziyue
756ec1364b websocket客户端触发事件时确保对象强引用有效
同时修复websocket客户端判断alive返回false的bug
2022-01-25 11:44:51 +08:00
ziyue
4f27894302 添加bom头 2022-01-24 14:25:37 +08:00
ziyue
bc583e80b5 合并pr: #1391 2022-01-24 14:23:36 +08:00
ziyue
96061f1d36 Merge branch 'fix_rtc_g711_play' of github.com:ZLMediaKit/ZLMediaKit 2022-01-24 14:16:19 +08:00
xgj
341459fbf5 fix non rtc push rtc play g711 audio loss 2022-01-24 11:57:24 +08:00
ziyue
0ae9a8c8c8 Revert "添加递归溢出检测代码: #1363"
This reverts commit 8937d9ea92.
2022-01-24 11:38:36 +08:00
ziyue
80ecd2098e 修复编译警告 2022-01-24 10:48:15 +08:00
ziyue
100822f079 HLS: 修复时间戳回退导致不生成ts切片的bug: #1381, #1386 2022-01-21 18:00:44 +08:00
ziyue
3a8e954255 Merge branch 'master' of github.com:ZLMediaKit/ZLMediaKit 2022-01-21 16:11:22 +08:00
ziyue
5007578202 hls/ts 播放器不做content-length严格限制 2022-01-21 16:10:27 +08:00
xiongziliang
f46d909bba 添加bom头,解决msvc编译问题 2022-01-20 22:49:47 +08:00
ziyue
bf191aa902 去除多余头文件 2022-01-20 15:42:53 +08:00
ziyue
88dc8d0a73 重写http客户端异常处理机制 2022-01-20 15:17:19 +08:00
ziyue
0f905b7333 优化http-ts播放器日志提示 2022-01-19 22:53:21 +08:00
ziyue
ee6ad66a6d HTTP: 重写http相关超时管理机制 2022-01-19 22:50:44 +08:00
ziyue
81cf93a2bf openRtpServer接口强制关闭reuse_port属性,防止端口冲突 2022-01-19 17:44:58 +08:00
ziyue
8937d9ea92 添加递归溢出检测代码: #1363 2022-01-17 14:47:55 +08:00
wangcker
e8b0993493
给openrtpserver接口添加enable_reuse参数 (#1372)
* 修改rtpopen逻辑

* 给openrtpserver接口添加enable_reuse端口
2022-01-14 21:53:01 +08:00
JayChen0519
a3e628449e
解决rtsp以MULTICAST方式拉流导致的奔溃问题 (#1368) 2022-01-14 13:14:30 +08:00
ziyue
75465311d9 修复丢包导致aac确实导致内存越界的bug: #1363 2022-01-14 13:09:47 +08:00
ziyue
d52fc4c31f Refine: 优化rtsp相关代码 2022-01-12 15:24:28 +08:00
ziyue
5b6ff0af27 完善mingw编译环境的适配 2022-01-11 14:09:57 +08:00
ziyue
fdcc29e0ed 修复http客户端复用header无法更新的bug: #1349 2022-01-11 10:44:49 +08:00
xiongziliang
60f11df1ea Revert "修复302跳转时, 如果跨域,header不正确的问题 (#1349)"
This reverts commit 741b197f
2022-01-11 09:18:36 +08:00
ziyue
412d280cd7 修复断连续推转协议失效的bug 2022-01-10 17:34:39 +08:00
ziyue
1dabc22347 修正错误注释 2022-01-10 17:00:25 +08:00
ziyue
f5efd232a9 rtsp/rtmp推流支持断连续推: #1240, #1300 2022-01-10 16:43:57 +08:00
xiongziliang
262af8dfeb 修复编译问题 2022-01-09 15:12:23 +08:00
xiongziliang
7b04385bc8 合并http-ts播放器特性: #1336 2022-01-09 15:01:23 +08:00
xiongziliang
a4c69e61cd Merge branch 'patch2' of github.com:alexliyu7352/ZLMediaKit 2022-01-09 14:54:21 +08:00
Dw9
819599ac25
修复获取帧率逻辑 (#1293) 2022-01-09 14:50:54 +08:00
alexliyu7352
741b197f31
修复302跳转时, 如果跨域,header不正确的问题 (#1349) 2022-01-09 14:32:59 +08:00
xiongziliang
f4d8eb4515 Rtmp: 获取h264sps/aac config失败时打印rtmp包内容 2022-01-08 16:28:13 +08:00
xiongziliang
6e445614b4 申请udp端口使用全局互斥锁保护,防止端口重复分配 2022-01-08 16:07:08 +08:00
ziyue
fd6e4b6342 MPEG: 优化http-ts性能: #1342 2022-01-06 15:30:09 +08:00
ziyue
5a592e6db6 优化循环池性能 2022-01-06 14:30:44 +08:00
alexliyu7352
3a0857ea31
当url并不是m3u8文件时, 避免拉取hls流出错 (#1341) 2022-01-05 20:01:19 +08:00
ziyue
ed4291bf3d Merge branch 'master' of github.com:ZLMediaKit/ZLMediaKit 2022-01-04 16:54:51 +08:00
ziyue
3ccd48e7a9 HLS: 返回全部切片数据后,链接断开不报错: #1332 2022-01-04 16:53:19 +08:00
alexliyu7352
6f9f93cb97
忘记删除很早很早以前注释掉的代码了 2022-01-04 15:46:48 +08:00
Alex
4792f6213b 新增Ts拉流 2022-01-04 15:32:59 +08:00
alexliyu7352
a441168004
修正不使用resetWhenReplay选项时, MediaSource会重复注册的问题 (#1330) 2022-01-04 14:47:41 +08:00
ziyue
389dd5f54b MPEG: 优化ts/ps muxer内存malloc和拷贝性能 2021-12-31 11:01:56 +08:00
ziyue
c0afcc48e5 malloc大内存警告环境变量改名为MEM_WARN_SIZE 2021-12-31 10:26:36 +08:00
xiongziliang
9cf6fea03e 修复编译问题 2021-12-30 22:12:36 +08:00
ziyue
84f3aa0748 完善内存统计并在malloc大内存时打印backtrace 2021-12-30 20:34:56 +08:00
ziyue
7f6be9e118 Refine: 消除编译警告 2021-12-30 15:28:27 +08:00
ziyue
940fe333db 尝试解决全局malloc统计相关变量提前销毁的bug 2021-12-30 15:28:27 +08:00
ziyue
1a6a62a304 malloc确保内存对齐 2021-12-29 20:57:35 +08:00
夏楚
15297a3ca3
添加内存malloc次数分布统计 (#1322) 2021-12-29 20:48:15 +08:00
ziyue
098ecf542a 部分代码移至第三方库 2021-12-29 14:18:52 +08:00
ziyue
5ae5c66256 Typo: 修复拼写错误 2021-12-28 21:29:00 +08:00
ziyue
89870190e9 MPEG: 整合复用ts/ps生成代码 2021-12-28 21:21:01 +08:00
ziyue
dce6b27f4f Http-FLV: http-flv直播采用绝对时间戳并支持las 2021-12-28 21:21:01 +08:00