-
Notifications
You must be signed in to change notification settings - Fork 0
Port opensight changes from v4.0 to v6.0 #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
hyt-hz
wants to merge
54
commits into
opensight-v6.0
Choose a base branch
from
port-opensight-changes-from-srs4.0
base: opensight-v6.0
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…3923) --------- Co-authored-by: chundonglinlin <chundonglinlin@163.com>
…lisher. v5.0.207 v6.0.111 (ossrs#3925) For WebRTC: when player before publisher, it will happen track pt didn't change. - At source change step, change track pt --------- Co-authored-by: mingche.tsai <w41203208.work@gmail.com> Co-authored-by: john <hondaxiao@tencent.com>
HLS typically has a delay of around 30 seconds, roughly comprising three segments, each lasting 10 seconds. We can reduce the delay to about 5 seconds by lowering the segment duration to 2 seconds and starting playback from the last segment, achieving a stable delay. Of course, this requires setting the OBS's GOP to 1 second, and the profile to baseline, preset to fast, and tune to zerolatency. Additionally, updating a few configurations in the hls.js player is necessary, such as setting it to start playback from the last segment, setting the maximum buffer, and initiating accelerated playback to reduce latency. --------- Co-authored-by: chundonglinlin <chundonglinlin@163.com> Co-authored-by: john <hondaxiao@tencent.com>
…rs#3920) 1. When converting RTC to RTMP, it is necessary to synchronize the audio and video timestamps. When the synchronization status changes, whether it is unsynchronized or synchronized, print logs to facilitate troubleshooting of such issues. 2. Chrome uses the STAP-A packet, which means a single RTP packet contains SPS/PPS information. OBS WHIP, on the other hand, sends SPS and PPS in separate RTP packets. Therefore, SPS and PPS are in two independent RTP packets, and SRS needs to cache these two packets. --------- Co-authored-by: john <hondaxiao@tencent.com>
…us. v5.0.209 v6.0.115 (ossrs#3990) See ossrs#2424 --------- Co-authored-by: john <hondaxiao@tencent.com>
--------- Co-authored-by: john <hondaxiao@tencent.com>
When debugging the RTMP protocol, we can capture packets using tcpdump and then replay the pcap file. For example: ```bash cd ~/git/srs/trunk/3rdparty/srs-bench/pcap tcpdump -i any -w t.pcap tcp port 1935 go run . -f ./t.pcap -s 127.0.0.1:1935 ``` However, sometimes due to poor network conditions between the server and the client, there may be many retransmitted packets. In such cases, setting up a transparent TCP proxy that listens on port 1935 and forwards to port 19350 can be a solution: ```bash ./objs/srs -c conf/origin.conf cd 3rdparty/srs-bench/tcpproxy/ && go run main.go tcpdump -i any -w t.pcap tcp port 19350 ``` This approach allows for the implementation of packet dumping, multipoint replication, or the provision of detailed timestamps and byte information at the proxy. It enables the collection of debugging information without the need to modify the server. --------- `TRANS_BY_GPT4` --------- Co-authored-by: john <hondaxiao@tencent.com>
ossrs#3989) 1. `trunk/research/st/exceptions.cpp` About exceptions with ST, works well on linux and mac, not work on cygwin. 2. `trunk/research/st/pthreads.cpp` About pthreads with ST, works well on all platforms. 3. `trunk/research/st/hello.cpp` Hello world, without ST, works well on all platforms. 4. `trunk/research/st/hello-world.cpp` Hello world, with ST, works well on all platforms. 5. `trunk/research/st/hello-st.cpp` A very simple version for hello world with ST, works well on all platforms.
…ossrs#4005) 1. fix src/main/srs_main_ingest_hls.cpp compiling error; 2. fix src/main/srs_main_mp4_parser.cpp compiling error; 3. remove empty target srs_ingest_hls; --------- Co-authored-by: winlin <winlinvip@gmail.com>
…rs#3995) ossrs#3983 already fixed the `test` workflow, but I think the `release` will have same issue. --------- Co-authored-by: winlin <winlinvip@gmail.com>
* Filter JSONP callback function name. v5.0.210,v6.0.121 * Add utest. * Refine utest
…22 (ossrs#4033) Fix ossrs#3967 There is an API `SSL_use_certificate_chain_file`, which can load the certification chain and also single certificate. --------- Co-authored-by: winlin <winlinvip@gmail.com>
…6.0.123 (ossrs#4038) Fix ossrs#4037 SRS should not send the publish start message `onStatus(NetStream.Publish.Start)` if hooks fail, which causes OBS to repeatedly reconnect. Note that this fix does not send an RTMP error message when publishing fails, because neither OBS nor FFmpeg process this specific error message; they only display a general error. Apart from the order of messages, nothing else has been changed. Previously, we sent the publish start message `onStatus(NetStream.Publish.Start)` before the HTTP hook `on_publish`; now, we have modified it to send this message after the HTTP hook.
Correct SRS_ERRNO_MAP_HTTP duplicate error code 4054 and 4055. --------- Co-authored-by: winlin <winlinvip@gmail.com>
…4057) try to fix ossrs#4052. --------- Co-authored-by: winlin <winlinvip@gmail.com>
The object relations:  Session manages SIP and Media object using shared resource or shared ptr. Note that I actually use SrsExecutorCoroutine to delete the object when each coroutine is done, because there is always a dedicate coroutine for each object. For SIP and Media object, they directly use the session by raw pointer, it's safe because session always live longer than session and media object. --- Co-authored-by: Jacob Su <suzp1984@gmail.com>
--- Co-authored-by: Haibo Chen <495810242@qq.com>
Fix issue ossrs#3784 --- Co-authored-by: Jacob Su <suzp1984@gmail.com>
--------- Co-authored-by: Haibo Chen <495810242@qq.com>
Try to fix two blackbox test: 1. TestSlow_SrtPublish_HttpTsPlay_HEVC_Basic: fixed by enlarge the wait time from 3 seconds to 4 before run ffprobe task, which will record the stream by ffmpeg first. 2 TestSlow_SrtPublish_HlsPlay_HEVC_Basic: fixed by wait 16 seconds before run ffprobe task. About the 2 case: it seems ridiculous to add 16 seconds delay before run ffprobe task. > So, I start ossrs#4088 to check the github action workflow process, I start this branch from a very earlier version `6.0.113 (srs/core/srs_core_version6.hpp)`, what I found it that, inside `SRS blackbox-test`, the srs version `6.0.128`, the latest version, was printed. That's really wired. I confirmed this is not the SRS source code's problem, check https://github.com/suzp1984/srs/actions/runs/9511600525/job/26218025559 the srs code 6.0.113 was checkout and running actions based on them, still met same problem. --------- Co-authored-by: winlin <winlinvip@gmail.com>
Detail change log: 1. [Simple,Refactor] Remove member fields of http entry, etc. ossrs@e34b3d3 2. [Ignore] Rename source to live_source. ossrs@846f95e 3. [Ignore] Use directly ptr in consumer. ossrs@d38af02 4. [Complex, Important] Use shared ptr for live source. ossrs@88f9224 The object relationship:  --- Co-authored-by: Jacob Su <suzp1984@gmail.com>
…4097) 1. Add live benchmark support in srs-bench, which only connects and disconnects without any media transport, to test source creation and disposal and verify source memory leaks. 2. SmartPtr: Support cleanup of HTTP-FLV stream. Unregister the HTTP-FLV handler for the pattern and clean up the objects and resources. 3. Support benchmarking RTMP/SRT with srs-bench by integrating the gosrt and oryx RTMP libraries. 4. Refine SRT and RTC sources by using a timer to clean up the sources, following the same strategy as the Live source. --------- Co-authored-by: Haibo Chen <495810242@qq.com> Co-authored-by: Jacob Su <suzp1984@gmail.com>
1. fix redundant null check, there is no potential risks by the way, just redundant null check. 2. Potential use pointer after free, that's not true. So we can ignore this one, or find a way to make stupid security tool happy. --------- Co-authored-by: winlin <winlinvip@gmail.com>
1. Support detect memory leak by valgrind. 2. Free the http handler entry. 3. Free the stack of ST. --- Co-authored-by: Jacob Su <suzp1984@gmail.com>
1. misspelling fix; 2. remove finished TODO; --------- Co-authored-by: Haibo Chen <495810242@qq.com>
--------- Co-authored-by: john <hondaxiao@tencent.com>
make sure one directive token don't span more than two lines. try to fix ossrs#2228 --------- Co-authored-by: winlin <winlinvip@gmail.com>
…rs#4109) To manage an object: ```cpp // Before MyClass* ptr = new MyClass(); SrsAutoFree(MyClass, ptr); ptr->do_something(); // Now SrsUniquePtr<MyClass> ptr(new MyClass()); ptr->do_something(); ``` To manage an array of objects: ```cpp // Before char* ptr = new char[10]; SrsAutoFreeA(char, ptr); ptr[0] = 0xf; // Now SrsUniquePtr<char[]> ptr(new char[10]); ptr[0] = 0xf; ``` In fact, SrsUniquePtr is a limited subset of SrsAutoFree, mainly managing pointers and arrays. SrsUniquePtr is better than SrsAutoFree because it has the same API to standard unique ptr. ```cpp SrsUniquePtr<MyClass> ptr(new MyClass()); ptr->do_something(); MyClass* p = ptr.get(); ``` SrsAutoFree actually uses a pointer to a pointer, so it can be set to NULL, allowing the pointer's value to be changed later (this usage is different from SrsUniquePtr). ```cpp // OK to free ptr correctly. MyClass* ptr; SrsAutoFree(MyClass, ptr); ptr = new MyClass(); // Crash because ptr is an invalid pointer. MyClass* ptr; SrsUniquePtr<MyClass> ptr(ptr); ptr = new MyClass(); ``` Additionally, SrsAutoFreeH can use specific release functions, which SrsUniquePtr does not support. --------- Co-authored-by: Jacob Su <suzp1984@gmail.com>
Co-authored-by: winlin <winlinvip@gmail.com>
## Cause dash auto dispose is configured by seconds, but the code compare by usecond, 1 second = 1,000,000 useconds. releated to ossrs#4097 Bug introduced after ossrs#4097 supported Dash auto dispose after a timeout without media data. ## How to reproduce 1. `./objs/srs -c conf/dash.conf` 2. publish a rtmp stream. 3. play dash stream. -> no dash stream, always 404 error. --------- Co-authored-by: winlin <winlinvip@gmail.com>
…ssrs#4126) 1. Should always stop coroutine before close fd, see ossrs#511, ossrs#1784 2. When edge forwarder coroutine quit, always set the error code. 3. Do not unpublish if invalid state. --------- Co-authored-by: Jacob Su <suzp1984@gmail.com>
….140 (ossrs#4116) This not only silences a deprecation warning by docker build, but also makes it consistent as the other ENV statement already uses the new syntax. --------- Co-authored-by: winlin <winlinvip@gmail.com>
…4063) ## Describe ## http_remux feature support config `has_audio`, `has_video` & `guess_has_av` prop. https://github.com/ossrs/srs/blob/282d94d7bbfa127868caab401bb7616e26d4c54d/trunk/src/app/srs_app_http_stream.cpp#L630-L632 Take `http_flv` as example, `srs` can accept both RTMP streams with only audio, only video or both audio and video streams. It is controlled by above three properties. But `guess_has_av` is not implemented by `http_ts`. The problem is that if I want publish a RTMP stream with audio or video track, the `has_audio` and `has_video`, which are default true/on, must to be config to match the RTMP stream, otherwise the `mpegts.js` player can't play the `http-ts` stream. ## How to reproduce ## 1. `export SRS_VHOST_HTTP_REMUX_HAS_AUDIO=on; export SRS_VHOST_HTTP_REMUX_HAS_VIDEO=on; export SRS_VHOST_HTTP_REMUX_GUESS_HAS_AV=on; ./objs/srs -c conf/http.ts.live.conf` 2. publish rtmp stream without video: `ffmpeg -re -stream_loop -1 -i srs/trunk/doc/source.200kbps.768x320.flv -vn -acodec copy -f flv rtmp://localhost/live/livestream` 3. open chrome browser, open `http://localhost:8080/players/srs_player.html?schema=http`, go to `LivePlayer`, input URL: `http://localhost:8080/live/livestream.ts`, click play. 4. the `http://localhost:8080/live/livestream.ts` can not play. ## Solution ## Let `http-ts` support `guess_has_av`, `http-flv` already supported. The `guess_has_av` default value is ture/on, so the `http-ts|flv` can play any streams with audio, video or both. --------- Co-authored-by: Winlin <winlinvip@gmail.com>
…#4029) the html img tag occupy 20px size in safari. https://github.com/ossrs/srs/blob/427104f1dab86f5afc7d7b49b02ed27d03ef9346/trunk/research/players/rtc_player.html#L19 > <img width="1011" alt="Screenshot 2024-04-17 at 9 17 07 AM" src="https://github.com/ossrs/srs/assets/2757043/79a4edf8-5bbf-4300-8817-039088f13283"> (ignore the img css warning: `auto\9;` it's another problem, I will file another PR.) but, the empty img tag just occupy 1px size in chrome. So I guess it's a html compatible problem. > <img width="608" alt="Screenshot 2024-04-17 at 9 46 33 AM" src="https://github.com/ossrs/srs/assets/2757043/40cb2eb6-3a6d-4bb7-9b17-51c5fd6d2272"> --------- `TRANS_BY_GPT4` --------- Co-authored-by: winlin <winlinvip@gmail.com>
…4115) The session HLS manifest file lacks a terminating newline in the final line. This may cause strict players to reject it. --------- Co-authored-by: winlin <winlinvip@gmail.com>
For ossrs#3369 to support an external powerful SIP server, do not use the embedded SIP server of SRS. For more information, detailed steps, system architecture, and background explanation, please see https://ossrs.net/lts/zh-cn/docs/v6/doc/gb28181#external-sip --------- Co-authored-by: Jacob Su <suzp1984@gmail.com> Co-authored-by: winlin <winlinvip@gmail.com>
…ossrs#4127) Currently only libx264 ffmpeg encoder is supported. This pull request add also h264_qsv. But maybe a more generic solution with oder encoders would be useful to. --------- Co-authored-by: winlin <winlinvip@gmail.com>
…t-changes-from-srs4.0
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
close #2
To build: