[package]
edition = "2024"
rust-version = "1.95.0"
name = "transmux"
version = "0.24.0"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Any-to-any media container muxing hub: demux TS, fMP4/CMAF, MPEG-PS, WebM, FLV, or RTMP into one neutral IR and mux to CMAF/fMP4, progressive MP4, TS, DASH, low-latency DASH, HLS, low-latency HLS, Smooth Streaming, or RTMP. CENC/CBCS encrypt+decrypt, SSAI splice, RTP/RTCP, and an fMP4/CMAF conformance validator; parses codec config headers only, samples stay opaque. no_std + alloc."
readme = "README.md"
keywords = [
"cmaf",
"fmp4",
"isobmff",
"hls",
"remux",
]
categories = [
"multimedia::video",
"parser-implementations",
"no-std",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/fishloa/rust-broadcast"
resolver = "2"
[package.metadata.docs.rs]
all-features = true
[features]
cenc = [
"dep:aes",
"dep:ctr",
"dep:cbc",
]
cli = [
"dep:clap",
"std",
]
default = [
"std",
"serde",
"cenc",
]
sample-aes = [
"cenc",
"cbc/alloc",
"cbc/block-padding",
]
serde = [
"dep:serde",
"broadcast-common/serde",
"broadcast-hls/serde",
"mpeg-ts/serde",
"mpeg-pes/serde",
"mpeg-ps/serde",
"rtcp-packet/serde",
]
std = [
"broadcast-common/std",
"thiserror/std",
"serde?/std",
"broadcast-hls/std",
"mp4-emsg/std",
"mpeg-ts/std",
"mpeg-pes/std",
"mpeg-ps/std",
"rtp-packet/std",
"rtcp-packet/std",
]
[lib]
name = "transmux"
path = "src/lib.rs"
[[bin]]
name = "transmux"
path = "src/main.rs"
required-features = ["cli"]
[[example]]
name = "cenc_encrypt"
path = "examples/cenc_encrypt.rs"
[[example]]
name = "ssai_ad_stitch"
path = "examples/ssai_ad_stitch.rs"
[[example]]
name = "transmux_any_to_any"
path = "examples/transmux_any_to_any.rs"
[[example]]
name = "transmux_hub"
path = "examples/transmux_hub.rs"
[[test]]
name = "absolute_timing"
path = "tests/absolute_timing.rs"
[[test]]
name = "alloc_measurement"
path = "tests/alloc_measurement.rs"
[[test]]
name = "any_stream"
path = "tests/any_stream.rs"
[[test]]
name = "avc_hvc_config"
path = "tests/avc_hvc_config.rs"
[[test]]
name = "captions"
path = "tests/captions.rs"
[[test]]
name = "cenc"
path = "tests/cenc.rs"
[[test]]
name = "cenc_decrypt"
path = "tests/cenc_decrypt.rs"
[[test]]
name = "cenc_encrypt"
path = "tests/cenc_encrypt.rs"
[[test]]
name = "cenc_encrypt_e2e"
path = "tests/cenc_encrypt_e2e.rs"
[[test]]
name = "cenc_fragmented_fixture"
path = "tests/cenc_fragmented_fixture.rs"
[[test]]
name = "cenc_mux"
path = "tests/cenc_mux.rs"
[[test]]
name = "cenc_senc_alloc_bound"
path = "tests/cenc_senc_alloc_bound.rs"
[[test]]
name = "cli"
path = "tests/cli.rs"
[[test]]
name = "codec_config"
path = "tests/codec_config.rs"
[[test]]
name = "codec_config_boxes"
path = "tests/codec_config_boxes.rs"
[[test]]
name = "codec_tail"
path = "tests/codec_tail.rs"
[[test]]
name = "codecs_new"
path = "tests/codecs_new.rs"
[[test]]
name = "dash"
path = "tests/dash.rs"
[[test]]
name = "dash_mpd"
path = "tests/dash_mpd.rs"
[[test]]
name = "dash_parse"
path = "tests/dash_parse.rs"
[[test]]
name = "demux_timing_invariant"
path = "tests/demux_timing_invariant.rs"
[[test]]
name = "dolby"
path = "tests/dolby.rs"
[[test]]
name = "drm_pssh"
path = "tests/drm_pssh.rs"
[[test]]
name = "dts"
path = "tests/dts.rs"
[[test]]
name = "dts_ts"
path = "tests/dts_ts.rs"
[[test]]
name = "es_info_passthrough"
path = "tests/es_info_passthrough.rs"
[[test]]
name = "esds_config"
path = "tests/esds_config.rs"
[[test]]
name = "ffmpeg_oracle"
path = "tests/ffmpeg_oracle.rs"
[[test]]
name = "flv"
path = "tests/flv.rs"
[[test]]
name = "flv_stream"
path = "tests/flv_stream.rs"
[[test]]
name = "golden_gate"
path = "tests/golden_gate.rs"
[[test]]
name = "hevc_sps"
path = "tests/hevc_sps.rs"
[[test]]
name = "hls_discontinuity"
path = "tests/hls_discontinuity.rs"
[[test]]
name = "hub"
path = "tests/hub.rs"
[[test]]
name = "init_segment"
path = "tests/init_segment.rs"
[[test]]
name = "ir_timing"
path = "tests/ir_timing.rs"
[[test]]
name = "issue_952_avcc_no_trailer"
path = "tests/issue_952_avcc_no_trailer.rs"
[[test]]
name = "klv"
path = "tests/klv.rs"
[[test]]
name = "label_coverage"
path = "tests/label_coverage.rs"
[[test]]
name = "ll_dash"
path = "tests/ll_dash.rs"
[[test]]
name = "ll_hls"
path = "tests/ll_hls.rs"
[[test]]
name = "mkv_mux"
path = "tests/mkv_mux.rs"
[[test]]
name = "mpeg_legacy"
path = "tests/mpeg_legacy.rs"
[[test]]
name = "mpegh"
path = "tests/mpegh.rs"
[[test]]
name = "mpegh_ts"
path = "tests/mpegh_ts.rs"
[[test]]
name = "nal_keyframe"
path = "tests/nal_keyframe.rs"
[[test]]
name = "non_exhaustive_coverage"
path = "tests/non_exhaustive_coverage.rs"
[[test]]
name = "opengop_anchor"
path = "tests/opengop_anchor.rs"
[[test]]
name = "pipeline"
path = "tests/pipeline.rs"
[[test]]
name = "pmt_version_diff"
path = "tests/pmt_version_diff.rs"
[[test]]
name = "progressive"
path = "tests/progressive.rs"
[[test]]
name = "progressive_demux"
path = "tests/progressive_demux.rs"
[[test]]
name = "ps_demux"
path = "tests/ps_demux.rs"
[[test]]
name = "rebase"
path = "tests/rebase.rs"
[[test]]
name = "repackage"
path = "tests/repackage.rs"
[[test]]
name = "rtcp"
path = "tests/rtcp.rs"
[[test]]
name = "rtcp_av_sync"
path = "tests/rtcp_av_sync.rs"
[[test]]
name = "rtmp"
path = "tests/rtmp.rs"
[[test]]
name = "rtp"
path = "tests/rtp.rs"
[[test]]
name = "rtp_stream"
path = "tests/rtp_stream.rs"
[[test]]
name = "sample_aes"
path = "tests/sample_aes.rs"
[[test]]
name = "segment_emsg"
path = "tests/segment_emsg.rs"
[[test]]
name = "segmenter"
path = "tests/segmenter.rs"
[[test]]
name = "segmenter_progress_bounds"
path = "tests/segmenter_progress_bounds.rs"
[[test]]
name = "sei_caption_real_capture"
path = "tests/sei_caption_real_capture.rs"
[[test]]
name = "smooth"
path = "tests/smooth.rs"
[[test]]
name = "splice"
path = "tests/splice.rs"
[[test]]
name = "sps_profile_matrix"
path = "tests/sps_profile_matrix.rs"
[[test]]
name = "ssai_ad_stitch"
path = "tests/ssai_ad_stitch.rs"
[[test]]
name = "stage"
path = "tests/stage.rs"
[[test]]
name = "streaming_demux"
path = "tests/streaming_demux.rs"
[[test]]
name = "streaming_demux_tracks_resolved"
path = "tests/streaming_demux_tracks_resolved.rs"
[[test]]
name = "streaming_tshls"
path = "tests/streaming_tshls.rs"
[[test]]
name = "streaming_tshls_late_track"
path = "tests/streaming_tshls_late_track.rs"
[[test]]
name = "subtitle_ac4_strictness"
path = "tests/subtitle_ac4_strictness.rs"
[[test]]
name = "timing"
path = "tests/timing.rs"
[[test]]
name = "timing_groups"
path = "tests/timing_groups.rs"
[[test]]
name = "track_provenance"
path = "tests/track_provenance.rs"
[[test]]
name = "trick_signalling"
path = "tests/trick_signalling.rs"
[[test]]
name = "trickplay"
path = "tests/trickplay.rs"
[[test]]
name = "ts_demux"
path = "tests/ts_demux.rs"
[[test]]
name = "ts_hevc"
path = "tests/ts_hevc.rs"
[[test]]
name = "ts_hevc_carriage"
path = "tests/ts_hevc_carriage.rs"
[[test]]
name = "ts_hls"
path = "tests/ts_hls.rs"
[[test]]
name = "ts_mux"
path = "tests/ts_mux.rs"
[[test]]
name = "ts_to_cmaf"
path = "tests/ts_to_cmaf.rs"
[[test]]
name = "validate"
path = "tests/validate.rs"
[[test]]
name = "visual_ext"
path = "tests/visual_ext.rs"
[[test]]
name = "vp8_vorbis"
path = "tests/vp8_vorbis.rs"
[[test]]
name = "vvc"
path = "tests/vvc.rs"
[[test]]
name = "webm_demux"
path = "tests/webm_demux.rs"
[dependencies.aes]
version = "0.8"
optional = true
default-features = false
[dependencies.broadcast-common]
version = "9.3"
default-features = false
[dependencies.broadcast-hls]
version = "0.2"
default-features = false
[dependencies.bytes]
version = "1"
default-features = false
[dependencies.cbc]
version = "0.1"
optional = true
default-features = false
[dependencies.clap]
version = "4.5"
features = ["derive"]
optional = true
[dependencies.ctr]
version = "0.9"
optional = true
default-features = false
[dependencies.mp4-emsg]
version = "0.4"
default-features = false
[dependencies.mpeg-pes]
version = "0.4"
default-features = false
[dependencies.mpeg-ps]
version = "0.4"
default-features = false
[dependencies.mpeg-ts]
version = "0.4"
default-features = false
[dependencies.rtcp-packet]
version = "0.3"
default-features = false
[dependencies.rtp-packet]
version = "0.4"
default-features = false
[dependencies.serde]
version = "1"
features = [
"derive",
"alloc",
]
optional = true
default-features = false
[dependencies.thiserror]
version = "2"
default-features = false
[dev-dependencies.scte35-splice]
version = "2.1"
features = ["std"]
default-features = false
[dev-dependencies.serde_json]
version = "1.0"