[package] name = "gst-plugin-webrtc" version.workspace = true edition.workspace = true authors = ["Mathieu Duponchelle ", "Thibault Saunier "] license = "MPL-2.0" description = "GStreamer plugin for high level WebRTC elements and a simple signaling server" repository.workspace = true rust-version.workspace = true [dependencies] gst = { workspace = true, features = ["v1_20", "serde"] } gst-app = { workspace = true, features = ["v1_20"] } gst-audio = { workspace = true, features = ["v1_20", "serde"] } gst-video = { workspace = true, features = ["v1_20", "serde"] } gst-net = { workspace = true, features = ["v1_20"] } gst-webrtc = { workspace = true, features = ["v1_20"] } gst-sdp = { workspace = true, features = ["v1_20"] } gst-rtp = { workspace = true, features = ["v1_20"] } gst-utils.workspace = true gst-base.workspace = true uuid = { version = "1", features = ["v4"] } anyhow = "1" chrono = "0.4" thiserror = "1" futures = "0.3" tokio = { version = "1", features = ["fs", "macros", "rt-multi-thread", "time"] } tokio-native-tls = "0.3.0" tokio-stream = "0.1.11" async-tungstenite = { version = "0.28", features = ["tokio-runtime", "tokio-native-tls", "url"] } serde = { version = "1", features = ["derive"] } serde_json = "1" fastrand = "2.0" gst_plugin_webrtc_protocol = { path="protocol", package = "gst-plugin-webrtc-signalling-protocol", version = "0.13" } human_bytes = "0.4" once_cell.workspace = true rand = "0.8" url = "2" aws-config = { version = "1.0", optional = true } aws-types = { version = "1.0", optional = true } aws-credential-types = { version = "1.0", optional = true } aws-sigv4 = { version = "1.0", optional = true } aws-smithy-http = { version = "0.60", features = [ "rt-tokio" ], optional = true } aws-smithy-types = { version = "1.0", optional = true } aws-sdk-kinesisvideo = { version = "1.0", optional = true } aws-sdk-kinesisvideosignaling = { version = "1.0", optional = true } http = { version = "1.0", optional = true } data-encoding = {version = "2.3.3", optional = true } url-escape = { version = "0.1.1", optional = true } reqwest = { version = "0.11", features = ["default-tls"], optional = true } parse_link_header = {version = "0.3", features = ["url"]} async-recursion = { version = "1.0.0", optional = true } livekit-protocol = { version = "0.3, < 0.3.4", optional = true } livekit-api = { version = "0.3", default-features = false, features = ["signal-client", "access-token", "native-tls"], optional = true } warp = {version = "0.3", optional = true } ctrlc = {version = "3.4.0", optional = true } [dev-dependencies] gst-plugin-rtp = { path = "../rtp" } tokio = { version = "1", features = ["signal"] } tracing = { version = "0.1", features = ["log"] } tracing-subscriber = { version = "0.3", features = ["registry", "env-filter"] } tracing-log = "0.2" clap = { version = "4", features = ["derive"] } regex = "1" [lib] name = "gstrswebrtc" crate-type = ["cdylib", "rlib"] path = "src/lib.rs" [build-dependencies] gst-plugin-version-helper.workspace = true [features] default = ["v1_22", "aws", "janus", "livekit", "whip"] static = [] capi = [] v1_22 = ["gst/v1_22", "gst-app/v1_22", "gst-video/v1_22", "gst-webrtc/v1_22", "gst-sdp/v1_22", "gst-rtp/v1_22"] doc = [] aws = ["dep:aws-config", "dep:aws-types", "dep:aws-credential-types", "dep:aws-sigv4", "dep:aws-smithy-http", "dep:aws-smithy-types", "dep:aws-sdk-kinesisvideo", "dep:aws-sdk-kinesisvideosignaling", "dep:data-encoding", "dep:http", "dep:url-escape"] janus = ["dep:http"] livekit = ["dep:livekit-protocol", "dep:livekit-api"] whip = ["dep:async-recursion", "dep:reqwest", "dep:warp", "dep:ctrlc"] [package.metadata.capi] min_version = "0.9.21" [package.metadata.capi.header] enabled = false [package.metadata.capi.library] install_subdir = "gstreamer-1.0" versioning = false import_library = false [package.metadata.capi.pkg_config] requires_private = "gstreamer-rtp-1.0 >= 1.20, gstreamer-webrtc-1.0 >= 1.20, gstreamer-1.0 >= 1.20, gstreamer-app-1.0 >= 1.20, gstreamer-video-1.0 >= 1.20, gstreamer-sdp-1.0 >= 1.20, gobject-2.0, glib-2.0, gmodule-2.0" [[example]] name = "webrtcsink-stats-server" [[example]] name = "webrtcsink-high-quality-tune" [[example]] name = "webrtcsink-custom-signaller" [[example]] name = "webrtc-precise-sync-send" [[example]] name = "webrtc-precise-sync-recv" [[example]] name = "whipserver" required-features = [ "whip" ]