Repository navigation
Update Rtmp Library - #6
Open
daroltidan wants to merge 1402 commits into
Open
daroltidan wants to merge 1402 commits into
daroltidan wants to merge 1402 commits into
Conversation
pedroSG94
force-pushed
the
master
branch
2 times, most recently
from
November 7, 2025 08:32
d54eeb0 to
1af26b2
Compare
fix rtp multi nals packets
Feature/fix h265 rtp
Bumps `ktor` from 3.5.0 to 3.5.1. Updates `io.ktor:ktor-network` from 3.5.0 to 3.5.1 - [Release notes](https://github.com/ktorio/ktor/releases) - [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md) - [Commits](https://github.com/ktorio/ktor/commits) Updates `io.ktor:ktor-network-tls` from 3.5.0 to 3.5.1 - [Release notes](https://github.com/ktorio/ktor/releases) - [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md) - [Commits](https://github.com/ktorio/ktor/commits) --- updated-dependencies: - dependency-name: io.ktor:ktor-network dependency-version: 3.5.1 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: io.ktor:ktor-network-tls dependency-version: 3.5.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bump ktor from 3.5.0 to 3.5.1
* add whip module * creating whip client * testing post request * fix post request * add whip stun * adding srtp support * add srtcp support and fix calculate iv * fix compilation * update socket and add gathering * add write offer * read stun command correctly * finish read and write stuns * fix fingerprint crc32 * parse sdp answer * add stun connection flush * fixing integrity attribute * finish gathering stun candidates * request finally working * stun connection finished * adding dtls handshake * update java socket * doing dtls connection * dtls handshake worked * fix conexion * connection working * remove unnecessary files * fix connection * create send whip * extract crypto provisional * send packets working * remove unused files * stream audio working * fix whip only video * refactoring * update readme * fix send video info on rtp keyframes * refactor rtp sockets * fix app example
Bumps `agp` from 9.3.1 to 9.3.2. Updates `com.android.application` from 9.3.1 to 9.3.2 Updates `com.android.library` from 9.3.1 to 9.3.2 --- updated-dependencies: - dependency-name: com.android.application dependency-version: 9.3.2 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: com.android.library dependency-version: 9.3.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.6.1 to 9.7.1. - [Release notes](https://github.com/gradle/gradle/releases) - [Commits](gradle/gradle@v9.6.1...v9.7.1) --- updated-dependencies: - dependency-name: gradle-wrapper dependency-version: 9.7.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
fixing bitratemanager
Bump agp from 9.3.1 to 9.3.2
…per-9.7.1 Bump gradle-wrapper from 9.6.1 to 9.7.1
update docs
With TCP backpressure (server ACKs not arriving, send window full) the sender blocks in a java.io socket write, which ignores coroutine cancellation. disconnect() stopped the sender first (BaseSender.stop -> job.cancelAndJoin) and closed the socket only afterwards, so the join waited until the network recovered or TCP gave up. A reConnect hung for the whole time. Try a cooperative stop first (keeps the graceful close in the normal case) and, if the sender does not stop within 1 s, close the socket to unblock the write and stop again. RTSP over TCP (interleaved) writes to the same socket and has the same issue. SRT/UDP are not affected (UDP sends do not block on ACKs).
SrtSender does not wait for ACKs and handleServerPackets swallows receive
timeouts, so a silent path (NAT rebind, black hole, frozen server) is never
reported: the stream keeps sending into the void. setServerSilenceTimeout(ms)
reports onConnectionFailed("No response from server") when no packet from
the server arrived for the given time. Disabled by default (0).
…g or paused Co-authored-by: Cursor <cursoragent@cursor.com>
…oders-while-record-starting keep encoders running in stopStream while a recording is starting or paused
…nce-timeout srt: optional server silence timeout to detect a dead path
Avoid stuck disconnect
Receivers with periodic NAK reports (e.g. gosrt) report every missing packet again on each NAK interval (20 ms minimum). reSendPackets resent all reported packets unconditionally, so under a bottleneck one lost packet could be sent up to latency / 20 ms times and loss amplified itself. - Token bucket for retransmissions: 25 % of the measured media rate by default (libsrt SRTO_OHEADBW), burst of up to 0.5 s of media. - Resend oldest first; stop resending once the budget is exhausted. - Skip packets that cannot arrive before their latency expires and already retransmitted packets reported again within max(rtt + 4 * rttVariance, 20 ms). - setRetransmitOverhead(percent), <= 0 restores the unlimited behavior. - packetsLostUnique counts each lost sequence number once. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
MediaCodec emits the audio codec config (for AAC the AudioSpecificConfig) as its first output buffer, flagged with BUFFER_FLAG_CODEC_CONFIG. AudioEncoder.checkBuffer only validated the timestamp, so that buffer was forwarded like a regular frame: senders transmitted it as a tiny bogus AAC frame and AndroidMuxerRecordController wrote it into the recording as a sample. The resulting MP4 files start with a 2-byte audio sample that is identical to the track extradata. FFmpeg and VLC skip it, but Chrome aborts playback of the whole file with PIPELINE_ERROR_DECODE. Dropping the buffer is safe because the configuration is derived independently on every path: RTMP builds the AudioSpecificConfig in AacPacket.sendAudioInfo from sample rate and channel count, RTSP signals it through the SDP body, and the muxer takes it from the MediaFormat passed to setAudioFormat, which already carries csd-0. This mirrors how VideoEncoder keeps SPS/PPS out of the frame path.
…ssions srt: limit retransmissions to avoid a NAK-driven retransmit storm
…-buffer Do not forward the audio codec config buffer as an encoded frame
Refactoring srt commands
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
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.
No description provided.