GStreamer issueshttps://gitlab.freedesktop.org/groups/gstreamer/-/issues2023-04-04T09:07:22Zhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/323NdiSrc choppy with Too small/big slope resetting Warnings2023-04-04T09:07:22Zjoru1407NdiSrc choppy with Too small/big slope resetting WarningsI'm sending out a Compositor Video and a WASAPI Audio Source trough NdiSink on my first PC and try to receive it from a second PC with NdiSrc.
If i use the official NDI Studio Monitor on the second PC, I can view the Ndi Video-/Audiostre...I'm sending out a Compositor Video and a WASAPI Audio Source trough NdiSink on my first PC and try to receive it from a second PC with NdiSrc.
If i use the official NDI Studio Monitor on the second PC, I can view the Ndi Video-/Audiostream without any issues.
But if I try to use NdiSrc with the following pipeline, the Video / Audio stucks after a few seonds and then plays very choppy.
At the same time I can see plenty of warnings `Too small/big slope -X.X, resetting`.
I use the following pipeline in C#:
`.\gst-launch-1.0.exe ndisrc ndi-name="PC-REGIE-01 (MASTER)" ! ndisrcdemux name=demux demux.video ! queue ! videoconvert ! autovideosink demux.audio ! queue ! audioconvert ! autoaudiosink`
Any ideas how the fix the problem?
I already tried to set queue max-size's to 0 and tested different ndi-timestamp-modes.https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/988Playsink: Failed to initialize colorbalance shader2023-03-02T10:14:00ZZaidan AlaouiPlaysink: Failed to initialize colorbalance shaderWe are getting the following failure when trying to create a pipeline under Android as follows:
filesrc -> decodebin -> playsink
```
The following log are returned:
../gst-libs/gst/gl/gstglslstage.c:519:_compile_shader:<glslstage1> frag...We are getting the following failure when trying to create a pipeline under Android as follows:
filesrc -> decodebin -> playsink
```
The following log are returned:
../gst-libs/gst/gl/gstglslstage.c:519:_compile_shader:<glslstage1> fragment shader compilation failed:1:1: L0001: Typename expected, found 'samplerExternalOES'
../gst-libs/gst/gl/gstgldebug.c:307:_gst_gl_debug_callback:<glcontextegl2> high: GL error from API id:38, Error:glDeleteShader::<shader> is not a value generated by OpenGL
../ext/gl/gstglcolorbalance.c:265:_create_shader:<glcolorbalance0> error: Failed to initialize colorbalance shader
../ext/gl/gstglcolorbalance.c:265:_create_shader:<glcolorbalance0> error: fragment shader compilation failed:1:1: L0001: Typename expected, found 'samplerExternalOES'
```
A native window is created and is passed to Playsink using:
gst_video_overlay_expose (GST_VIDEO_OVERLAY (data->playsink));
Is this a known issue ? Any suggestions ?
Thankshttps://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/445double free or corruption (out) error2023-04-04T09:09:50ZYaoda Liudouble free or corruption (out) errorHi, I got the error message when I running the examples code appsrc.rs
```
Producing frame 0
double free or corruption (out)
[1] 1476008 IOT instruction (core dumped) cargo run --bin appsrc
```
I have no idea how to fix this, do I ...Hi, I got the error message when I running the examples code appsrc.rs
```
Producing frame 0
double free or corruption (out)
[1] 1476008 IOT instruction (core dumped) cargo run --bin appsrc
```
I have no idea how to fix this, do I missing any information? thanks.
Here's my part of Cargo.toml (both `0.19.0` and `0.20.0` get the same error)
```
[dependencies]
gstreamer = "0.19.0"
gstreamer-base = "0.19.0"
gstreamer-app = "0.19.0"
gstreamer-gl = "0.19.0"
gstreamer-gl-egl = "0.19.0"
gstreamer-gl-wayland = "0.19.0"
gstreamer-gl-x11 = "0.19.0"
gstreamer-audio = "0.19.0"
gstreamer-video = "0.19.0"
anyhow = "1.0"
derive_more = "0.99.5"
futures = "0.3"
image = "0.24.5"
gl = "0.14.0"
glutin = { version = "0.29" }
termion = { version = "2" }
once_cell = "1.0"
[build-dependencies]
gl_generator = { version = "0.14" }
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/317Backwards compitablity on fallbackswitch2023-02-20T18:47:06ZMartijn MellemaBackwards compitablity on fallbackswitchHi,
Due to a issue regarding my setup I want to add fallbacksrc. Because I developed my Nvidia Jetson containers based on ubuntu bionic i'm bound to gstreamer 1.14.
My setup is:
axis camera > public accessible ip > [restreamer](https...Hi,
Due to a issue regarding my setup I want to add fallbacksrc. Because I developed my Nvidia Jetson containers based on ubuntu bionic i'm bound to gstreamer 1.14.
My setup is:
axis camera > public accessible ip > [restreamer](https://github.com/datarhei/restreamer) > passthrough HLS > gstreamer
this setup works fine for around 8 hours when suddenly there is a 404 not found on the m3u8 extension
```
gst-launch-1.0 souphttpsrc timeout=3600 retries=10000 is-live=true name=source_0 location=http://restreamer:8080/memfs/46b97670-6c4f-4919-9b3d-9f04cf56a87b.m3u8 ! hlsdemux ! tsdemux ! multiqueue ! h264parse ! nvv4l2decoder skip-frames=1 enable-max-performance=1 ! nvvidconv ! video/x-raw\(memory:NVMM\),format=RGBA,width=1920,height=1080 ! nvvidconv ! video/x-raw ! queue leaky=1 ! ndisink sync=false ndi-name="test"
```
Error log
```
9:23:46.891763927 256 0x18d678d0 WARN v4l2 gstv4l2object.c:4476:gst_v4l2_object_probe_caps:<nvv4l2decoder166:src> Failed to probe pixel aspect ratio with VIDIOC_CROPCAP: Unknown error -1
9:23:46.891932792 256 0x18d678d0 WARN v4l2 gstv4l2object.c:2388:gst_v4l2_object_add_interlace_mode:0x7e3003acd0 Failed to determine interlace mode
9:23:46.892017944 256 0x18d678d0 WARN v4l2 gstv4l2object.c:2388:gst_v4l2_object_add_interlace_mode:0x7e3003acd0 Failed to determine interlace mode
9:23:46.892093656 256 0x18d678d0 WARN v4l2 gstv4l2object.c:2388:gst_v4l2_object_add_interlace_mode:0x7e3003acd0 Failed to determine interlace mode
9:23:46.939365893 256 0x18d678d0 WARN v4l2 gstv4l2object.c:4476:gst_v4l2_object_probe_caps:<nvv4l2decoder167:src> Failed to probe pixel aspect ratio with VIDIOC_CROPCAP: Unknown error -1
9:23:46.939509894 256 0x18d678d0 WARN v4l2 gstv4l2object.c:2388:gst_v4l2_object_add_interlace_mode:0x7e30049c00 Failed to determine interlace mode
9:23:46.939589062 256 0x18d678d0 WARN v4l2 gstv4l2object.c:2388:gst_v4l2_object_add_interlace_mode:0x7e30049c00 Failed to determine interlace mode
9:23:46.939664038 256 0x18d678d0 WARN v4l2 gstv4l2object.c:2388:gst_v4l2_object_add_interlace_mode:0x7e30049c00 Failed to determine interlace mode
9:23:46.951849499 256 0x7f44002d40 WARN souphttpsrc gstsouphttpsrc.c:1426:gst_soup_http_src_parse_status:<source_1> error: Not Found
9:23:46.951931291 256 0x7f44002d40 WARN souphttpsrc gstsouphttpsrc.c:1426:gst_soup_http_src_parse_status:<source_1> error: Not Found (404), URL: http://restreamer:8080/memfs/56ee29bb-3800-4067-ac1f-55b10155d65e.m3u8, Redirect to: (NULL)
9:23:46.952397949 256 0x7f44002d40 WARN basesrc gstbasesrc.c:3055:gst_base_src_loop:<source_1> error: Internal data stream error.
9:23:46.952479358 256 0x7f44002d40 WARN basesrc gstbasesrc.c:3055:gst_base_src_loop:<source_1> error: streaming stopped, reason error (-5)
9:23:46.952892735 256 0x7f44002d40 WARN adaptivedemux gstadaptivedemux.c:630:gst_adaptive_demux_sink_event:<hlsdemux167> Received EOS without a manifest.
9:23:46.954619495 256 0x7e30057c50 WARN shmsink gstshmsink.c:842:pollthread_func:<shm_sink> error: Failed waiting on fd activity
9:23:46.954695559 256 0x7e30057c50 WARN shmsink gstshmsink.c:842:pollthread_func:<shm_sink> error: gst_poll_wait returned -1, errno: 16
9:23:46.961877286 256 0x7e30053e30 WARN souphttpsrc gstsouphttpsrc.c:1426:gst_soup_http_src_parse_status:<source_0> error: Not Found
9:23:46.961964583 256 0x7e30053e30 WARN souphttpsrc gstsouphttpsrc.c:1426:gst_soup_http_src_parse_status:<source_0> error: Not Found (404), URL: http://restreamer:8080/memfs/46b97670-6c4f-4919-9b3d-9f04cf56a87b.m3u8, Redirect to: (NULL)
9:23:46.962491433 256 0x7e30053e30 WARN basesrc gstbasesrc.c:3055:gst_base_src_loop:<source_0> error: Internal data stream error.
9:23:46.962532969 256 0x7e30053e30 WARN basesrc gstbasesrc.c:3055:gst_base_src_loop:<source_0> error: streaming stopped, reason error (-5)
9:23:46.962610314 256 0x7e30053e30 WARN adaptivedemux gstadaptivedemux.c:630:gst_adaptive_demux_sink_event:<hlsdemux166> Received EOS without a manifest.
```
Because I've read on an issue report that fallbackswitch is a suitable option to fix this issue. I've compiled the rust for gst `1.14` on version `0.7.2-RELEASE`
I could not understand how to compile directly to `v1_14` so I adjusted and compiled in a docker container that equals the production environment. Ive adjusted the `Cargo.toml` and compiled sucessfully
```
[package]
name = "gst-plugin-fallbackswitch"
version = "0.7.2"
authors = ["Sebastian Dröge <sebastian@centricular.com>"]
repository = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs"
license = "LGPL-2.1-or-later"
edition = "2018"
description = "Fallback Switcher Plugin"
[dependencies]
libc = { version = "0.2", optional = true }
gst = { package = "gstreamer", version = "0.17", features = ["v1_14"] }
gst-base = { package = "gstreamer-base", version = "0.17", features = ["v1_14_1"] }
gst-audio = { package = "gstreamer-audio", version = "0.17", features = ["v1_14"] }
gst-video = { package = "gstreamer-video", version = "0.17", features = ["v1_14"] }
gtk = { version = "0.14", optional = true }
gio = { version = "0.14", optional = true }
once_cell = "1.0"
[dev-dependencies]
gst-app = { package = "gstreamer-app", version = "0.17", features = ["v1_14"]}
gst-check = { package = "gstreamer-check", version = "0.17", features = ["v1_14"]}
[lib]
name = "gstfallbackswitch"
crate-type = ["cdylib", "rlib"]
path = "src/lib.rs"
[[example]]
name = "gtk-fallbackswitch"
path = "examples/gtk_fallbackswitch.rs"
required-features = ["gtk", "gio"]
[build-dependencies]
gst-plugin-version-helper = { version = "0.7.0", path="../../version-helper" }
cc = "1.0"
pkg-config = "0.3"
[features]
default = ["libc","gst/v1_14","gst-base/v1_14"]
static = []
capi = []
[package.metadata.capi]
min_version = "0.7.0"
[package.metadata.capi.header]
enabled = false
[package.metadata.capi.library]
install_subdir = "gstreamer-1.0"
versioning = false
[package.metadata.capi.pkg_config]
requires_private = "gstreamer-1.0, gstreamer-base-1.0, gobject-2.0, glib-2.0, gmodule-2.0"
```
I tested with this command:
```
GST_DEBUG=2,fallbacksrc:4,fallbackswitch:4,souphttpsrc:4,ndisink:4 gst-launch-1.0 fallbacksrc enable-audio=false uri=http://restreamer:8080/memfs/46b97670-6c4f-4919-9b3d-9f04cf56a87b.m3u8 ! hlsdemux ! tsdemux ! multiqueue ! h264parse ! nvv4l2decoder skip-frames=1 enable-max-performance=1 ! nvvidconv ! video/x-raw\(memory:NVMM\),format=RGBA,width=1920,height=1080 ! nvvidconv ! video/x-raw ! queue leaky=1 ! ndisink sync=false ndi-name="test"
```
```
GST_DEBUG=2,fallbacksrc:4,fallbackswitch:4,souphttpsrc:4,ndisink:4 gst-launch-1.0 fallbacksrc enable-audio=false uri=http://restreamer:8080/memfs/46b97670-6c4f-4919-9b3d-9f04cf56a87b.m3u8 ! hlsdemux ! tsdemux ! multiqueue ! h264parse ! nvv4l2decoder skip-frames=1 enable-max-performance=1 ! nvvidconv ! video/x-raw\(memory:NVMM\),format=RGBA,width=1920,height=1080 ! nvvidconv ! video/x-raw ! queue leaky=1 ! ndisink sync=false ndi-name="test"
0:00:00.074639659 11019 0x55a5083c60 INFO fallbacksrc src/fallbacksrc/imp.rs:332:gstfallbackswitch::fallbacksrc::imp:<fallbacksrc0> Changing enable-audio from true to false
0:00:00.074789387 11019 0x55a5083c60 INFO fallbacksrc src/fallbacksrc/imp.rs:356:gstfallbackswitch::fallbacksrc::imp:<fallbacksrc0> Changing URI from None to Some("http://restreamer:8080/memfs/46b97670-6c4f-4919-9b3d-9f04cf56a87b.m3u8")
nvbuf_utils: Could not get EGL display connection
Setting pipeline to PAUSED ...
0:00:00.136128303 11019 0x55a5083c60 INFO ndisink src/ndisink/imp.rs:196:gstndi::ndisink::imp:<ndisink0> Started
Opening in BLOCKING MODE
0:00:00.228324438 11019 0x55a5083c60 WARN v4l2 gstv4l2object.c:4476:gst_v4l2_object_probe_caps:<nvv4l2decoder0:src> Failed to probe pixel aspect ratio with VIDIOC_CROPCAP: Unknown error -1
0:00:00.228424983 11019 0x55a5083c60 WARN v4l2 gstv4l2object.c:2388:gst_v4l2_object_add_interlace_mode:0x55a51008d0 Failed to determine interlace mode
0:00:00.228524631 11019 0x55a5083c60 WARN v4l2 gstv4l2object.c:2388:gst_v4l2_object_add_interlace_mode:0x55a51008d0 Failed to determine interlace mode
0:00:00.228595192 11019 0x55a5083c60 WARN v4l2 gstv4l2object.c:2388:gst_v4l2_object_add_interlace_mode:0x55a51008d0 Failed to determine interlace mode
0:00:00.233465266 11019 0x55a5083c60 WARN GST_ELEMENT_FACTORY gstelementfactory.c:456:gst_element_factory_make: no such element factory "clocksync"!
0:00:00.234378582 11019 0x55a5083c60 INFO fallbackswitch src/fallbackswitch/imp.rs:771:gstfallbackswitch::fallbackswitch::imp:<fallbackswitch0> Changing timeout from 0:00:05.000000000 to 0:00:05.000000000
0:00:00.244457868 11019 0x55a5189680 WARN aggregator src/base/gstaggregator.c:1910:gst_aggregator_query_latency_unlocked:<fallbackswitch0> Latency query failed
0:00:00.245296112 11019 0x55a5189680 WARN aggregator src/base/gstaggregator.c:1910:gst_aggregator_query_latency_unlocked:<fallbackswitch0> Latency query failed
Pipeline is live and does not need PREROLL ...
0:00:00.261605990 11019 0x55a5083c60 WARN structure gststructure.c:1832:priv_gst_structure_append_to_gstring: No value transform to serialize field 'session' of type 'SoupSession'
Got context from element 'source': gst.soup.session=context, session=(SoupSession)NULL, force=(boolean)false;
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
0:00:00.436378433 11019 0x55a51de000 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<source> got headers
0:00:00.470446805 11019 0x7f58632850 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<souphttpsrc0> got headers
0:00:00.481349295 11019 0x7f58632b20 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<souphttpsrc1> got headers
0:00:00.503948582 11019 0x7f44003400 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<souphttpsrc1> got headers
0:00:00.518878869 11019 0x7f44003400 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<souphttpsrc1> got headers
0:00:00.556388123 11019 0x7f44003400 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<souphttpsrc1> got headers
Opening in BLOCKING MODE
0:00:00.633833620 11019 0x7f58632b20 WARN v4l2 gstv4l2object.c:4476:gst_v4l2_object_probe_caps:<nvv4l2decoder1:src> Failed to probe pixel aspect ratio with VIDIOC_CROPCAP: Unknown error -1
0:00:00.633981269 11019 0x7f58632b20 WARN v4l2 gstv4l2object.c:2388:gst_v4l2_object_add_interlace_mode:0x7f30026800 Failed to determine interlace mode
0:00:00.634060086 11019 0x7f58632b20 WARN v4l2 gstv4l2object.c:2388:gst_v4l2_object_add_interlace_mode:0x7f30026800 Failed to determine interlace mode
0:00:00.634126294 11019 0x7f58632b20 WARN v4l2 gstv4l2object.c:2388:gst_v4l2_object_add_interlace_mode:0x7f30026800 Failed to determine interlace mode
NvMMLiteOpen : Block : BlockType = 261
NVMEDIA: Reading vendor.tegra.display-size : status: 6
NvMMLiteBlockCreate : Block : BlockType = 261
0:00:00.748548914 11019 0x7f58632b20 WARN v4l2 gstv4l2object.c:4476:gst_v4l2_object_probe_caps:<nvv4l2decoder1:src> Failed to probe pixel aspect ratio with VIDIOC_CROPCAP: Unknown error -1
0:00:00.748677075 11019 0x7f58632b20 WARN v4l2 gstv4l2object.c:2388:gst_v4l2_object_add_interlace_mode:0x7f30026800 Failed to determine interlace mode
0:00:00.748780019 11019 0x7f58632b20 WARN v4l2 gstv4l2object.c:2388:gst_v4l2_object_add_interlace_mode:0x7f30026800 Failed to determine interlace mode
0:00:00.748833044 11019 0x7f58632b20 WARN v4l2 gstv4l2object.c:2388:gst_v4l2_object_add_interlace_mode:0x7f30026800 Failed to determine interlace mode
0:00:00.750658205 11019 0x7f58632b20 WARN v4l2videodec gstv4l2videodec.c:1755:gst_v4l2_video_dec_decide_allocation:<nvv4l2decoder1> Duration invalid, not setting latency
0:00:00.751525026 11019 0x7f58632b20 WARN v4l2bufferpool gstv4l2bufferpool.c:1087:gst_v4l2_buffer_pool_start:<nvv4l2decoder1:pool:src> Uncertain or not enough buffers, enabling copy threshold
0:00:00.756870622 11019 0x7f58632a80 WARN v4l2bufferpool gstv4l2bufferpool.c:1536:gst_v4l2_buffer_pool_dqbuf:<nvv4l2decoder1:pool:src> Driver should never set v4l2_buffer.field to ANY
0:00:00.789090632 11019 0x55a5189680 INFO fallbackswitch src/fallbackswitch/imp.rs:345:gstfallbackswitch::fallbackswitch::imp:<fallbackswitch0:sink> Active pad changed to sinkpad
0:00:00.789344042 11019 0x55a5189680 INFO fallbackswitch src/fallbackswitch/imp.rs:1232:gstfallbackswitch::fallbackswitch::imp:<fallbackswitch0> Caps change from None to Caps("video/x-raw(memory:NVMM), format=(string)NV12, width=(int)1920, height=(int)1080, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)mpeg2, colorimetry=(string)bt709, framerate=(fraction)25/1")
0:00:00.801121992 11019 0x55a51896d0 WARN basesrc gstbasesrc.c:3055:gst_base_src_loop:<fallback_videosrc> error: Internal data stream error.
0:00:00.801201768 11019 0x55a51896d0 WARN basesrc gstbasesrc.c:3055:gst_base_src_loop:<fallback_videosrc> error: streaming stopped, reason not-negotiated (-4)
0:00:02.479739499 11019 0x7f585f26d0 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<souphttpsrc0> got headers
0:00:02.485172551 11019 0x7f585f26d0 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<souphttpsrc1> got headers
0:00:04.487007573 11019 0x7f44003540 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<souphttpsrc0> got headers
0:00:04.492285937 11019 0x7f440035e0 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<souphttpsrc1> got headers
0:00:06.494508705 11019 0x7f44003540 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<souphttpsrc0> got headers
0:00:06.509718226 11019 0x7f44003680 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<souphttpsrc1> got headers
0:00:08.500644166 11019 0x7f44003540 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<souphttpsrc0> got headers
0:00:08.504709947 11019 0x7f44003770 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<souphttpsrc1> got headers
0:00:10.506911787 11019 0x7f44003540 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<souphttpsrc0> got headers
0:00:10.510583167 11019 0x7f44003630 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<souphttpsrc1> got headers
0:00:12.512909583 11019 0x7f44003540 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<souphttpsrc0> got headers
0:00:12.523246118 11019 0x7f440034a0 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<souphttpsrc1> got headers
0:00:14.519657335 11019 0x7f44003540 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<souphttpsrc0> got headers
0:00:14.525353781 11019 0x7f58632b70 INFO souphttpsrc gstsouphttpsrc.c:1127:gst_soup_http_src_got_headers:<souphttpsrc1> got headers
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:14.783687274
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
0:00:15.207190663 11019 0x55a5083c60 INFO ndisink src/ndisink/imp.rs:205:gstndi::ndisink::imp:<ndisink0> Stopped
Freeing pipeline ...
```
Sadly there is no output in NDI :disappointed:
If this works I want to add this to stitch multiple streams together for video processing and process this on a `shmsrc` on a diffent container. This needs to be done realtime.
```
gst-launch-1.0 nvcompositor name=comp \
sink_0::xpos=0 sink_0::ypos=0 sink_0::width=960 sink_0::height=540 sink_1::xpos=960 sink_1::ypos=0 sink_1::width=960 sink_1::height=540 \
! video/x-raw\(memory:NVMM\),format=RGBA,width=1920,height=960, framerate=\(fraction\)15/1 \
! nvvidconv ! video/x-raw ! tee name=t \
t. ! queue leaky=1 ! shmsink sync=false async=false name=shm_sink socket-path="/dev/shm/bf8af8d3-ba8b-4127-877e-a04531275d75" shm-size=500552000 wait-for-connection=false \
t. ! queue leaky=1 ! ndisink sync=false ndi-name="output" \
souphttpsrc timeout=3600 retries=10000 is-live=true name=source_0 location=http://restreamer:8080/memfs/46b97670-6c4f-4919-9b3d-9f04cf56a87b.m3u8 ! hlsdemux ! tsdemux ! multiqueue ! h264parse ! nvv4l2decoder skip-frames=1 enable-max-performance=1 ! nvvidconv ! video/x-raw\(memory:NVMM\),format=RGBA,width=1920,height=1080 ! \
comp.sink_0 souphttpsrc timeout=3600 retries=10000 is-live=true name=source_1 location=http://restreamer:8080/memfs/56ee29bb-3800-4067-ac1f-55b10155d65e.m3u8 ! hlsdemux ! tsdemux ! multiqueue ! h264parse ! nvv4l2decoder skip-frames=1 enable-max-performance=1 ! nvvidconv ! video/x-raw\(memory:NVMM\),format=RGBA,width=1920,height=1080 ! comp.sink_1
```
My questions are:
- How backwards compatible are the plugins? Can I use the newest version and just compile and use in 1.14? How do I do this with cargo?
- Which version is the most stable version for 1.14?
- Are there other methods that can handle 404 and restart streams in python?
- How can I fix the above described issue?https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/305rtpgccbwe: Panics with 'assertion failed: min <= max'2023-02-09T19:44:01ZDaniel Ertpgccbwe: Panics with 'assertion failed: min <= max'```
thread '<unnamed>' panicked at 'assertion failed: min <= max', /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/core/src/num/f64.rs:1392:9
0:02:16.583324309 1327 0x7fc0a00af760 ERROR webrtcsink net/webrtc/src/webr...```
thread '<unnamed>' panicked at 'assertion failed: min <= max', /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/core/src/num/f64.rs:1392:9
0:02:16.583324309 1327 0x7fc0a00af760 ERROR webrtcsink net/webrtc/src/webrtcsink/imp.rs:1683:gstrswebrtc::webrtcsink::imp::WebRTCSink::start_session::{{closure}}: session fcd97386-ff10-4ade-b6fe-564f8bd10b40 error: Panicked: assertion failed: min <= max, details: None
0:02:16.583464833 1327 0x7fc0a00af760 ERROR webrtcsink net/webrtc/src/webrtcsink/imp.rs:1683:gstrswebrtc::webrtcsink::imp::WebRTCSink::start_session::{{closure}}: session fcd97386-ff10-4ade-b6fe-564f8bd10b40 error: Panicked, details: None
0:02:16.584007540 1327 0x7fc0a00af760 ERROR webrtcsink net/webrtc/src/webrtcsink/imp.rs:1683:gstrswebrtc::webrtcsink::imp::WebRTCSink::start_session::{{closure}}: session fcd97386-ff10-4ade-b6fe-564f8bd10b40 error: Panicked, details: None
0:02:16.585135565 1327 0x7fc0a00af760 ERROR webrtcsink net/webrtc/src/webrtcsink/imp.rs:1683:gstrswebrtc::webrtcsink::imp::WebRTCSink::start_session::{{closure}}: session fcd97386-ff10-4ade-b6fe-564f8bd10b40 error: Panicked, details: None
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: PoisonError { .. }', net/rtp/src/gcc/imp.rs:1062:56
thread '<unnamed>' panicked at 'assertion failed: min <= max', /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/core/src/num/f64.rs:1392:9
0:02:17.380933862 1327 0x7fc0a00af760 ERROR webrtcsink net/webrtc/src/webrtcsink/imp.rs:1683:gstrswebrtc::webrtcsink::imp::WebRTCSink::start_session::{{closure}}: session 52ae7c50-0abb-460d-90fc-fc3d2f19a3ab error: Panicked: assertion failed: min <= max, details: None
0:02:17.381155195 1327 0x7fc0a00af760 ERROR webrtcsink net/webrtc/src/webrtcsink/imp.rs:1683:gstrswebrtc::webrtcsink::imp::WebRTCSink::start_session::{{closure}}: session 52ae7c50-0abb-460d-90fc-fc3d2f19a3ab error: Panicked, details: None
0:02:17.381642795 1327 0x7fc0a00af760 ERROR webrtcsink net/webrtc/src/webrtcsink/imp.rs:1683:gstrswebrtc::webrtcsink::imp::WebRTCSink::start_session::{{closure}}: session 52ae7c50-0abb-460d-90fc-fc3d2f19a3ab error: Panicked, details: None
0:02:17.382954925 1327 0x7fc0a00af760 ERROR webrtcsink net/webrtc/src/webrtcsink/imp.rs:1683:gstrswebrtc::webrtcsink::imp::WebRTCSink::start_session::{{closure}}: session 52ae7c50-0abb-460d-90fc-fc3d2f19a3ab error: Panicked, details: None
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: PoisonError { .. }', net/rtp/src/gcc/imp.rs:1062:56
0:02:27.807139547 1327 0x560b6ff54090 ERROR webrtcnice nice.c:294:on_resolve_host: failed to resolve: Error resolving “82973f9a-a2ae-4e51-9c4e-51b4d5b1c4d0.local”: Temporary failure in name resolution
```
Is there any explanation, especially for the "PoisonError"?https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1754[Ubuntu:18.04 Docker]: webrtc-unidirectional-h264.c:207:8: error: unknown typ...2023-05-30T16:03:20ZVijay Kamble[Ubuntu:18.04 Docker]: webrtc-unidirectional-h264.c:207:8: error: unknown type name 'GstWebRTCPriorityType'HellHello,
I am using `main` branch of the [GStreamer monorepo](https://gitlab.freedesktop.org/gstreamer/gstreamer/) and the webrtc/sendonly example in `subprojects/gst-examples` within Ubuntu 18.04 Docker.
Before compiling the webrtc/sen...Hello,
I am using `main` branch of the [GStreamer monorepo](https://gitlab.freedesktop.org/gstreamer/gstreamer/) and the webrtc/sendonly example in `subprojects/gst-examples` within Ubuntu 18.04 Docker.
Before compiling the webrtc/sendonly example, I installed below GStreamer Plugins -
`sudo apt-get install -y gstreamer1.0-tools gstreamer1.0-nice gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-plugins-good libgstreamer1.0-dev git libglib2.0-dev libgstreamer-plugins-bad1.0-dev libsoup2.4-dev libjson-glib-dev`
But I am getting below error while compiling with Ubuntu 18.04 Docker -
"gcc" -O0 -ggdb -Wall -fno-omit-frame-pointer webrtc-unidirectional-h264.c -pthread -I/usr/include/gstreamer-1.0 -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/json-glib-1.0 -I/usr/include/glib-2.0 -I/usr/lib/aarch64-linux-gnu/glib-2.0/include -lgstwebrtc-1.0 -lgstbase-1.0 -lgstreamer-1.0 -lgstsdp-1.0 -lsoup-2.4 -ljson-glib-1.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -o webrtc-unidirectional-h264
**webrtc-unidirectional-h264.c:207:8: error: unknown type name 'GstWebRTCPriorityType'**
static GstWebRTCPriorityType
^~~~~~~~~~~~~~~~~~~~~
webrtc-unidirectional-h264.c: In function '_priority_from_string':
**webrtc-unidirectional-h264.c:211:40: error: 'GST_TYPE_WEBRTC_PRIORITY_TYPE' undeclared (first use in this function); did you mean 'GST_TYPE_WEBRTC_STATS_TYPE'?**
(GEnumClass *) g_type_class_ref (GST_TYPE_WEBRTC_PRIORITY_TYPE);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
GST_TYPE_WEBRTC_STATS_TYPE
webrtc-unidirectional-h264.c:211:40: note: each undeclared identifier is reported only once for each function it appears in
webrtc-unidirectional-h264.c: In function 'create_receiver_entry':
**webrtc-unidirectional-h264.c:272:5: error: unknown type name 'GstWebRTCPriorityType'; did you mean 'GstWebRTCStatsType'?
GstWebRTCPriorityType priority;**
^~~~~~~~~~~~~~~~~~~~~
GstWebRTCStatsType
webrtc-unidirectional-h264.c:279:7: warning: implicit declaration of function 'gst_webrtc_rtp_sender_set_priority'; did you mean 'gst_webrtc_rtp_sender_set_transport'? [-Wimplicit-function-declaration]
gst_webrtc_rtp_sender_set_priority (sender, priority);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gst_webrtc_rtp_sender_set_transport
webrtc-unidirectional-h264.c:287:5: error: unknown type name 'GstWebRTCPriorityType'; did you mean 'GstWebRTCStatsType'?
GstWebRTCPriorityType priority;
^~~~~~~~~~~~~~~~~~~~~
GstWebRTCStatsType
Makefile:8: recipe for target 'webrtc-unidirectional-h264' failed
make: *** [webrtc-unidirectional-h264] Error 1
I am trying the use case on Qualcomm SoC with arm64 architecture. The SW running on Qualcomm SoC is latest Ubuntu Version, which which we get the libsoup error mentioned in #1750 . Due to which, I have created Ubuntu 18.04 based Docker on device and building the example.
Could you please guide me, how I can fix the error..? Is it due to Docker environment.
Thanks and Regards!https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1752Va: Vaav1dec not loaded2023-01-19T15:25:06ZGustavVa: Vaav1dec not loadedWe trying to use the va plugins for video decoding. VaH264, vaH265, vaVP8, vaVP9 works as they should. But vaAv1 is missing. I have tried to use gst-inspect-1.0 to check what is loaded and what is part of the plugin so file.
```
gst-ins...We trying to use the va plugins for video decoding. VaH264, vaH265, vaVP8, vaVP9 works as they should. But vaAv1 is missing. I have tried to use gst-inspect-1.0 to check what is loaded and what is part of the plugin so file.
```
gst-inspect-1.0 --version
gst-inspect-1.0 version 1.20.5
GStreamer 1.20.5
```
```
gst-inspect-1.0 /usr/lib/gstreamer-1.0/libgstva.so /usr/lib/gstreamer-1.0/libgstva.so
Plugin Details:
Name va
Description VA-API codecs plugin
Filename /usr/lib/gstreamer-1.0/libgstva.so
Version 1.20.5
License LGPL
Source module gst-plugins-bad
Source release date 2022-12-19
Binary package GStreamer Bad Plug-ins source release
Origin URL Unknown package origin
vadeinterlace: VA-API Deinterlacer
vah264dec: VA-API H.264 Decoder
vah265dec: VA-API H.265 Decoder
vampeg2dec: VA-API Mpeg2 Decoder
vapostproc: VA-API Video Postprocessor
vavp8dec: VA-API VP8 Decoder
vavp9dec: VA-API VP9 Decoder
7 features:
+-- 7 elements
```
```
gst-inspect-1.0 | grep av1
videoparsersbad: av1parse: AV1 parser
```
```
gst-inspect-1.0 | grep va:
typefindfunctions: video/x-pva: pva
va: vadeinterlace: VA-API Deinterlacer
va: vah264dec: VA-API H.264 Decoder
va: vah265dec: VA-API H.265 Decoder
va: vampeg2dec: VA-API Mpeg2 Decoder
va: vapostproc: VA-API Video Postprocessor
va: vavp8dec: VA-API VP8 Decoder
va: vavp9dec: VA-API VP9 Decoder
```
I checked the source code for the plugin and there are several #if VA_CHECK_VERSION(1, 8, 0) around the av1 code. We have version 2.14. I have checked with grep for strings inside this block of code and they are present in libgstva.so.
```
grep AV1 /usr/lib/gstreamer-1.0/libgstva.so /usr/lib/gstreamer-1.0/libgstva.so
/usr/lib/gstreamer-1.0/libgstva.so:Failed to register AV1 decoder: %s
/usr/lib/gstreamer-1.0/libgstva.so:VAProfileAV1Profile0
/usr/lib/gstreamer-1.0/libgstva.so:VAProfileAV1Profile1
/usr/lib/gstreamer-1.0/libgstva.so:VA-API AV1 Decoder in %s
/usr/lib/gstreamer-1.0/libgstva.so:VA-API AV1 Decoder
/usr/lib/gstreamer-1.0/libgstva.so:VA AV1 decoder
/usr/lib/gstreamer-1.0/libgstva.so:GstVa%sAV1Dec
/usr/lib/gstreamer-1.0/libgstva.so:GstVaAV1Dec
/usr/lib/gstreamer-1.0/libgstva.so:VA-API based AV1 video decoder
/usr/lib/gstreamer-1.0/libgstva.so:Failed to register AV1 decoder: %s
/usr/lib/gstreamer-1.0/libgstva.so:VAProfileAV1Profile0
/usr/lib/gstreamer-1.0/libgstva.so:VAProfileAV1Profile1
/usr/lib/gstreamer-1.0/libgstva.so:VA-API AV1 Decoder in %s
/usr/lib/gstreamer-1.0/libgstva.so:VA-API AV1 Decoder
/usr/lib/gstreamer-1.0/libgstva.so:VA AV1 decoder
/usr/lib/gstreamer-1.0/libgstva.so:GstVa%sAV1Dec
/usr/lib/gstreamer-1.0/libgstva.so:GstVaAV1Dec
/usr/lib/gstreamer-1.0/libgstva.so:VA-API based AV1 video decoder
```
I have also tried to use GST_DEBUG to turn on debug log and checked for any output connected to vaav1 but without any luck.
How do we best debug what is causing vaav1dec to be missing?https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/293Potential memory leak using rsaudioloudnorm2023-01-15T20:22:50Z2snEM6Potential memory leak using rsaudioloudnormHello, I have a pretty simple pipeline that reads videos from S3, performs demuxing, encoding (H.264) and muxes them back to S3. In the process, audio is normalized (loudness) using _rsaudioloudnorm_.
I realized that memory usage keeps ...Hello, I have a pretty simple pipeline that reads videos from S3, performs demuxing, encoding (H.264) and muxes them back to S3. In the process, audio is normalized (loudness) using _rsaudioloudnorm_.
I realized that memory usage keeps growing despite pipeline finishing. If I remove rsaudioloudnorm element, memory goes back to normal.
This is the pipeline:
```
rusotos3src name=s3src ! tee name=t ! queue2 ! decodebin3 name=demuxer \
demuxer. ! queue2 ! videoconvert ! videoflip method=automatic ! videoscale name=videoscaler ! video/x-raw,width={video_width},height={video_height},pixel-aspect-ratio=1/1 ! videoconvert ! x264enc name=h264encoder ! video/x-h264, profile={video_h264_profile} ! queue2 ! muxer. \
demuxer. ! queue2 ! audioconvert ! audioresample ! rsaudioloudnorm loudness-target={audio_normalization_loudness_target} max-true-peak={audio_normalization_max_true_peak} ! audioresample ! audio/x-raw, rate={audio_samplerate} ! audioconvert ! fdkaacenc bitrate={audio_bitrate} ! audio/mpeg,mpegversion=4,rate=48000,channels=2,stream-format=raw,profile=lc,framed=true ! queue2 ! muxer. \
mp4mux name=muxer faststart=true ! rusotos3sink name=s3sink \
t. ! queue2 ! decodebin3 ! videoconvert ! videorate ! video/x-raw,framerate=1/{thumbnail_interval} ! videoflip method=automatic ! videoscale name=thumbnailscaler ! video/x-raw,width={thumbnail_width},height={thumbnail_height},pixel-aspect-ratio=1/1,format=RGB ! jpegenc quality={thumbnail_jpg_quality} ! appsink name=thumbnailsink
```
Variable placeholders seen above are there because I am using Rust bindings.
First tee is for demuxing, encoding, muxing video. Second tee is for thumbnail generation. I removed thumbnail generation tee to see if that was the root cause but no, memory leak only disappears when I remove this bit: `audioresample ! rsaudioloudnorm loudness-target={audio_normalization_loudness_target} max-true-peak={audio_normalization_max_true_peak}`
Gstreamer version: 1.20.5 built from source.
Please, let me know if you need more information.
Thank youhttps://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/436Error when building example "ld: framework not found Cocoa"2023-04-04T09:10:03ZChang Long Zhu JinError when building example "ld: framework not found Cocoa"Hello,
I am trying to build the "gtksink" example by copying and pasting the code, and using the Cargo.toml below:
```toml
[package]
name = "example-rust"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at http...Hello,
I am trying to build the "gtksink" example by copying and pasting the code, and using the Cargo.toml below:
```toml
[package]
name = "example-rust"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
gst_gl = { package = "gstreamer-gl", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", features = ["v1_16"] }
gtk = { git = "https://github.com/gtk-rs/gtk3-rs.git", optional = true}
gdk = { git = "https://github.com/gtk-rs/gtk3-rs", package = "gdk", optional = true }
gio = { git = "https://github.com/gtk-rs/gtk-rs-core.git", package = "gio", optional = true }
gst-gl = { package = "gstreamer-gl", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", optional = true }
gst-gl-egl = { package = "gstreamer-gl-egl", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", optional = true }
gst-gl-wayland = { package = "gstreamer-gl-wayland", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", optional = true }
gst-gl-x11 = { package = "gstreamer-gl-x11", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", optional = true }
gst-app = { package = "gstreamer-app", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" }
gst-pbutils = { package = "gstreamer-pbutils", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" }
gst-play = { package = "gstreamer-play", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", optional = true }
gst-player = { package = "gstreamer-player", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", optional = true }
ges = { package = "gstreamer-editing-services", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", optional = true }
gst-sdp = { package = "gstreamer-sdp", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", optional = true }
gst-rtsp = { package = "gstreamer-rtsp", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", optional = true }
gst-rtsp-server = { package = "gstreamer-rtsp-server", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", optional = true }
gst-allocators = { package = "gstreamer-allocators", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", optional = true }
anyhow = "1.0"
derive_more = "0.99.5"
futures = "0.3"
byte-slice-cast = "1"
cairo-rs = { git = "https://github.com/gtk-rs/gtk-rs-core", features=["use_glib"], optional = true }
pango = { git = "https://github.com/gtk-rs/gtk-rs-core", optional = true }
pangocairo = { git = "https://github.com/gtk-rs/gtk-rs-core", optional = true }
gst = { package = "gstreamer", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" }
gst-base = { package = "gstreamer-base", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" }
gst-video = { package = "gstreamer-video", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" }
gst-audio = { package = "gstreamer-audio", git = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" }
glutin = { version = "0.29", optional = true }
once_cell = "1.0"
image = { version = "0.24", optional = true }
memmap2 = { version = "0.5", optional = true }
memfd = { version = "0.6", optional = true }
uds = { version = "0.2", optional = true }
[target.'cfg(windows)'.dependencies]
windows = { version = "0.43", features=["Win32_Graphics_Direct3D11",
"Win32_Foundation", "Win32_Graphics_Direct3D", "Win32_Graphics_Dxgi",
"Win32_Graphics_Dxgi_Common", "Win32_Graphics_Direct2D",
"Win32_Graphics_Direct2D_Common", "Win32_Graphics_DirectWrite",
"Foundation_Numerics"], optional = true }
[target.'cfg(target_os = "macos")'.dependencies]
#cocoa = "0.24"
core-foundation = "0.9"
[build-dependencies]
gl_generator = { version = "0.14", optional = true }
[features]
default = []
gtksink = ["gtk", "gio"]
gtkvideooverlay = ["gtk", "gdk", "gio"]
gtkvideooverlay-x11 = ["gtkvideooverlay"]
gtkvideooverlay-quartz = ["gtkvideooverlay"]
rtsp-server = ["gst-rtsp-server", "gst-rtsp", "gst-sdp"]
rtsp-server-record = ["gst-rtsp-server", "gst-rtsp", "gio"]
pango-cairo = ["pango", "pangocairo", "cairo-rs"]
overlay-composition = ["pango", "pangocairo", "cairo-rs"]
gl = ["gst-gl", "gl_generator", "glutin"]
gst-gl-x11 = ["dep:gst-gl-x11"]
gst-gl-egl = ["dep:gst-gl-egl"]
gst-gl-wayland = ["dep:gst-gl-wayland"]
allocators = ["gst-allocators", "memmap2", "memfd", "uds"]
# main
[[bin]]
name = "main"
path = "src/main.rs"
# hello_world
[[bin]]
name = "hello_world_1"
path = "src/hello_world/1/main.rs"
[[bin]]
name = "hello_world_2"
path = "src/hello_world/2/main.rs"
[[bin]]
name = "hello_world_3"
path = "src/hello_world/3/main.rs"
[[bin]]
name = "gst_example_1"
path = "src/gst/example_1/main.rs"
[[bin]]
name = "gtksink"
path = "src/gst/gtksink/main.rs"
```
However, I am seeing this issue:
```
= note: ld: framework not found Cocoa
clang: error: linker command failed with exit code 1 (use -v to see invocation)
```
I believe this is an issue with my installation, but I have already uninstalled and reinstalled `XCode command line tool`, and same issue. Is there a flag I can set, or a way to proceed?
Thanks in advance!https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/1003Application after migrating from gstreamer 1.14 to 1.18 fails to load and run...2023-07-01T19:03:09ZalexovaiApplication after migrating from gstreamer 1.14 to 1.18 fails to load and run the pipeline.I have a simple application that connects to rtsp source and gets rgb frame and outputs in sink. The pipeline is described below
`gst-launch-1.0 uridecodebin uri=rtsp://<username>:<password>@<ip_address>/live use-buffering=true name=vx_...I have a simple application that connects to rtsp source and gets rgb frame and outputs in sink. The pipeline is described below
`gst-launch-1.0 uridecodebin uri=rtsp://<username>:<password>@<ip_address>/live use-buffering=true name=vx_source ! queue2 name=queue3 ! videoconvert ! videoscale ! video/x-raw,format=RGB ! appsink name=appsink sync=false emit-signals=true max-buffers=1 drop=true`
The application is run via python3-gst binding inside a docker (debian-buster-slim) with gstreamer 1.14.
The application runs fine and has been running it for about a year now continuously.
Recently I was trying to upgrade the gstreamer from 1.14 -> 1.18. I wanted gstreamer-vaapi to use iHD driver on newer intel machines.
I changed the docker os from debian-buster-slim -> debian-bullseye-slim and reinstalled all the libraries including gstreamer and ffmpeg.
Now my docker had gstreamer-1.18. Here is the installation script I have in the Dockerfile.
`sudo apt-get install -y libgstreamer1.0-0 gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 \
gstreamer1.0-pulseaudio \
python3-gst-1.0 python3-gi`
After this upgrade, my application stopped running and then I started digging into the gstreamer using GST_DEBUG="*:4"
I captured logs from both debian-buster-slim gstreamer 1.14 & debian-bullseye-slim gstreamer 1.18 and after comparing I found that
application when on 1.14 is able to successfully load the libgstudp.so however application in 1.18 doesn't. This ultimately causes the pipeline not to load and run as expected.
I am new to gstreamer and if there is any advice to further debug this issue or have any other pointers please let me know. Thanks
Logs with GST_DEBUG="*:4"
[gst_log_1.14](/uploads/15d46466d4fe1dd2a281dc54ef074f9f/gst_log_1.14)
[gst_log_1.18](/uploads/4cb872e3b3524a3cb067e0b3c096614b/gst_log_1.18)https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/283webrtcsink: Example shows black video screen with no audio2023-04-06T14:40:43ZErik De Rijckewebrtcsink: Example shows black video screen with no audioRunning all steps from the README results in a black screen with no audio on firerfox and chrome. The webrtc logs in firefox remain empty which makes me suspect that no stream is being set up at all (no errors either)
relevant logs:
```...Running all steps from the README results in a black screen with no audio on firerfox and chrome. The webrtc logs in firefox remain empty which makes me suspect that no stream is being set up at all (no errors either)
relevant logs:
```
19:38 $ gst-launch-1.0 webrtcsink name=ws videotestsrc ! ws. audiotestsrc ! ws.
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
Redistribute latency...
0:00:24.4 / 99:99:99.
```
```
19:37 $ WEBRTCSINK_SIGNALLING_SERVER_LOG=debug cargo run --bin gst-webrtc-signalling-server
Skipping git submodule `https://github.com/gtk-rs/gir` due to update strategy in .gitmodules
Skipping git submodule `https://github.com/gtk-rs/gir-files` due to update strategy in .gitmodules
Skipping git submodule `https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git` due to update strategy in .gitmodules
Skipping git submodule `https://github.com/gtk-rs/gir` due to update strategy in .gitmodules
Skipping git submodule `https://github.com/gtk-rs/gir-files` due to update strategy in .gitmodules
Skipping git submodule `https://github.com/gtk-rs/gir` due to update strategy in .gitmodules
Skipping git submodule `https://github.com/gtk-rs/gir-files` due to update strategy in .gitmodules
Finished dev [optimized + debuginfo] target(s) in 0.27s
Running `target/debug/gst-webrtc-signalling-server`
2022-12-27T18:38:08.266282Z INFO ThreadId(01) gst_webrtc_signalling_server: Listening on: 0.0.0.0:8443
2022-12-27T18:38:18.604220Z INFO ThreadId(01) gst_webrtc_signalling_server: Accepting connection from 127.0.0.1:36500
2022-12-27T18:38:18.604357Z DEBUG ThreadId(08) accept_async: gst_plugin_webrtc_signalling::server: new
2022-12-27T18:38:18.604483Z DEBUG ThreadId(08) accept_async: tungstenite::handshake::server: Server handshake done.
2022-12-27T18:38:18.604503Z INFO ThreadId(08) accept_async: gst_plugin_webrtc_signalling::server: New WebSocket connection this_id=6c0989b2-6fd2-4451-b1cd-13ee6e9e797d
2022-12-27T18:38:18.604545Z DEBUG ThreadId(08) accept_async: gst_plugin_webrtc_signalling::server: close time.busy=134µs time.idle=56.1µs
2022-12-27T18:38:18.604579Z INFO ThreadId(08) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"setPeerStatus\",\"roles\":[\"producer\"],\"meta\":null}"))
2022-12-27T18:38:18.604639Z DEBUG ThreadId(08) set_peer_status{peer_id="6c0989b2-6fd2-4451-b1cd-13ee6e9e797d" status=PeerStatus { roles: [Producer], meta: None, peer_id: None }}: gst_plugin_webrtc_signalling::handlers: new
2022-12-27T18:38:18.604659Z INFO ThreadId(08) set_peer_status{peer_id="6c0989b2-6fd2-4451-b1cd-13ee6e9e797d" status=PeerStatus { roles: [Producer], meta: None, peer_id: None }}: gst_plugin_webrtc_signalling::handlers: registered as a producer peer_id=6c0989b2-6fd2-4451-b1cd-13ee6e9e797d
2022-12-27T18:38:18.604668Z DEBUG ThreadId(08) set_peer_status{peer_id="6c0989b2-6fd2-4451-b1cd-13ee6e9e797d" status=PeerStatus { roles: [Producer], meta: None, peer_id: None }}: gst_plugin_webrtc_signalling::handlers: close time.busy=16.8µs time.idle=12.7µs
2022-12-27T18:38:22.381676Z INFO ThreadId(01) gst_webrtc_signalling_server: Accepting connection from 127.0.0.1:53404
2022-12-27T18:38:22.381725Z DEBUG ThreadId(08) accept_async: gst_plugin_webrtc_signalling::server: new
2022-12-27T18:38:22.381846Z DEBUG ThreadId(08) accept_async: tungstenite::handshake::server: Server handshake done.
2022-12-27T18:38:22.381866Z INFO ThreadId(08) accept_async: gst_plugin_webrtc_signalling::server: New WebSocket connection this_id=9c76f765-99ab-4d82-b014-f9f1a9697a36
2022-12-27T18:38:22.381890Z DEBUG ThreadId(08) accept_async: gst_plugin_webrtc_signalling::server: close time.busy=130µs time.idle=36.0µs
2022-12-27T18:38:22.386270Z INFO ThreadId(02) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"setPeerStatus\",\"roles\":[\"listener\"]}"))
2022-12-27T18:38:22.386327Z INFO ThreadId(02) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"list\"}"))
2022-12-27T18:38:22.386380Z DEBUG ThreadId(02) set_peer_status{peer_id="9c76f765-99ab-4d82-b014-f9f1a9697a36" status=PeerStatus { roles: [Listener], meta: None, peer_id: None }}: gst_plugin_webrtc_signalling::handlers: new
2022-12-27T18:38:22.386437Z INFO ThreadId(02) set_peer_status{peer_id="9c76f765-99ab-4d82-b014-f9f1a9697a36" status=PeerStatus { roles: [Listener], meta: None, peer_id: None }}: gst_plugin_webrtc_signalling::handlers: registered as a producer peer_id=9c76f765-99ab-4d82-b014-f9f1a9697a36
2022-12-27T18:38:22.386455Z DEBUG ThreadId(02) set_peer_status{peer_id="9c76f765-99ab-4d82-b014-f9f1a9697a36" status=PeerStatus { roles: [Listener], meta: None, peer_id: None }}: gst_plugin_webrtc_signalling::handlers: close time.busy=39.6µs time.idle=36.4µs
2022-12-27T18:38:22.386486Z DEBUG ThreadId(02) list_producers{peer_id="9c76f765-99ab-4d82-b014-f9f1a9697a36"}: gst_plugin_webrtc_signalling::handlers: new
2022-12-27T18:38:22.386505Z DEBUG ThreadId(02) list_producers{peer_id="9c76f765-99ab-4d82-b014-f9f1a9697a36"}: gst_plugin_webrtc_signalling::handlers: close time.busy=5.89µs time.idle=12.3µs
2022-12-27T18:38:24.487890Z INFO ThreadId(01) gst_webrtc_signalling_server: Accepting connection from 127.0.0.1:53412
2022-12-27T18:38:24.487950Z DEBUG ThreadId(02) accept_async: gst_plugin_webrtc_signalling::server: new
2022-12-27T18:38:24.488120Z DEBUG ThreadId(02) accept_async: tungstenite::handshake::server: Server handshake done.
2022-12-27T18:38:24.488156Z INFO ThreadId(02) accept_async: gst_plugin_webrtc_signalling::server: New WebSocket connection this_id=75179213-2462-4903-863d-960c583011c7
2022-12-27T18:38:24.488176Z DEBUG ThreadId(02) accept_async: gst_plugin_webrtc_signalling::server: close time.busy=173µs time.idle=55.1µs
2022-12-27T18:38:24.498566Z INFO ThreadId(02) gst_plugin_webrtc_signalling::server: Received message Ok(Text("{\"type\":\"startSession\",\"peerId\":\"6c0989b2-6fd2-4451-b1cd-13ee6e9e797d\"}"))
2022-12-27T18:38:24.498616Z DEBUG ThreadId(02) start_session{producer_id="6c0989b2-6fd2-4451-b1cd-13ee6e9e797d" consumer_id="75179213-2462-4903-863d-960c583011c7"}: gst_plugin_webrtc_signalling::handlers: new
2022-12-27T18:38:24.498644Z INFO ThreadId(02) start_session{producer_id="6c0989b2-6fd2-4451-b1cd-13ee6e9e797d" consumer_id="75179213-2462-4903-863d-960c583011c7"}: gst_plugin_webrtc_signalling::handlers: started a session id=838a9e72-d651-4dfb-b730-2259c9f3babe producer_id=6c0989b2-6fd2-4451-b1cd-13ee6e9e797d consumer_id=75179213-2462-4903-863d-960c583011c7
2022-12-27T18:38:24.498662Z DEBUG ThreadId(02) start_session{producer_id="6c0989b2-6fd2-4451-b1cd-13ee6e9e797d" consumer_id="75179213-2462-4903-863d-960c583011c7"}: gst_plugin_webrtc_signalling::handlers: close time.busy=30.4µs time.idle=16.7µs
2022-12-27T18:38:52.387725Z INFO ThreadId(09) gst_plugin_webrtc_signalling::server: Received message Ok(Pong([]))
2022-12-27T18:38:54.500331Z INFO ThreadId(08) gst_plugin_webrtc_signalling::server: Received message Ok(Pong([]))
2022-12-27T18:38:54.500379Z INFO ThreadId(09) gst_plugin_webrtc_signalling::server: Received message Ok(Pong([]))
```
```
4:07 $ python3 -m http.server -d www/
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
127.0.0.1 - - [27/Dec/2022 19:37:10] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [27/Dec/2022 19:37:10] "GET /theme.css HTTP/1.1" 200 -
127.0.0.1 - - [27/Dec/2022 19:37:10] "GET /input.js HTTP/1.1" 200 -
127.0.0.1 - - [27/Dec/2022 19:37:10] "GET /keyboard.js HTTP/1.1" 200 -
127.0.0.1 - - [27/Dec/2022 19:37:10] "GET /webrtc.js HTTP/1.1" 200 -
127.0.0.1 - - [27/Dec/2022 19:37:10] code 404, message File not found
127.0.0.1 - - [27/Dec/2022 19:37:10] "GET /favicon.ico HTTP/1.1" 404 -
127.0.0.1 - - [27/Dec/2022 19:37:29] "GET / HTTP/1.1" 304 -
```
```
Connecting listener webrtc.js:451:13
Received {"type":"welcome","peer_id":"9c76f765-99ab-4d82-b014-f9f1a9697a36"} webrtc.js:382:13
Got welcomed with ID 9c76f765-99ab-4d82-b014-f9f1a9697a36 webrtc.js:396:17
Received {"type":"list","producers":[{"id":"6c0989b2-6fd2-4451-b1cd-13ee6e9e797d","meta":null}]} webrtc.js:382:13
Meta: null webrtc.js:347:13
Received {"type":"peerStatusChanged","roles":["listener"],"meta":null,"peerId":"9c76f765-99ab-4d82-b014-f9f1a9697a36"} webrtc.js:382:13
Our ID: 6b5c74d1-1271-4178-8731-1484fbf4d5ee webrtc.js:209:17
Connecting to server ws://localhost:8443 webrtc.js:93:17
Connecting to the peer webrtc.js:93:17
Connecting 6c0989b2-6fd2-4451-b1cd-13ee6e9e797d webrtc.js:93:17
Received {"type":"welcome","peer_id":"75179213-2462-4903-863d-960c583011c7"} webrtc.js:153:17
Received {"type":"sessionStarted","peerId":"6c0989b2-6fd2-4451-b1cd-13ee6e9e797d","sessionId":"838a9e72-d651-4dfb-b730-2259c9f3babe"} webrtc.js:153:17
Registered with server webrtc.js:93:17
```Mathieu DuponchelleMathieu Duponchellehttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/282webrtcsink: Allow passing own peer_id instead of uuid generated one in signal...2023-01-20T23:48:28ZMaciej Malczykwebrtcsink: Allow passing own peer_id instead of uuid generated one in signalling server accept_async fn.This issue is somehow connected with simmilar one that i created on Github few mothns ago. What i try to find out if is it possible to pass own peer_id to signalling server via meta parameter of webrtcsink plugin. What i found out for no...This issue is somehow connected with simmilar one that i created on Github few mothns ago. What i try to find out if is it possible to pass own peer_id to signalling server via meta parameter of webrtcsink plugin. What i found out for now is that the peer_id (this_id in signalling/src/server/mod.rs) is generated before websocket msg from webrtcsink is red so reading and passing it somewhere in accept_async fn is not possible.
Why i'm doing this? This generated peer_id in signalling server is an identifier in frontend part of app so with known peer_id i will be able to differentiate media streams :smile:
Why i'm not try to rewrite it by myself? Because i have very poor rust knowledge :smile:
Please help if possible.https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/275webrtcsink: called `Option::unwrap()` on a `None` value - webrtcbin request_p...2023-03-17T03:30:48Zpipop_webrtcsink: called `Option::unwrap()` on a `None` value - webrtcbin request_pad_simpleI can't get webrtcsink demo working. I followed the instructions, installed all the dependencies and built successfully, but when I try to open a new descriptor from the web browser, the video area keeps black and I get the following log...I can't get webrtcsink demo working. I followed the instructions, installed all the dependencies and built successfully, but when I try to open a new descriptor from the web browser, the video area keeps black and I get the following log:
```
$ gst-launch-1.0 webrtcsink congestion-control=0 name=ws videotestsrc ! ws. audiotestsrc ! ws.
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
Redistribute latency...
thread 'async-std/runtime' panicked at 'called `Option::unwrap()` on a `None` value', net/webrtc/src/webrtcsink/imp.rs:865:14
stack backtrace:
0: rust_begin_unwind
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:584:5
1: core::panicking::panic_fmt
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/panicking.rs:142:14
2: core::panicking::panic
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/panicking.rs:48:5
3: core::option::Option<T>::unwrap
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/option.rs:775:21
4: gstrswebrtc::webrtcsink::imp::Session::request_webrtcbin_pad
at ./net/webrtc/src/webrtcsink/imp.rs:862:19
5: gstrswebrtc::webrtcsink::imp::WebRTCSink::start_session::{{closure}}
at ./net/webrtc/src/webrtcsink/imp.rs:1668:37
6: core::iter::traits::iterator::Iterator::for_each::call::{{closure}}
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/iter/traits/iterator.rs:828:29
7: core::iter::traits::iterator::Iterator::fold
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/iter/traits/iterator.rs:2414:21
8: core::iter::traits::iterator::Iterator::for_each
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/iter/traits/iterator.rs:831:9
9: gstrswebrtc::webrtcsink::imp::WebRTCSink::start_session
at ./net/webrtc/src/webrtcsink/imp.rs:1665:9
10: gstrswebrtc::webrtcsink::WebRTCSink::start_session
at ./net/webrtc/src/webrtcsink/mod.rs:128:9
11: gstrswebrtc::signaller::imp::Signaller::connect::{{closure}}::{{closure}}
at ./net/webrtc/src/signaller/imp.rs:141:45
12: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/future/mod.rs:91:19
13: <async_std::task::builder::SupportTaskLocals<F> as core::future::future::Future>::poll::{{closure}}
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/async-std-1.12.0/src/task/builder.rs:199:17
14: async_std::task::task_locals_wrapper::TaskLocalsWrapper::set_current::{{closure}}
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/async-std-1.12.0/src/task/task_locals_wrapper.rs:60:13
15: std::thread::local::LocalKey<T>::try_with
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/thread/local.rs:445:16
16: std::thread::local::LocalKey<T>::with
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/thread/local.rs:421:9
17: async_std::task::task_locals_wrapper::TaskLocalsWrapper::set_current
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/async-std-1.12.0/src/task/task_locals_wrapper.rs:55:9
18: <async_std::task::builder::SupportTaskLocals<F> as core::future::future::Future>::poll
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/async-std-1.12.0/src/task/builder.rs:197:13
19: async_executor::Executor::spawn::{{closure}}
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/async-executor-1.5.0/src/lib.rs:139:19
20: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/future/mod.rs:91:19
21: async_task::raw::RawTask<F,T,S>::run
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/async-task-4.3.0/src/raw.rs:511:20
22: async_executor::Executor::run::{{closure}}::{{closure}}
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/async-executor-1.5.0/src/lib.rs:230:21
23: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/future/mod.rs:91:19
24: <futures_lite::future::Or<F1,F2> as core::future::future::Future>::poll
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-lite-1.12.0/src/future.rs:529:33
25: async_executor::Executor::run::{{closure}}
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/async-executor-1.5.0/src/lib.rs:237:31
26: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/future/mod.rs:91:19
27: <futures_lite::future::Or<F1,F2> as core::future::future::Future>::poll
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-lite-1.12.0/src/future.rs:529:33
28: async_io::driver::block_on
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/async-io-1.12.0/src/driver.rs:146:33
29: async_global_executor::reactor::block_on::{{closure}}
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/async-global-executor-2.3.1/src/reactor.rs:3:18
30: async_global_executor::reactor::block_on
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/async-global-executor-2.3.1/src/reactor.rs:12:5
31: async_global_executor::threading::thread_main_loop::{{closure}}::{{closure}}
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/async-global-executor-2.3.1/src/threading.rs:95:17
32: std::thread::local::LocalKey<T>::try_with
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/thread/local.rs:445:16
33: std::thread::local::LocalKey<T>::with
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/thread/local.rs:421:9
34: async_global_executor::threading::thread_main_loop::{{closure}}
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/async-global-executor-2.3.1/src/threading.rs:89:13
35: std::panicking::try::do_call
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:492:40
36: std::panicking::try
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:456:19
37: std::panic::catch_unwind
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panic.rs:137:14
38: async_global_executor::threading::thread_main_loop
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/async-global-executor-2.3.1/src/threading.rs:88:12
39: core::ops::function::FnOnce::call_once
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/ops/function.rs:248:5
```
Web server and signalling server are working fine.
I'm new to Rust and GStreamer code but as far as I can know the panic is produced when the plugin tries to request a webrtc pad. I'm a little lost here, I tried to hardcode the requested pad with "sink_%u", "sink_0" and "sink_1" but I always have the same error. Also that portion of code was not modified since 14 months ago, so I think that there is no problem with the code but with my environment, but I cannot figure out what is the problem, I followed all the steps from this repo, maybe some step is missing.
Thanks all of you for these amazing tools.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1623rpi build problems2022-12-06T23:50:19ZHenning E. Larsenrpi build problemsHi. I want to install the latest stable release (tag 1.20.4) on Raspberry OS (OS is a fresh install. Compile is native)
uname -a => "Linux pi104 5.15.76-v7l+ #1597 SMP Fri Nov 4 12:14:58 GMT 2022 armv7l GNU/Linux"
but the command _meso...Hi. I want to install the latest stable release (tag 1.20.4) on Raspberry OS (OS is a fresh install. Compile is native)
uname -a => "Linux pi104 5.15.76-v7l+ #1597 SMP Fri Nov 4 12:14:58 GMT 2022 armv7l GNU/Linux"
but the command _meson builddir_ fails with the error
_subprojects/gstreamer/gst/parse/meson.build:7:0: ERROR: Program 'flex win_flex' not found or not executable_
Search for this error does not provide an obvious match. In particular why is it referring to "win_..." - no windows around here?
Also in the very beginning a warning is issued: "WARNING: Project targets '>= 0.59' but uses feature introduced in '0.63.0':"
Any idea what I am missing here?
thanks
<details><summary>**First part of the logfile**</summary>
```
Build started at 2022-12-01T20:43:00.881887
Main binary: /usr/bin/python3
Build Options:
Python system: Linux
The Meson build system
Version: 0.64.1
Source dir: /home/heel/gstreamer
Build dir: /home/heel/gstreamer/builddir
Build type: native build
WARNING: Project targets '>= 0.59' but uses feature introduced in '0.63.0': Wrap files with diff_files.
Project name: gstreamer-full
Project version: 1.20.4
Detecting compiler via: cc --version
compiler returned <Popen: returncode: 0 args: ['cc', '--version']>
compiler stdout:
cc (Raspbian 10.2.1-6+rpi1) 10.2.1 20210110
```
</details>
And skipping a lot of logs up to the fatal error:
<details><summary>**Last part of the logfile:**</summary>
```
Program python3 found: YES (/usr/bin/python3)
Dependency bash-completion found: YES 2.11 (cached)
env[PKG_CONFIG_PATH]:
Called `/usr/bin/pkg-config --define-variable=datadir=/usr/local/share --variable=completionsdir bash-completion` -> 0
/usr/local/share/bash-completion/completions
Got pkgconfig variable completionsdir : /usr/local/share/bash-completion/completions
env[PKG_CONFIG_PATH]:
Called `/usr/bin/pkg-config --define-variable=datadir=/usr/local/share --variable=helpersdir bash-completion` -> 0
/usr/local/share/bash-completion/helpers
Got pkgconfig variable helpersdir : /usr/local/share/bash-completion/helpers
Configuring gstconfig.h using configuration
Configuring gstversion.h using configuration
Program glib-mkenums found: YES (overridden)
Program glib-mkenums found: YES (overridden)
Program flex win_flex found: NO
subprojects/gstreamer/gst/parse/meson.build:7:0: ERROR: Program 'flex win_flex' not found or not executable
```
</details>https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1745GStreamer bitrate does not work the same when implemented in C++ compared to ...2023-05-30T16:06:24ZLima LuizGStreamer bitrate does not work the same when implemented in C++ compared to command line get-launch-1.0 (x264enc and omxh264enc)I encountered different behavior with a gstreamer pipelines when implemented in C++ compared to gst-launch-1.0 execution in command line - the problem is with the bitrate property.
The pipeline which used in command line was:
`gst-launc...I encountered different behavior with a gstreamer pipelines when implemented in C++ compared to gst-launch-1.0 execution in command line - the problem is with the bitrate property.
The pipeline which used in command line was:
`gst-launch-1.0 ximagesrc ! autovideoconvert ! x264enc bitrate=800 pass=0 ! video/x-h264, stream-format=byte-stream ! h264parse ! mpegtsmux ! udpsink host=127.0.0.1 port=1234 sync=false`
The C++ implementation is:
```
GstElement* pipeline;
GstElement* appsrc;
GstElement* videoConvert;
GstElement* encoder;
GstElement* encoderCapsFilter;
GstElement* parser;
GstElement* tsmux;
GstElement* udpsink;
pipeline = gst_pipeline_new ("pipeline");
appsrc = gst_element_factory_make ("appsrc", "source");
videoConvert = gst_element_factory_make ("autovideoconvert", "my_video_convertor");
encoder = gst_element_factory_make ("x264enc", "my_encoder");
encoderCapsFilter = gst_element_factory_make("capsfilter", "my_caps");
parser = gst_element_factory_make ("h264parse", "my_parser");
tsmux = gst_element_factory_make ("mpegtsmux", "my_muxer");
udpsink = gst_element_factory_make ("udpsink", "my_udpsink");
/*Configure appsrc*/
g_object_set (G_OBJECT (appsrc), "caps", gst_caps_new_simple ("video/x-raw",
"format", G_TYPE_STRING, "I420",
"width", G_TYPE_INT, width,
"height", G_TYPE_INT, height,
"framerate", GST_TYPE_FRACTION, 25, 1, NULL), NULL);
g_object_set(G_OBJECT(appsrc), "is-live" , true, NULL);
/*Configure videoConvert*/
/*Configure encoder*/
g_object_set(G_OBJECT(encoder), "bitrate" , 800, NULL);
g_object_set(G_OBJECT(encoder), "pass" , 0, NULL);
/*Configure encoder caps*/
g_object_set(G_OBJECT (encoderCapsFilter), "caps", gst_caps_from_string("video/x-h264, stream-format=byte-stream"), NULL);
/*Configure h264parse*/
/*Configure mpegtsmux*/
/*Configure udpsink*/
g_object_set(G_OBJECT(udpsink), "host" , "127.0.0.1", NULL);
g_object_set(G_OBJECT(udpsink), "port" , 1234, NULL);
g_object_set(G_OBJECT(udpsink), "sync" , false, NULL);
// add
gst_bin_add_many(GST_BIN(pipeline),
appsrc,
videoConvert,
encoder,
encoderCapsFilter,
parser,
tsmux,
udpsink,
NULL);
// link
if (!gst_element_link_many(appsrc,
videoConvert,
encoder,
encoderCapsFilter,
parser,
tsmux,
udpsink,
NULL))
{
g_printerr("Elements could not be linked");
}
```
bitrate is set to 800kbps and when testing this pipeline from command line with Wireshark the baudrate results around 800-850kbps which is good, when tested the same pipeline in C++ (to use appsrc instead of ximagesrc) the baudrate results in different and higher bitrate (around 1200-1300kbps),
same results occured with omxh264enc encoder as well with control-rate=2 (CBR mode)
What is missing to reach the same bitrate result when executed through command line? Is there more configuration to be done into the gst elements when implemented in C++?https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/423MacOs M1 Library not loaded: @rpath/libgobject-2.0.0.dylib2022-11-14T16:30:49ZMr.BlackMacOs M1 Library not loaded: @rpath/libgobject-2.0.0.dylibhi, i also had the same problem.
The `cargo build` succeeded.
However, `cargo run ` the following error occurred
- `Library not loaded: @rpath/libgobject-2.0.0.dylib`
```bash
Finished dev [unoptimized + debuginfo] target(s) in 18...hi, i also had the same problem.
The `cargo build` succeeded.
However, `cargo run ` the following error occurred
- `Library not loaded: @rpath/libgobject-2.0.0.dylib`
```bash
Finished dev [unoptimized + debuginfo] target(s) in 18.98s
Running `target/debug/rust_gstream_rtmp`
dyld[21579]: Library not loaded: @rpath/libgobject-2.0.0.dylib
Referenced from: <49FDC051-D944-3BFE-9772-A24BF847CA6C> /Users/ken/codes/rust_project/gstreamer_test_1/rust_gstream_rtmp/target/debug/rust_gstream_rtmp
Reason: tried: '/System/Volumes/Preboot/Cryptexes/OS@rpath/libgobject-2.0.0.dylib' (no such file), '/Users/ken/codes/rust_project/gstreamer_test_1/rust_gstream_rtmp/target/debug/deps/libgobject-2.0.0.dylib' (no such file), '/Users/ken/codes/rust_project/gstreamer_test_1/rust_gstream_rtmp/target/debug/libgobject-2.0.0.dylib' (no such file), '/Users/ken/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libgobject-2.0.0.dylib' (no such file), '/Users/ken/.rustup/toolchains/stable-aarch64-apple-darwin/lib/libgobject-2.0.0.dylib' (no such file), '/Users/ken/lib/libgobject-2.0.0.dylib' (no such file), '/usr/local/lib/libgobject-2.0.0.dylib' (no such file), '/usr/lib/libgobject-2.0.0.dylib' (no such file, not in dyld cache)
[1] 21579 abort cargo run
```
I'm pretty sure I didn't install from `brew`. all installation packages are from official.
```
We recommend using the official GStreamer binaries over Homebrew, especially as GStreamer in Homebrew is [currently broken]
```
Environments : **M1 Mac**
`~/.zshrc`
```bash
export PKG_CONFIG_PATH="/Library/Frameworks/GStreamer.framework/Versions/1.0/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"
export PATH="/Library/Frameworks/GStreamer.framework/Versions/1.0/bin${PATH:+:$PATH}"
```
`GStreamer Version`
```bash
❯ gst-launch-1.0 --version
gst-launch-1.0 version 1.21.1
GStreamer 1.21.1
Unknown package origin
```
`Rust Version`
```bash
❯ rustup -V
rustup 1.25.1 (bb60b1e89 2022-07-12)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: The currently active `rustc` version is `rustc 1.65.0 (897e37553 2022-11-02)`
```
`cargo.toml`
```toml
[package]
name = "rust_gstream_rtmp"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
gstreamer = "0.19.2"
[target.'cfg(target_os = "macos")'.dependencies]
cocoa = "0.24"
```
`main.rs`
```rust
use gstreamer::prelude::*;
mod tutorials_common;
fn tutorial_basic_1() {
// Initialize GStreamer
gstreamer::init().unwrap();
// Build the pipeline
let uri =
"https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm";
let pipeline = gstreamer::parse_launch(&format!("playbin uri={}", uri)).unwrap();
// Start playing
pipeline
.set_state(gstreamer::State::Playing)
.expect("Unable to set the pipeline to the `Playing` state");
// Wait until error or EOS
let bus = pipeline.bus().unwrap();
for msg in bus.iter_timed(gstreamer::ClockTime::NONE) {
use gstreamer::MessageView;
match msg.view() {
MessageView::Eos(..) => break,
MessageView::Error(err) => {
println!(
"Error from {:?}: {} ({:?})",
err.src().map(|s| s.path_string()),
err.error(),
err.debug()
);
break;
}
_ => (),
}
}
// Shutdown pipeline
pipeline
.set_state(gstreamer::State::Null)
.expect("Unable to set the pipeline to the `Null` state");
}
fn main() {
// tutorials_common::run is only required to set up the application environment on macOS
// (but not necessary in normal Cocoa applications where this is set up automatically)
tutorials_common::run(tutorial_basic_1);
}
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/996v4l2h264enc: videotestsrc buffer population gets stalled for 16B aligned buffers2023-05-30T12:53:16ZPrasanthv4l2h264enc: videotestsrc buffer population gets stalled for 16B aligned buffersI am on gstreamer 1.16
I am using an encoder in MMAP mode, of resolution 1920x1080, which kernel allocates the memory which are aligned for 16B basically, the memory allocated will be 1920x**1088**x1.5. While using the pipeline below, t...I am on gstreamer 1.16
I am using an encoder in MMAP mode, of resolution 1920x1080, which kernel allocates the memory which are aligned for 16B basically, the memory allocated will be 1920x**1088**x1.5. While using the pipeline below, the encoder stops waiting for videotestsrc to queue the raw buffers, which videotestsrc won't.
After a few buffers(typically 2 or 3), the videotestsrc stops queuing buffers.** Is there a limitation of videotestsrc dealing with 16B height aligned buffers for non 16B height resolution?** This is seen with default pattern. The pattern 22, 24 works fine.
**Non working pipeline:**
gst-launch-1.0 videotestsrc pattern=0 num-buffers=150 ! video/x-raw, format=NV12, width=1920, height=1080, interlace-mode=progressive, colorimetry=bt601, framerate=30/1 ! v4l2h264enc ! fakesink
**Working pipelines**
gst-launch-1.0 videotestsrc pattern=24 num-buffers=150 ! video/x-raw, format=NV12, width=1920, height=1080, interlace-mode=progressive, colorimetry=bt601, framerate=30/1 ! v4l2h264enc ! fakesink
standard_1080.yuv is yuv file having captured from videotestsrc with pattern 0(default).
gst-launch-1.0 filesrc location=./standard_1080.yuv blocksize=3110400 num-buffers=150 ! video/x-raw, format=NV12, width=1920, height=1080, interlace-mode=progressive, colorimetry=bt601, framerate=30/1 ! v4l2h264enc ! fakesink
This seems to be an issue with buffer alignment. Can anyone please let me know if I can try any parameters with videotestsrc.
Regards,
Prasanthhttps://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/415I have error `Segmentation fault (core dumped)` in alpine2022-10-15T21:00:46ZGolubev MatveiI have error `Segmentation fault (core dumped)` in alpineHello. I will build and run small rust project with gstreamer in alpine docker container
```rust
fn main() {
gst::init().unwrap();
let pipeline = gst::parse_launch("videotestsrc ! fakesink").unwrap();
pipeline.set_state(gst...Hello. I will build and run small rust project with gstreamer in alpine docker container
```rust
fn main() {
gst::init().unwrap();
let pipeline = gst::parse_launch("videotestsrc ! fakesink").unwrap();
pipeline.set_state(gst::State::Playing).unwrap();
let bus = pipeline.bus().unwrap();
for msg in bus.iter_timed(gst::ClockTime::NONE) {
use gst::MessageView;
match msg.view() {
MessageView::Eos(_) => break,
MessageView::Error(err) => {
eprintln!("ERR: {}", err.error());
break;
}
_ => (),
}
}
pipeline.set_state(gst::State::Null).unwrap();
}
```
but i have error at run
```rust
fn main() {
println!("0");
gst::init().unwrap();
println!("1");
...
```
```sh
cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.04s
Running `target/debug/scratch-gstreamer`
0
Segmentation fault (core dumped)
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/980DeviceMonitor no longer provides device.bus_path, device.profile.name2023-07-18T10:46:22Z3snowp7imDeviceMonitor no longer provides device.bus_path, device.profile.nameI revisited an old project and found that building a `device` property value for a `pulsesrc` element no longer worked because device monitor is no longer providing the `device.bus_path` or `device.profile.name` properties on the devices...I revisited an old project and found that building a `device` property value for a `pulsesrc` element no longer worked because device monitor is no longer providing the `device.bus_path` or `device.profile.name` properties on the devices returned from `get_devices`. Is it possible to get these properties through some new method, or, are there other means of getting the same information?https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1487Transcoding results not consistent in repeated calls2022-10-10T20:11:37ZLaukik MujumdarTranscoding results not consistent in repeated callsHello,
I am using gstreamer for a transcoding service that converts audio/video files to WAV files, and use python to do the same. The following is the transcode function that is called repeatedly. We use a custom appsrc/appsink for our ...Hello,
I am using gstreamer for a transcoding service that converts audio/video files to WAV files, and use python to do the same. The following is the transcode function that is called repeatedly. We use a custom appsrc/appsink for our cloud object storage I/O, and _loop.quit() is called whenever we need to abandon the execution in the callbacks we defined. This is the code (with some minor modifications).
def transcode(response, input_oss, output_oss, support8_khz=True):
setup_gstreamer_path()
Gst.init(None)
_loop = GLib.MainLoop()
_appsrc_gen = AppSrcGenerator(response, input_oss)
_appsrc = _appsrc_gen.appsrc
_audioconvert = Gst.ElementFactory.make('audioconvert', 'audio_convert')
_audio_resample = Gst.ElementFactory.make('audioresample', 'audio_resample')
_caps_filter = Gst.ElementFactory.make('capsfilter', 'caps_filter')
_audio_cap_string = f"{AUDIO_STRING} , format={AUDIO_FORMAT} , rate={DEFAULT_SAMPLE_RATE}, channels={CHANNELS}"
_audio_caps = Gst.Caps(_audio_cap_string)
_caps_filter.set_property('caps', _audio_caps)
_encoder = Gst.ElementFactory.make('wavenc', 'wav_enc')
_appsink_gen = AppSinkGenerator(response, output_oss)
_appsink = _appsink_gen.appsink
_decodebin = generate_decodebin(response, _audio_resample, _caps_filter, _loop, support8_khz)
_pipe = generate_pipeline(response, _loop, output_oss)
_pipe.add(_appsrc, _decodebin, _audioconvert,
_audio_resample, _caps_filter, _encoder, _appsink)
_appsrc.link(_decodebin)
_audio_resample.link(_audioconvert)
_audioconvert.link(_caps_filter)
_caps_filter.link(_encoder)
_encoder.link(_appsink)
# start play back and listen to events
_pipe.set_state(Gst.State.PLAYING)
_loop.run()
# cleanup
_pipe.set_state(Gst.State.NULL)
The problem we have is that the files that are transcoded are not exactly the same, which is probably happening because we are not resetting gstreamer properly, because the output files are exactly the same when we restart the python process. It's only when we run the same function more than once (like in a for loop) in the same python process that we see the problem. I tried adding _pipe.run_dispose(), tried doing Gst.init(None) only once but that didn't work either. What is the proper way to ensure that the results of the transcoding pipeline are repeatable? Most sources I saw online only seem to set the pipeline state to null, but that clearly isn't enough.
Thanks