Commit Graph

490 Commits

Author SHA1 Message Date
Per-Arne Andersen 350e262433
Added support for GCC 13 (#2452)
GCC Does not explicitly include stdint. This update includes them where needed.
A very minor change that would allow GCC13 and above to compile
correctly. In newer versions, cstdint is not implicitly included, hence
it errors out during compilation for some files.
2023-05-11 09:58:48 +08:00
alexliyu7352 9a9040ecda
Merge pull request #2428 from alexliyu7352/patch-56
避免服务器端返回content-length=0时,TsPlayer不能正确释放的问题
2023-04-28 23:46:22 +08:00
xia-chu 8c049d4e28 实现whip/whep delete相关功能
通过whip/whep 回复http头中的Location url进行删除资源
新增delete token随机数实现删除鉴权
2023-04-28 22:36:58 +08:00
xia-chu d2349f01bd 使用static_pointer_cast优化性能 2023-04-28 22:04:38 +08:00
xia-chu cdf97e7605 更新zltoolkit,适配最新代码 2023-04-28 22:04:09 +08:00
Alex b3d4188fde 避免服务器端返回content-length=0时,TsPlayer不能正确释放的问题 2023-04-28 01:33:17 +08:00
xiongziliang c8a20f85f6 直接打印SockException类 2023-04-23 00:10:18 +08:00
xiongziliang de8249592e Session类构造析构跟踪日志统一在底层网络框架打印 2023-04-22 23:58:17 +08:00
xiongziliang 7a95c87a29 优化代码
空构造和析构函数替换为缺省
去除多余分号
2023-04-22 21:59:26 +08:00
夏楚 599208dd6a
修复全局变量构造先后顺序导致启动崩溃的问题 2023-04-06 16:16:28 +08:00
alexliyu7352 7fcd88d02a
避免hls拉流时m3u8文件出现问题或直播结束后,无限重试 (#2357)
Co-authored-by: xiongziliang <771730766@qq.com>
2023-04-05 20:36:44 +08:00
mtdxc 98ec6b68d9
HttpRequester支持失败重试功能(#2323) 2023-03-23 14:46:45 +08:00
baiyfcu 950f33bd3f 新增windows中_M_ARM64 _M_ARM _M_X64 CPU指定集识别 2023-03-17 02:04:00 +08:00
baiyfcu a754a22680 修复在WINDOWS上cpu类型无法判断BUG 2023-03-17 01:31:56 +08:00
xia-chu b9fa5f9b5e 实例汇报时间改成60分钟一次
同时新增程序启动日期、是否开启编译ffmpeg选项
2023-03-13 20:29:18 +08:00
xia-chu 96e1cf8146 优化cpu类型判断宏 2023-03-12 18:45:37 +08:00
xia-chu 843e3423cf 新增实例上报功能: #2294 2023-03-12 00:14:22 +08:00
mtdxc 15dc854e94
修复http multi form上传文件名相关bug(#2293) 2023-03-11 21:08:39 +08:00
xia-chu 1bab0b8e31 修复WebSocket线程安全问题,同时新增内置客户端、服务端心跳机制。 2023-03-11 11:08:14 +08:00
baiyfcu a5c3db4ee1 修复逻辑判断不严禁XSS攻击,server在windows debug运行时拒绝服务攻击:#2213 2023-03-03 14:44:59 +08:00
alexliyu7352 2f8dab66c5
http地址支持相对路径 (#2223)
* 部分hls中会出现类似[../]或者[./]的相对地址, 因此写了一个解析的方法

* 有时候上游http协议不规范会导致直接输出eof, 特别是在自动重试机制开启下, 容易造成定时器没办法初始化从而拉不到流但是session一直存在,所以需要做一个判断,如果没数据直接报错
2023-02-20 10:52:00 +08:00
老衲不出家 f05a9501fa
Unified code style (#2137) 2022-12-02 14:43:06 +08:00
mtdxc 754073918a
Header refactor (#2115)
* 优化MultiMediaSourceMuxer头文件包含

* 将MediaSinkDelegate和Demux移到MediaSink中

* MediaSource头文件重构, 独立出PacketCache.h
精简Frame和Track的头文件

* Rtmp头文件重构

* Rtsp头文件重构

* webrtc头文件重构

* 规范.h头文件包含,并将其移到.cpp中:
- 尽量不包含Common\config.h
- Util\File.h
- Rtsp/RtspPlayer.h
- Rtmp/RtmpPlayer.h

* 删除多余的Stamp.h和Base64包含
2022-11-29 11:07:13 +08:00
ziyue 68948288e0 TcpSession/UdpSession统一为Session类 2022-11-19 09:33:10 +08:00
ziyue 918b1fce6c 修复hls/ts拉流崩溃问题:#2057 2022-10-30 23:50:20 +08:00
xiongziliang 80eb6dc402 协议解析最大支持4MB分包: #2026 2022-10-29 22:57:32 +08:00
ziyue ff6e9f4fc7 修复流注销时,hls无法播完最后一个切片的问题: #1955 2022-10-18 19:23:20 +08:00
ziyue ac1abb34da 新增媒体流flush机制:#1996 2022-10-16 19:54:17 +08:00
夏楚 4a35ddbddb
Merge pull request #1942 from mtdxc/reduce_code
简化代码
2022-09-09 11:10:55 +08:00
cqm 999e0b274e 简化代码:
- MediaSource引入shortUrl和getUrl来简化日志输出
- WebApi引入fillSockInfo
2022-09-07 11:47:15 +08:00
WuPeng f765e5365b 修正在指定配置文件forwarded_ip_header的值后,无法获取不通过代理播放的客户端IP。 2022-09-06 21:13:11 +08:00
custompal 0d6509ce03 统一部分变量名和代码样式风格 2022-08-30 21:24:25 +08:00
custompal 04aa3ef41f 增加获取媒体流播放器列表功能 2022-08-30 21:05:19 +08:00
ziyue 795b4dbbd3 修复http文件服务器对特殊字符文件不兼容的bug:#1866 2022-08-10 10:37:49 +08:00
ziyue 35791aac89 优化代码,去除编译警告,修复拼写错误 2022-08-08 17:36:07 +08:00
xiongziliang d30869d0c9 支持获取http反向代理真实客户端ip: #1388 2022-06-18 22:10:46 +08:00
xiongziliang 6291ee704c http文件服务器修复访问安全漏洞 2022-06-18 21:44:16 +08:00
xiongziliang 7f98f9a750 删除重复的获取gmt offset相关代码 2022-06-18 13:27:23 +08:00
taojishou 59dcd03b70
修改hls拉流后closestream崩溃的bug (#1678)
* 修改hls拉流后closestream崩溃的bug

Co-authored-by: 夏楚 <771730766@qq.com>
2022-06-01 13:05:49 +08:00
ziyue c7d7999f53 兼容gcc4.8编译器 2022-05-18 20:07:54 +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
ziyue a44334acaf 全面支持ipv6 2022-05-08 16:33:33 +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
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
wendelong 97ea8090ad 修复HLS播放导致程序异常的BUG 2022-03-29 13:43:17 +08:00
xiongziliang ae99662a3d 修复编译警告 2022-03-27 21:57:05 +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 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 b2bb37dc5c http: 修复32位系统下,下载3GB以上文件失败的问题: #1446 2022-02-23 17:03:13 +08:00
ziyue a15d59cf23 hls/ts播放器改成绝对时间戳:#1389 2022-02-22 11:45:41 +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 2e9d77e8e1 删除多余ts split代码 2022-02-13 21:53:21 +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 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 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
ziyue 756ec1364b websocket客户端触发事件时确保对象强引用有效
同时修复websocket客户端判断alive返回false的bug
2022-01-25 11:44:51 +08:00
ziyue 80ecd2098e 修复编译警告 2022-01-24 10:48:15 +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 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
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
alexliyu7352 741b197f31
修复302跳转时, 如果跨域,header不正确的问题 (#1349) 2022-01-09 14:32:59 +08:00
ziyue 5a592e6db6 优化循环池性能 2022-01-06 14:30:44 +08:00