examples: webrtc: rust: Set keyframe-max-dist=2000 and picture-id-mode=15-bit for VP8 and perfect-timestamps=true for audio
This makes it in sync with the C sendrecv and generally behaves better. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3758>
This commit is contained in:
parent
083b9f2a6e
commit
6541dccaea
@ -157,9 +157,9 @@ impl App {
|
|||||||
// Create the GStreamer pipeline
|
// Create the GStreamer pipeline
|
||||||
let pipeline = gst::parse_launch(
|
let pipeline = gst::parse_launch(
|
||||||
&format!(
|
&format!(
|
||||||
"videotestsrc is-live=true ! vp8enc deadline=1 ! rtpvp8pay pt=96 ! tee name=video-tee ! \
|
"videotestsrc is-live=true ! vp8enc deadline=1 keyframe-max-dist=2000 ! rtpvp8pay pt=96 picture-id-mode=15-bit ! tee name=video-tee ! \
|
||||||
queue ! fakesink sync=true \
|
queue ! fakesink sync=true \
|
||||||
audiotestsrc wave=ticks is-live=true ! opusenc ! rtpopuspay pt=97 ! application/x-rtp,encoding-name=OPUS ! tee name=audio-tee ! \
|
audiotestsrc wave=ticks is-live=true ! opusenc perfect-timestamp=true ! rtpopuspay pt=97 ! application/x-rtp,encoding-name=OPUS ! tee name=audio-tee ! \
|
||||||
queue ! fakesink sync=true \
|
queue ! fakesink sync=true \
|
||||||
audiotestsrc wave=silence is-live=true ! audio-mixer. \
|
audiotestsrc wave=silence is-live=true ! audio-mixer. \
|
||||||
audiomixer name=audio-mixer sink_0::mute=true ! audioconvert ! audioresample ! autoaudiosink \
|
audiomixer name=audio-mixer sink_0::mute=true ! audioconvert ! audioresample ! autoaudiosink \
|
||||||
@ -192,13 +192,6 @@ impl App {
|
|||||||
// Channel for outgoing WebSocket messages from other threads
|
// Channel for outgoing WebSocket messages from other threads
|
||||||
let (send_ws_msg_tx, send_ws_msg_rx) = mpsc::unbounded::<WsMessage>();
|
let (send_ws_msg_tx, send_ws_msg_rx) = mpsc::unbounded::<WsMessage>();
|
||||||
|
|
||||||
// Asynchronously set the pipeline to Playing
|
|
||||||
pipeline.call_async(|pipeline| {
|
|
||||||
pipeline
|
|
||||||
.set_state(gst::State::Playing)
|
|
||||||
.expect("Couldn't set pipeline to Playing");
|
|
||||||
});
|
|
||||||
|
|
||||||
let app = App(Arc::new(AppInner {
|
let app = App(Arc::new(AppInner {
|
||||||
pipeline,
|
pipeline,
|
||||||
video_tee,
|
video_tee,
|
||||||
|
@ -115,7 +115,7 @@ impl App {
|
|||||||
> {
|
> {
|
||||||
// Create the GStreamer pipeline
|
// Create the GStreamer pipeline
|
||||||
let pipeline = gst::parse_launch(
|
let pipeline = gst::parse_launch(
|
||||||
"videotestsrc pattern=ball is-live=true ! vp8enc deadline=1 ! rtpvp8pay name=vpay pt=96 ! webrtcbin. \
|
"videotestsrc pattern=ball is-live=true ! vp8enc deadline=1 keyframe-max-dist=2000 ! rtpvp8pay name=vpay pt=96 picture-id-mode=15-bit ! webrtcbin. \
|
||||||
audiotestsrc is-live=true ! opusenc perfect-timestamp=true ! rtpopuspay name=apay pt=97 ! application/x-rtp,encoding-name=OPUS ! webrtcbin. \
|
audiotestsrc is-live=true ! opusenc perfect-timestamp=true ! rtpopuspay name=apay pt=97 ! application/x-rtp,encoding-name=OPUS ! webrtcbin. \
|
||||||
webrtcbin name=webrtcbin"
|
webrtcbin name=webrtcbin"
|
||||||
)?;
|
)?;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user