Skip to content
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

Add optional track synchronization in cmaf muxer #101

Merged
merged 6 commits into from
Feb 19, 2024

Conversation

Qizot
Copy link
Member

@Qizot Qizot commented Feb 7, 2024

Introduction

This PR introduces a new mechanism to a CMAF muxer allowing to synchronize audio/video tracks but without muxing them together.

Problem

Protocols such as HLS/DASH allow audio/video tracks to be served separately but this requires them to have the same segment boundaries.

With the previous muxer's implementation to serve 2 separate tracks one needed 2 separate muxer instances. This solution had a problem, fluctuating video stream could cause desynchronization with audio track (segments could be created faster/slower causing a sequence numbers mismatch) as the synchronization was done purely through a target segment duration (unlike when muxing together, where the video is taken into account when assembling audio segment part).

Solution

This PR replaces the default static :output pad with a dynamic one and introduces a :tracks pad option that tells which input pads should be mixed together on the output. Specifying 2 different output pads will result in 2 separate tracks that should be synchronized with each other.

@Qizot Qizot requested a review from mat-hek as a code owner February 7, 2024 11:48
@Qizot Qizot force-pushed the cmaf-muxer-tracks-synchronization branch from 5d98c7a to 02ec1f4 Compare February 9, 2024 15:59
lib/membrane_mp4/muxer/cmaf.ex Outdated Show resolved Hide resolved
lib/membrane_mp4/muxer/cmaf.ex Outdated Show resolved Hide resolved
lib/membrane_mp4/muxer/cmaf.ex Outdated Show resolved Hide resolved
lib/membrane_mp4/muxer/cmaf.ex Outdated Show resolved Hide resolved
lib/membrane_mp4/muxer/cmaf.ex Outdated Show resolved Hide resolved
lib/membrane_mp4/muxer/cmaf.ex Outdated Show resolved Hide resolved
lib/membrane_mp4/muxer/cmaf.ex Outdated Show resolved Hide resolved
lib/membrane_mp4/muxer/cmaf.ex Outdated Show resolved Hide resolved
lib/membrane_mp4/muxer/cmaf/segment_helper.ex Show resolved Hide resolved
@Qizot Qizot requested a review from mat-hek February 14, 2024 09:00
lib/membrane_mp4/muxer/cmaf.ex Outdated Show resolved Hide resolved
lib/membrane_mp4/muxer/cmaf.ex Outdated Show resolved Hide resolved
@Qizot Qizot requested a review from mat-hek February 19, 2024 08:07
@Qizot Qizot merged commit 8b55570 into master Feb 19, 2024
3 checks passed
@Qizot Qizot deleted the cmaf-muxer-tracks-synchronization branch February 19, 2024 09:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants