GStreamer issueshttps://gitlab.freedesktop.org/groups/gstreamer/-/issues2021-10-19T23:48:38Zhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1482wasapisink: Using WASAPI breaks drag and drop in music player2021-10-19T23:48:38ZJonas Kvingewasapisink: Using WASAPI breaks drag and drop in music playerAfter starting and stopping playback in my music player, it is no longer possible to rearrange songs by drag and drop in the playlist when using WASAPI as output.
I don't know if this is a Qt bug, or gstreamer bug, but the problem only o...After starting and stopping playback in my music player, it is no longer possible to rearrange songs by drag and drop in the playlist when using WASAPI as output.
I don't know if this is a Qt bug, or gstreamer bug, but the problem only occurs on Windows when using
WASAPI as output so I suspect the WASAPI plugin is doing something incorrectly, possibly calling CoUninitialize too many times. Same problems occurs both with Qt 5.15.2 and Qt 6.0.0.
This problem occurs with or without my patch for issue https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1481.
This can be seen using the builds from: https://builds.strawberrymusicplayer.org/windows/
Steps to reproduce:
1. Attempt to rearrange songs in the playlist by dragging and dropping them, you can see that it works fine.
2. Go to tools / settings / backend, set output to WASAPI.
3. Start playback of a song.
4. Stop playback.
5. Attempt to rearrange songs in the playlist by dragging and dropping them, it no longer works.
6. Restart the program.
7. Go to tools / settings / backend, set output to direct sound.
8. Repeat the same procedure, and you can see that it now works even after starting and stopping playback.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1481wasapisink: Playback fails when calling gst_element_set_state in a concurrent...2021-02-06T00:41:11ZJonas Kvingewasapisink: Playback fails when calling gst_element_set_state in a concurrent threadWhen using gst_element_set_state in a concurrent thread it fails because of a missing CoInitializeEx() in gst_wasapi_util_get_device_enumerator, so initial playback fails.
I added the following patch to gstwsapiutil.c which seem to fix i...When using gst_element_set_state in a concurrent thread it fails because of a missing CoInitializeEx() in gst_wasapi_util_get_device_enumerator, so initial playback fails.
I added the following patch to gstwsapiutil.c which seem to fix it, but I'm not entirely sure if this is correct:
```
diff --git a/sys/wasapi/gstwasapiutil.c b/sys/wasapi/gstwasapiutil.c
index 1111111..2222222 100644
--- a/sys/wasapi/gstwasapiutil.c
+++ b/sys/wasapi/gstwasapiutil.c
@@ -311,10 +311,14 @@ gst_wasapi_util_get_device_enumerator (GstObject *
self)
HRESULT hr;
IMMDeviceEnumerator *enumerator = NULL;
+ HRESULT hr_coinit = CoInitializeEx (NULL, COINIT_MULTITHREADED);
+
hr = CoCreateInstance (&CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL,
&IID_IMMDeviceEnumerator, (void **) &enumerator);
HR_FAILED_RET (hr, CoCreateInstance (MMDeviceEnumerator), NULL);
+ if (hr_coinit == S_OK || hr_coinit == S_FALSE) CoUninitialize();
+
return enumerator;
}
```https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/issues/293intel HD 5500 VA-API not work2020-12-16T18:54:02ZGhost Userintel HD 5500 VA-API not workdoes not work with **export GST_VAAPI_ALL_DRIVERS=1**
Gstreamer is uptated to **1.18.2**
as a matter of order I preferred to post the data in a text file[info-debug](/uploads/ca3eb815eb84aecf605a0bc55bc4f288/info-debug)
![Schermata_d...does not work with **export GST_VAAPI_ALL_DRIVERS=1**
Gstreamer is uptated to **1.18.2**
as a matter of order I preferred to post the data in a text file[info-debug](/uploads/ca3eb815eb84aecf605a0bc55bc4f288/info-debug)
![Schermata_da_2020-12-12_21-41-39](/uploads/42a8628250d20047f18d89499175eb14/Schermata_da_2020-12-12_21-41-39.png)https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/302video/x-raw(memory:NVMM) from gst::Caps::new_simple error2020-12-12T08:55:05ZRyan Brigdenvideo/x-raw(memory:NVMM) from gst::Caps::new_simple errorI am trying to create a plugin (called `frameselect`) that will pass a video frame from a `nvv4ldecoder` element to a `nvv4lh264enc` based on the value of a custom metadata on the buffer. The transform method simply returns `Ok(gst_base:...I am trying to create a plugin (called `frameselect`) that will pass a video frame from a `nvv4ldecoder` element to a `nvv4lh264enc` based on the value of a custom metadata on the buffer. The transform method simply returns `Ok(gst_base::BASE_TRANSFORM_FLOW_DROPPED)` if the metadata specifies (by a bool field) that the buffer should not be passed to the encoder.
Given that the `src` caps of `nvv4ldecoder` are
```
SRC template: 'src'
Availability: Always
Capabilities:
video/x-raw(memory:NVMM)
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
```
And the caps I specify in my plugin through `gst::Caps::new_simple` are
```rust
let caps = gst::Caps::new_simple(
"video/x-raw(memory:NVMM)",
&[
("width", &gst::IntRange::<i32>::new(0, i32::MAX)),
("height", &gst::IntRange::<i32>::new(0, i32::MAX)),
(
"framerate",
&gst::FractionRange::new(
gst::Fraction::new(0, 1),
gst::Fraction::new(i32::MAX, 1),
),
),
],
);
```
I get this error
```
0:00:00.468243547 7033 0x55d5222ee600 DEBUG GST_PLUGIN_LOADING gstpluginfeature.c:116:gst_plugin_feature_load: loaded plugin frameselect
0:00:00.468256890 7033 0x55d5222ee600 INFO GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "frameselect" named "frameselect"
0:00:00.468271715 7033 0x55d5222ee600 DEBUG GST_ELEMENT_PADS gstelement.c:302:gst_element_base_class_init: type GstBaseTransform : factory (nil)
0:00:00.468284816 7033 0x55d5222ee600 DEBUG basetransform gstbasetransform.c:322:gst_base_transform_class_init: gst_base_transform_class_init
0:00:00.468301529 7033 0x55d5222ee600 DEBUG GST_ELEMENT_PADS gstelement.c:302:gst_element_base_class_init: type FrameSelect : factory 0x55d5225214e0
0:00:00.468318759 7033 0x55d5222ee600 WARN structure gststructure.c:197:gst_structure_validate_name: Invalid character '(' at offset 11 in structure name: video/x-raw(memory:NVMM)
```
I have tried setting the `sink` caps to `video/x-raw`, but the pads will fail to link due to intersection failure.
[On nvidia forums](https://forums.developer.nvidia.com/t/using-x-raw-memory-nvmm-in-gstreamer-program/42654), some have suggested using `gst_caps_from_string` instead of `gst_caps_new_simple`. This seems to be an issue on nvidia's end, but I would appreciate some advice on getting this to work in gstreamer-rs.https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/136fallbacksrc: Continuous toggling between fallback_av and main input on `resta...2023-04-04T09:07:37ZAbdul Rehmanfallbacksrc: Continuous toggling between fallback_av and main input on `restart-on-eos` enabledThe video plays fine at the start and then on eos it switches to fallback, but the `position` query on the ui stops frequently as if the source is continuously switching between main input and fallback. The same can be observed in the lo...The video plays fine at the start and then on eos it switches to fallback, but the `position` query on the ui stops frequently as if the source is continuously switching between main input and fallback. The same can be observed in the logs.
[custom.diff](/uploads/996eb4b68625cd07c4ba4528dbfa9c93/custom.diff)
[gst.log](/uploads/6769bff8c51762e7e3b56730be7ef4ba/gst.log)
[gtk_parsebin_fallbacksrc.rs](/uploads/a5254af0cb2ab40af8ae4baa02101bea/gtk_parsebin_fallbacksrc.rs)https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/847decodebin3: sending gst_event_new_select_streams() freezes GUI thread under c...2020-12-11T19:07:49ZDaniel Handojodecodebin3: sending gst_event_new_select_streams() freezes GUI thread under certain conditionsI'll try to describe the conditions of the bug as best I can. I'm using gst-plugins-base 1.16.2 and gstreamer 1.16.2 in a Qt application. My pipeline is based on playbin3. I'm playing a short 3.8 second mp4 video. playbin3 automagically ...I'll try to describe the conditions of the bug as best I can. I'm using gst-plugins-base 1.16.2 and gstreamer 1.16.2 in a Qt application. My pipeline is based on playbin3. I'm playing a short 3.8 second mp4 video. playbin3 automagically creates a decodebin3 for my video, which contains a GstParseBin with a QTDemux element connected to a GstMultiQueue. Code from QTDemux is being run in a background thread periodically; I assume this is to process and render video frames, or "samples". According to gst debug logs, the mp4 video I'm playing is composed of 1 segment, which is broken into 114 samples. After the 114th sample is processed, the background thread declares that "All streams are EOS" and attempts to "drain" all streams. I don't know what this means.
The first half of this bug requires us to pause the pipeline right after the 114th sample is processed, but before the background thread can see there isn't a 115th sample and begin processing GST_EVENT_EOS. If you pause right at that moment, the background thread will continue working anyway, processing GST_EVENT_EOS, then block for some reason on a line in GstMultiQueue (apparently waiting for the queue to not be full). The background thread seems to be blocked indefinitely until the player returns to the PLAYING state.
The second half this bug is trying to send gst_event_new_select_streams() while the background thread is paused. The background thread, on its way to inspecting the multiqueue, acquires a lock for the decodebin3 bin object. This lock is needed by the GUI thread to send gst_event_new_select_streams() apparently, so the GUI thread blocks too, waiting for the background thread to release the lock. This is the entirety of the bug. I believe GStreamer needs to gracefully handle receiving gst_event_new_select_streams() while the video is paused and in this state. It should not freeze the GUI thread.
Attached is a stack trace with personal comments analyzing the lockup issue. Unfortunately, the window of time in which pausing causes this issue is really narrow so I wasn't able to create a concise working example. I personally use brute force and multiple video player instances (~30) playing short videos on loop being paused all at once to reproduce the issue.
[gdb.txt](/uploads/74c6bdadb1ed4e4fe723b5430b01ff5f/gdb.txt)https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/640gstinfo: clang complains about nonstring literal passsed to g_vasprintf2022-09-13T20:40:16ZJordan Petridіsgstinfo: clang complains about nonstring literal passsed to g_vasprintfWhen building a static build of GStreamer with `-Dgst_debug=false` the following warning occurs.
```
[52/455] Compiling C object gst/libgstreamer-1.0.a.p/gstinfo.c.o
FAILED: gst/libgstreamer-1.0.a.p/gstinfo.c.o
clang -Igst/libgstreamer...When building a static build of GStreamer with `-Dgst_debug=false` the following warning occurs.
```
[52/455] Compiling C object gst/libgstreamer-1.0.a.p/gstinfo.c.o
FAILED: gst/libgstreamer-1.0.a.p/gstinfo.c.o
clang -Igst/libgstreamer-1.0.a.p -Igst -I../gst -I. -I.. -Igst/parse -I../gst/parse -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -Xclang -fcolor-diagnostics -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Werror -O2 -g -fvisibility=hidden -fno-strict-aliasing -DG_DISABLE_DEPRECATED -Wno-unused -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wundef -Wwrite-strings -Wformat -Wformat-nonliteral -Wformat-security -Wold-style-definition -Winit-self -Wmissing-include-dirs -Waddress -Waggregate-return -Wno-multichar -Wdeclaration-after-statement -Wvla -Wpointer-arith -fPIC -pthread -DHAVE_CONFIG_H -DGST_STATIC_COMPILATION -D_GNU_SOURCE -DG_LOG_DOMAIN=g_log_domain_gstreamer -DGST_DISABLE_DEPRECATED -DBUILDING_GST -MD -MQ gst/libgstreamer-1.0.a.p/gstinfo.c.o -MF gst/libgstreamer-1.0.a.p/gstinfo.c.o.d -o gst/libgstreamer-1.0.a.p/gstinfo.c.o -c ../gst/gstinfo.c
../gst/gstinfo.c:2523:30: error: format string is not a string literal [-Werror,-Wformat-nonliteral]
len = g_vasprintf (result, clean_format, args);
^~~~~~~~~~~~
1 error generated.
[65/455] Compiling C object gst/libgstreamer-1.0.a.p/gstpad.c.o
```
Which complains about this code block https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/80f671207afc4086ca54117a99a51d9b4e750559/gst/gstinfo.c#L2494-2532
```c
/* Need this for _gst_element_error_printf even if GST_REMOVE_DISABLED is set:
* fallback function that cleans up the format string and replaces all pointer
* extension formats with plain %p. */
#ifdef GST_DISABLE_GST_DEBUG
int
__gst_info_fallback_vasprintf (char **result, char const *format, va_list args)
{
gchar *clean_format, *c;
gsize len;
if (format == NULL)
return -1;
clean_format = g_strdup (format);
c = clean_format;
while ((c = strstr (c, "%p\a"))) {
if (c[3] < 'A' || c[3] > 'Z') {
c += 3;
continue;
}
len = strlen (c + 4);
memmove (c + 2, c + 4, len + 1);
c += 2;
}
while ((c = strstr (clean_format, "%P"))) /* old GST_PTR_FORMAT */
c[1] = 'p';
while ((c = strstr (clean_format, "%Q"))) /* old GST_SEGMENT_FORMAT */
c[1] = 'p';
len = g_vasprintf (result, clean_format, args);
g_free (clean_format);
if (*result == NULL)
return -1;
return len;
}
#endif
```
Of all the configurations we build this is only detected by ~~static~~ (happens with all buildtypes) builds with Clang (only tried 9.0+) while `gst_debug` is disabled. Though it would have been expected such code to trigger on every build.
To reproduce its enough to do the following from a gst checkout
```bash
export CC=clang
export CXX=clang++
meson _build \
--default-library=static \
-Dgst_debug=false \
-Dwerror=true \
-Dintrospection=disabled \
-Ddoc=disabled
ninja -C _build
```
Any ideas what to do about this? It seems like we are in the wrong with the string substitution even though we are trying to sanitize it. Although I am a very very novice with C stuff in general.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1480intervideosrc with msdkvpp dmabuf output pipeline is failing.2020-12-13T13:47:51ZLim Siew Hoonintervideosrc with msdkvpp dmabuf output pipeline is failing.Commmand:
gst-launch-1.0 videotestsrc ! video/x-raw,format=NV12,width=1280,height=960 ! msdkvpp ! video/x-raw,format=NV12,width=1280,height=800 ! intervideosink channel=frontvideosink async=false render-delay=5000000 max-lateness=5000000...Commmand:
gst-launch-1.0 videotestsrc ! video/x-raw,format=NV12,width=1280,height=960 ! msdkvpp ! video/x-raw,format=NV12,width=1280,height=800 ! intervideosink channel=frontvideosink async=false render-delay=5000000 max-lateness=5000000
gst-launch-1.0 -v intervideosrc channel=frontvideosink ! msdkvpp ! 'video/x-raw, format=NV12' ! msdkh264enc ! video/x-h264, stream-format=byte-stream ! queue ! h264parse ! rtph264pay ! udpsink clients=10.1.1.101:3000 sync=false
-> ok, can run.
gst-launch-1.0 -v intervideosrc channel=frontvideosink ! msdkvpp ! 'video/x-raw(memory:DMABuf), format=NV12' ! msdkh264enc ! video/x-h264, stream-format=byte-stream ! queue ! h264parse ! rtph264pay ! udpsink clients=10.1.1.101:3000 sync=false
-> fail and exit.
This is error:
ERROR: from element /GstPipeline:pipeline0/GstInterVideoSrc:intervideosrc0: Internal data stream error.
Additional debug info:
../libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop (): /GstPipeline:pipeline0/GstInterVideoSrc:intervideosrc0:
streaming stopped, reason not-negotiated (-4)
Check step into gst_inter_video_src_fixate function and do dump caps string before exit the function:
msdkvpp with dmabuf output:
gst_inter_video_src_fixate: exit: desc : video/x-raw, format=(string)I420, width=(int)320, height=(int)240, framerate=(fraction)30/1, interlace-mode=(string){ progressive, interleaved, mixed }
msdkvpp without dmabuf output:
gst_inter_video_src_fixate: exit: desc : video/x-raw, format=(string)NV12, width=(int)320, height=(int)240, framerate=(fraction)30/1, interlace-mode=(string)progressive
Inside the gst_inter_video_src_fixate at https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/blob/master/gst/inter/gstintervideosrc.c#L501
It should be do check using 'interlace-mode' and do set it to progressive.
Without specific msdkvpp output is dmabuf memory, I can see it passing it already set interlace-mode as progressive. That why I didn't see the pipeline is failing at here.
gst-plugins-bad : master
OS: Ubuntu 18.04https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/301Rust bindings for custom metadata API2020-12-09T16:14:58ZRyan BrigdenRust bindings for custom metadata APIIs there an example of adding Rust bindings for a custom GstMeta API written in C/glib with only the headers on hand? Is this feasible?
My custom GstMeta follows the API as specified in [the plugin development documentation](https://gst...Is there an example of adding Rust bindings for a custom GstMeta API written in C/glib with only the headers on hand? Is this feasible?
My custom GstMeta follows the API as specified in [the plugin development documentation](https://gstreamer.freedesktop.org/documentation/plugin-development/advanced/allocation.html?gi-language=c#api-example).
Thanks!https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/846basetextoverlay: GL pipeline with multiple overlays renders only the first one2022-02-10T18:00:47ZPhilippe Normandbasetextoverlay: GL pipeline with multiple overlays renders only the first one```
gst-launch-1.0 videotestsrc ! textoverlay text="text1" valignment="top" font-desc="sans bold 30" \
! textoverlay text="text2" halignment="right" font-desc="sans bold 30" \
! tex...```
gst-launch-1.0 videotestsrc ! textoverlay text="text1" valignment="top" font-desc="sans bold 30" \
! textoverlay text="text2" halignment="right" font-desc="sans bold 30" \
! textoverlay text="text3" halignment="left" font-desc="sans bold 30" ! glupload ! gtkglsink
```
Current result: ![Screenshot_from_2020-12-09_11-22-57](/uploads/e1c455da44538f24362ba57b78891c02/Screenshot_from_2020-12-09_11-22-57.png)
Expected result: ![Screenshot_from_2020-12-09_11-21-27](/uploads/b88754ea100b7e5e87eed0fbf9b170c5/Screenshot_from_2020-12-09_11-21-27.png)
This is happening because the overlay compositor handles one overlay composition meta per frame, but textoverlay adds a new meta per upstream meta found, so in this pipeline the final video frame has 3 composition metas, each new one storing duplicate infos of the previous.
I have a patch removing redundant metas, will send an MR...https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg/-/issues/23Incompatibility with x264 as a subproject2020-12-09T00:52:04ZMatthew Watersmatthew@centricular.comIncompatibility with x264 as a subprojectIf x264 is built as a subproject (from gst-plugins-ugly) then ffmpeg attempts to use said subproject as a regular dependency object in some cases which very much fails with:
```
||Run-time dependency libwebpmux found: NO (tried pkgconfi...If x264 is built as a subproject (from gst-plugins-ugly) then ffmpeg attempts to use said subproject as a regular dependency object in some cases which very much fails with:
```
||Run-time dependency libwebpmux found: NO (tried pkgconfig and cmake)
||Dependency x264 found: YES 0.157.2945+49 (cached)
|
|../subprojects/FFmpeg/meson.build:1596:10: Exception: Dependencies must be external dependencies
Subproject gst-libav is buildable: NO (disabling)
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1479d3d11videosink: leaking handles2021-06-03T15:50:03ZFredrik Pålssond3d11videosink: leaking handlesSorry for pasting gstreamer-sharp code here, but that is what I am capable of at the moment. I guess this should be easily translated.
It seems doing rapid state changes (that is not so elegant, but still), d3d11videosink leaks a USER o...Sorry for pasting gstreamer-sharp code here, but that is what I am capable of at the moment. I guess this should be easily translated.
It seems doing rapid state changes (that is not so elegant, but still), d3d11videosink leaks a USER object/handle on each itteration. If the sample is expanded to have the sink render on a usercontrol (via VideoOverlayAdapter) it also leaks a GDI object/handle.
This does not happen with d3dvideosink or glimagesink.
```
private void Setup()
{
_pipeline = (Pipeline)Parse.Launch("videotestsrc ! d3d11videosink");
_pipeline.SetState(State.Playing);
timer.Interval = 2000;
timer.Start();
}
private void timer_Tick(object sender, EventArgs e)
{
_pipeline.SetState(State.Null);
_pipeline.SetState(State.Playing);
}
```https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/639How to determine what PLUGINDIR is used in installed package?2020-12-09T07:01:09ZPetr MaliarovHow to determine what PLUGINDIR is used in installed package?Hi,
I found that gstregistry is trying to find plugins in PLUGINDIR, as I understand that can be defined during a build, correct? https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/master/gst/gstregistry.c#L1692
Is there any way t...Hi,
I found that gstregistry is trying to find plugins in PLUGINDIR, as I understand that can be defined during a build, correct? https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/master/gst/gstregistry.c#L1692
Is there any way to get what PLUGINDIR was set for a build?https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/issues/126Selecting an audio stream with select-tracks-for-object signal has no effect2022-03-22T17:08:41ZChris WineSelecting an audio stream with select-tracks-for-object signal has no effectI am using GStreamer 1.18.1 on Windows mingw x64. The issue is that I'm attempting to use the select-tracks-for-object signal on GESTimeline to choose 1 from among 4 mono audio streams in my test file, but no matter which audio stream is...I am using GStreamer 1.18.1 on Windows mingw x64. The issue is that I'm attempting to use the select-tracks-for-object signal on GESTimeline to choose 1 from among 4 mono audio streams in my test file, but no matter which audio stream is chosen at runtime, only the first one is ever included in the output. I've put together some sample code that reproduces the issue. On line 34, changing the target_stream should select between the various audio streams (but doesn't currently). Make sure to set line 122 to the location of the video file.
[main.cpp](/uploads/72eb713ceff855ba87e4b728eaab7514/main.cpp)
[1080i-_4_Ch_1-Dialogue_2-Nat_3-Music_4-Tone_30sec.mxf](/uploads/517e5823bc94c90e7fff7a064fa9cb18/1080i-_4_Ch_1-Dialogue_2-Nat_3-Music_4-Tone_30sec.mxf)https://gitlab.freedesktop.org/gstreamer/gst-examples/-/issues/25webrtc: `webrtc-unidirectional-h264.c` sample can't work without STUN server2020-12-09T13:21:02ZAdam Hlavatovicwebrtc: `webrtc-unidirectional-h264.c` sample can't work without STUN serverHello I'm trying to get `gst-examples/webrtc/sendonly/webrtc-unidirectional-h264.c` sample working without STUN server so I've modified GST pipeline and removed `stun-server` webrtcbin property and then also modified JS part of the solut...Hello I'm trying to get `gst-examples/webrtc/sendonly/webrtc-unidirectional-h264.c` sample working without STUN server so I've modified GST pipeline and removed `stun-server` webrtcbin property and then also modified JS part of the solution this way
```js
const config = { 'iceServers': [] };
playStream(vidstream, null, null, null, config, function (errmsg) { console.error(errmsg); });
```
but the sample is not working even both unidirectional and the page runs on the same machine. Can unidirectional sample work without STUN server ?
I'm using 1.16.2 libgstreamer1.0-0 package from Ubuntu 20.04 LTS.https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/812gstreamer does not recognize audio when file exceeds 120+s2020-12-08T07:28:57ZIngo Reimanngstreamer does not recognize audio when file exceeds 120+sHi,
i got a strange problem, when exporting videos from Davince Resolve: As long as the file stays below 120s, the audio stream is discovered (gst-discoverer, totem, ...) After that, the audio track seems to vanish. ffmpeg still sees it,...Hi,
i got a strange problem, when exporting videos from Davince Resolve: As long as the file stays below 120s, the audio stream is discovered (gst-discoverer, totem, ...) After that, the audio track seems to vanish. ffmpeg still sees it, vlc may play the file, where totem stays silent. I did not check out the definite magic value - it lies between 121 and 140 seconds:
Source video is GoPro Footage with 59.97fps
```
reimann@Anor:~$ gst-discoverer-1.0 /media/tirith/Backups/Resolve/LonghornRide.mov
Analyzing file:///media/tirith/Backups/Resolve/LonghornRide.mov
Done discovering file:///media/tirith/Backups/Resolve/LonghornRide.mov
Topology:
container: Quicktime
video: MPEG-4 Video (Simple Profile)
Properties:
Duration: 0:02:20.089950000
Seekable: yes
Live: no
Tags:
Video-Codec: MPEG-4 video
Maximale Bitrate: 127364840
Bitrate: 127364840
Sprachcode: en
Anwendungsname: Blackmagic Design DaVinci Resolve
QT atom: buffer of 33 bytes
Containerformat: Quicktime
```
A shorter version shows like:
```
eimann@Anor:~$ gst-discoverer-1.0 /media/tirith/Backups/Resolve/LonghornRide-120s.mov
Analyzing file:///media/tirith/Backups/Resolve/LonghornRide-120s.mov
Done discovering file:///media/tirith/Backups/Resolve/LonghornRide-120s.mov
Topology:
container: Quicktime
audio: Rohes 16-Bit PCM Audio
video: MPEG-4 Video (Simple Profile)
Properties:
Duration: 0:02:00.136683333
Seekable: yes
Live: no
Tags:
Audio-Codec: Raw LPCM audio
Sprachcode: en
Bitrate: 1536002
Anwendungsname: Blackmagic Design DaVinci Resolve
QT atom: buffer of 33 bytes
Containerformat: Quicktime
Video-Codec: MPEG-4 video
Maximale Bitrate: 128203029
```
Where ffpmeg finds:
```
reimann@Anor:~$ ffprobe /media/tirith/Backups/Resolve/LonghornRide.mov
ffprobe version 4.2.4-1ubuntu0.1 Copyright (c) 2007-2020 the FFmpeg developers
built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)
[...]
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/media/tirith/Backups/Resolve/LonghornRide.mov':
Metadata:
major_brand : qt
minor_version : 512
compatible_brands: qt
encoder : Blackmagic Design DaVinci Resolve
Duration: 00:02:20.09, start: 0.000000, bitrate: 128903 kb/s
Stream #0:0(eng): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p(bt709/bt709/unknown), 1920x1080 [SAR 1:1 DAR 16:9], 127364 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 60k tbc (default)
Metadata:
handler_name : VideoHandler
encoder : MPEG4 Video
timecode : 01:00:00:00
Stream #0:1(eng): Audio: pcm_s16le (lpcm / 0x6D63706C), 48000 Hz, stereo, s16, 1536 kb/s (default)
Metadata:
handler_name : SoundHandler
Stream #0:2(eng): Data: none (tmcd / 0x64636D74)
Metadata:
handler_name : TimeCodeHandler
timecode : 01:00:00:00
```
Attached is a 4s (Award winning-) Clip ![LonghornRide-4s](/uploads/6dea627c16861f9c87424268e705811c/LonghornRide-4s.mov)
Also here a low-quality export of full length ![LonghornRide-lowq](/uploads/3b8e8eb3032cf01b201cccd4c9fdc0bd/LonghornRide-lowq.mov)
I am running 1.16.2 on ubuntu20.04, the problem had been the same on 18.04
best regards,
Ingohttps://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/300player: Return type nullability is wrong on quite a few (enum/flag) methods2021-09-21T08:48:22ZMarijn Suijtenplayer: Return type nullability is wrong on quite a few (enum/flag) methodsFrom https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/630#note_719812
When !630 + https://github.com/gtk-rs/gir/pull/991 land `gstreamer-player` gets quite a few new functions that incorrectly return `Option<...>`....From https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/630#note_719812
When !630 + https://github.com/gtk-rs/gir/pull/991 land `gstreamer-player` gets quite a few new functions that incorrectly return `Option<...>`.
We have decided to not waste time finding and overriding those in `Gir.toml` but instead "wait" for someone to do another nullability pass on the C code and annotations. After all @slomo initially thought it was ready, so it can't be too far off :pray: :fingers_crossed:https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/811splitmuxsink: Hang sometime2023-06-08T15:55:35ZTrương Thanh Quảngsplitmuxsink: Hang sometimeMy pipeline is as following:
```
**pi@SOM-RK3399v2:/mnt/ssd/temp$** gst-launch-1.0 -e splitmuxsink name=mp4muxer streamable=true max-size-time=10000000000 location=/mnt/ssd/temp/captureall_%03d.mp4 v4l2src device=/dev/video10 io-mode=2...My pipeline is as following:
```
**pi@SOM-RK3399v2:/mnt/ssd/temp$** gst-launch-1.0 -e splitmuxsink name=mp4muxer streamable=true max-size-time=10000000000 location=/mnt/ssd/temp/captureall_%03d.mp4 v4l2src device=/dev/video10 io-mode=2 ! image/jpeg,width=1280, height=720, framerate=30/1, format=NV12 ! jpegdec ! tee name=teecam0 teecam0. ! queue max-size-time=30000 max-size-bytes=0 max-size-buffers=0 leaky=2 ! mpph264enc ! h264parse ! queue max-size-time=30000 max-size-bytes=0 max-size-buffers=0 leaky=2 ! mp4muxer.video v4l2src device=/dev/video12 io-mode=2 ! image/jpeg,width=1280, height=720, framerate=30/1, format=NV12 ! jpegdec ! tee name=teecam1 teecam1. ! queue max-size-time=30000 max-size-bytes=0 max-size-buffers=0 leaky=2 ! mpph264enc ! h264parse ! queue max-size-time=30000 max-size-bytes=0 max-size-buffers=0 leaky=2 ! mp4muxer.video_aux_0 teecam0. ! queue ! videoconvert ! autovideosink sync=false teecam1. ! queue ! videoconvert ! autovideosink sync=false pulsesrc device="alsa_input.usb-TAKSTAR_TAKSTAR_BM-621USB_Microphone-00.analog-mono" ! audioconvert ! tee name=teemicrophone1 ! audioresample ! avenc_aac ! queue ! aacparse ! queue max-size-time=30000 max-size-bytes=0 max-size-buffers=0 leaky=2 ! mp4muxer.audio_0 teemicrophone1. ! queue ! level name=miclevelname1 message=true ! fakesink sync=false pulsesrc device="alsa_input.usb-TAKSTAR_TAKSTAR_BM-621USB_Microphone-00.analog-mono.2" ! audioconvert ! tee name=teemicrophone2 ! audioresample ! avenc_aac ! queue ! aacparse ! queue max-size-time=30000 max-size-bytes=0 max-size-buffers=0 leaky=2 ! mp4muxer.audio_1 teemicrophone2. ! queue ! level name=miclevelname2 message=true ! fakesink sync=false
Setting pipeline to PAUSED ...
mpi: mpp version: 0b701fe author: Lawrence-Tang DEBIAN: prepare for release_20171218-3
mpp_rt: NOT found ion allocator
mpp_rt: found drm allocator
mpi: mpp version: 0b701fe author: Lawrence-Tang DEBIAN: prepare for release_20171218-3
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
Redistribute latency...
New clock: GstPulseSrcClock
Redistribute latency...
h264e_api: h264e_config MPP_ENC_SET_RC_CFG bps 3456000 [3240000 : 3672000]
h264e_api: h264e_config MPP_ENC_SET_RC_CFG bps 3456000 [3240000 : 3672000]
0:00:00.0 / 99:99:99.
```
It got stuck sometimes.
Log splitmuxsink is in attachment.
Plugin version: 1.19.0.1
Please help. Thanks!
[splitmuxsink.log](/uploads/7e8361385b8829233b070f388dc6a4c1/splitmuxsink.log)https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/299video: Add bindings for gst_video_meta_get_plane_height() and gst_video_meta_...2020-12-03T16:00:07ZSebastian Drögevideo: Add bindings for gst_video_meta_get_plane_height() and gst_video_meta_get_plane_size()https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/135fallbacksrc: Parsebin support2021-06-04T11:48:58ZAbdul Rehmanfallbacksrc: Parsebin supportWhat would be required in order to be able to use `parsebin` with `fallbacksrc`?
I tried `souphttpsrc location="http://localhost/output.webm"! parsebin` and I was expecting `audio` `video` pads on `pad-added` signal but that doesn't hap...What would be required in order to be able to use `parsebin` with `fallbacksrc`?
I tried `souphttpsrc location="http://localhost/output.webm"! parsebin` and I was expecting `audio` `video` pads on `pad-added` signal but that doesn't happen, and I get `not-linked` error on `souphttpsrc`. However, if I don't set location property, and enable_audio/enable_video to true, I get raw audio/video pads which is expected.