GStreamer issueshttps://gitlab.freedesktop.org/groups/gstreamer/-/issues2021-09-24T13:26:23Zhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/910playbin(3): Disabling video flag has no effect when file has subtitles2021-09-24T13:26:23ZRafał Dzięgielplaybin(3): Disabling video flag has no effect when file has subtitlesDisabling `GST_PLAY_FLAG_VIDEO` does nothing when video has subtitle track enabled. Expected result would be to still see subtitles rendered and no video or nothing at all. Yet, video is still processed and rendered even with video flag ...Disabling `GST_PLAY_FLAG_VIDEO` does nothing when video has subtitle track enabled. Expected result would be to still see subtitles rendered and no video or nothing at all. Yet, video is still processed and rendered even with video flag removed. Same issue in `playbin`, `playbin3` and `gstplay(er)` libs that use playbins internally.
audio(2) + text(4) results with video too:
```sh
gst-launch-1.0 playbin uri=file://video_with_subs.mkv flags=6
```
audio only works correctly and gives no video:
```sh
gst-launch-1.0 playbin uri=file://video_with_subs.mkv flags=2
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/911Rtsp streaming freeze with vlc while using gstreamer 1.16.0 and 1.18.02021-09-24T13:26:23ZNamrata vaishnavRtsp streaming freeze with vlc while using gstreamer 1.16.0 and 1.18.0I am using gstreamer plugin base for rtsp streaming. When i tried streaming with vlc and captured network package i came to know that the previous frame timestamp delta as well as previous frame captured delta is setting zero which shoul...I am using gstreamer plugin base for rtsp streaming. When i tried streaming with vlc and captured network package i came to know that the previous frame timestamp delta as well as previous frame captured delta is setting zero which should be non zero. Is there any way to resolve?https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/893rtph264pay: aggregate-mode=zerolatency does not work with Chrome (2021-09-24T13:34:30ZSebastian Drögertph264pay: aggregate-mode=zerolatency does not work with Chrome (When enabling logs, Chrome prints the following over and over again and nothing else.
```
[406344:15:0604/080643.626376:WARNING:video_rtp_depacketizer_h264.cc(226)] Received packet containing more than 10 NAL units. Will not keep track ...When enabling logs, Chrome prints the following over and over again and nothing else.
```
[406344:15:0604/080643.626376:WARNING:video_rtp_depacketizer_h264.cc(226)] Received packet containing more than 10 NAL units. Will not keep track sps and pps ids for all of them.
[406344:15:0604/080643.950581:WARNING:video_receive_stream2.cc(788)] No decodable frame in 200 ms, requesting keyframe.
```
Sometimes it's displaying a few frames, most of the time it just hangs. `chrome://webrtc-internals` shows that it receives packets, can't decode them and sends PLIs all the time.
This can be reproduced with the webrtc-unidirectional-h264 example with some minor changes to get a very low complexity stream. Using a plain black videotestsrc makes it even worse. Note that you might have to right-click in Chrome, enable controls and then click on the "play" button due to restrictive autoplay rules.
```diff
diff --git a/webrtc/sendonly/webrtc-unidirectional-h264.c b/webrtc/sendonly/webrtc-unidirectional-h264.c
index 593d861..07abceb 100644
--- a/webrtc/sendonly/webrtc-unidirectional-h264.c
+++ b/webrtc/sendonly/webrtc-unidirectional-h264.c
@@ -22,7 +22,7 @@
#ifdef G_OS_WIN32
#define VIDEO_SRC "mfvideosrc"
#else
-#define VIDEO_SRC "v4l2src"
+#define VIDEO_SRC "videotestsrc pattern=ball"
#endif
gchar *video_priority = NULL;
```
Streams with more complexity don't show this problem so much.https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/152Fallbacksrc CustomSource Howto ! Example Needed2021-07-27T05:34:34ZMarkus ObermeierFallbacksrc CustomSource Howto ! Example NeededHi,
I try to get CustomSource of the Fallbacksrc plugin working. However, I am struggling to get everything connected.
Is there a simple RUST example available where I can learn from how to connect everything?
I tried to learn from h...Hi,
I try to get CustomSource of the Fallbacksrc plugin working. However, I am struggling to get everything connected.
Is there a simple RUST example available where I can learn from how to connect everything?
I tried to learn from https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/135, however, it feels like I am missing how to use the GhostPads correctly.
Maybe it's a good starting point for others and you can put it in the examples folder. The example for the fallbackswitch was a really good one.
Please help.
Thanks in advance,
Markushttps://gitlab.freedesktop.org/gstreamer/gst-examples/-/issues/45can't restream rtp(udpsink) to webrtc2021-09-24T22:43:58Zjavad jcan't restream rtp(udpsink) to webrtchi,
this is few days that i try to restream rts h264 stream to webrtc with gstreamer.
i try all of this commend for sent stream over udp <br>
`gst-launch-1.0 videotestsrc ! x264enc ! rtph264pay ! udpsink host=127.0.0.1 port=5000`
or thi...hi,
this is few days that i try to restream rts h264 stream to webrtc with gstreamer.
i try all of this commend for sent stream over udp <br>
`gst-launch-1.0 videotestsrc ! x264enc ! rtph264pay ! udpsink host=127.0.0.1 port=5000`
or this command
`gst-launch-1.0 -v ximagesrc ! video/x-raw,framerate=20/1 ! videoscale ! videoconvert ! x264enc tune=zerolatency bitrate=500 speed-preset=superfast ! rtph264pay ! udpsink host=127.0.0.1 port=5000
`
and try all of this PIPELINE_DESC for restream it over webrtc<br>
`webrtcbin name=sendrecv bundle-policy=max-compat stun-server=stun://stun.l.google.com:19302
udpsrc port=5000 ! application/x-rtp ! rtph264depay ! avdec_h264 ! queue ! videoconvert !
x264enc speed-preset=2 tune=zerolatency ! video/x-h264,framerate=58/1, profile=(string)baseline ! rtph264pay !
queue ! application/x-rtp,media=video,encoding-name=H264,payload=96,gop-size=180 ! sendrecv.`
<br>
or this<br>
<br>
`webrtcbin name=sendrecv bundle-policy=max-compat stun-server=stun://stun.l.google.com:19302
udpsrc port=5000 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" !
parser ! payloader ! sendrecv.`
but in browser stream not played and just stay in Sending SDP answer.<br>
can u help me ?
i do all of this action in sendrecv code example.
thank u.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1601gsth264parser: use SEI messages with bigger size than 0xFF2021-10-13T18:00:24ZMauriciogsth264parser: use SEI messages with bigger size than 0xFF# Issue:
Using the function gst_h264_create_sei_memory_internal of the gsth264parser generates a overflow of 0xFF using a payload_size_data bigger than 0XFF.
# Cause:
gsth264parser has a while process to write 0xFF in the SEI message an...# Issue:
Using the function gst_h264_create_sei_memory_internal of the gsth264parser generates a overflow of 0xFF using a payload_size_data bigger than 0XFF.
# Cause:
gsth264parser has a while process to write 0xFF in the SEI message and subtract 0XFF from the payload_size_data, but right now the while is adding 0XFF to the payload_size_data and the while never ends.
# Proposed fix:
Change the subtraction in the while to subtract 0XFF correctly. To do this it's possible to apply the following changes, the following changes also fix the same issue for the payload_type_data.
<pre>
diff --git a/gst-libs/gst/codecparsers/gsth264parser.c b/gst-libs/gst/codecparsers/gsth264parser.c
index 1c40b6517..22b1e4bca 100644
--- a/gst-libs/gst/codecparsers/gsth264parser.c
+++ b/gst-libs/gst/codecparsers/gsth264parser.c
@@ -3120,14 +3120,14 @@ gst_h264_create_sei_memory_internal (guint8 nal_prefix_size,
/* write payload type bytes */
while (payload_type_data >= 0xff) {
WRITE_UINT8 (&nw, 0xff, 8);
- payload_type_data -= -0xff;
+ payload_type_data -= 0xff;
}
WRITE_UINT8 (&nw, payload_type_data, 8);
/* write payload size bytes */
while (payload_size_data >= 0xff) {
WRITE_UINT8 (&nw, 0xff, 8);
- payload_size_data -= -0xff;
+ payload_size_data -= 0xff;
}
WRITE_UINT8 (&nw, payload_size_data, 8);
</pre>
Should I try to make a pull request?https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/704gstreamer setting state to NULL hangs2022-08-05T01:13:28ZTerrygstreamer setting state to NULL hangsLooks like multiple people have similiar problems but in the gstreamer app when trying to shut down the app, I tried to set the pipeline to NULL and it hangs, never returns from the set_state call.
It looks like one of the elements in m...Looks like multiple people have similiar problems but in the gstreamer app when trying to shut down the app, I tried to set the pipeline to NULL and it hangs, never returns from the set_state call.
It looks like one of the elements in my pipeline is PAUSED, all other elements I looked at are in the PLAYING state.
As a work around I do a exit from the app without cleaning up the pipeline, I also found that sending EOS before the set_state would hang also. It would never return
I am doing my work on a nvidia tx2-4g R32.3.1.
Thanks,
Terryhttps://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/98Playing ALAC files and generating MP4 thumbnails no longer working in version...2022-06-17T19:17:35ZMarc RanolfiPlaying ALAC files and generating MP4 thumbnails no longer working in versions newer than 1.18.3I have Arch Linux and Cinnamon with its default Nemo file manager.
Since upgrading from version 1.18.3 to the 1.18.4 series, I noticed that Gnome-videos (totem) and Rhythmbox would no longer play my ALAC files. In addition, Nemo is unab...I have Arch Linux and Cinnamon with its default Nemo file manager.
Since upgrading from version 1.18.3 to the 1.18.4 series, I noticed that Gnome-videos (totem) and Rhythmbox would no longer play my ALAC files. In addition, Nemo is unable to generate thumbnails for my MP4 video files.
I have isolated this issue by downgrading all gstreamer packages until it was finally resolved by downgrading gst-libav to version [1.18.3-1 from the Arch Linux archive](https://archive.archlinux.org/packages/g/gst-libav/gst-libav-1.18.3-1-x86_64.pkg.tar.zst).
What can possibly be going on and how can I help in debugging this?
Thanks.https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/346AppSinkStream is difficult to use2021-06-08T04:55:31ZAustin BonanderAppSinkStream is difficult to useI'm using Gstreamer to add a watermark to a video and then upload it to a video streaming service using a pipeline that looks something like this:
`appsrc ! decodebin ! rsvgoverlay ! encodebin ! appsink`
where the `appsrc` is being pus...I'm using Gstreamer to add a watermark to a video and then upload it to a video streaming service using a pipeline that looks something like this:
`appsrc ! decodebin ! rsvgoverlay ! encodebin ! appsink`
where the `appsrc` is being pushed data from a stream using `AppSrcSink` and then `AppSinkStream` is pushing data to the streaming service via `reqwest`.
However, I found that `AppSinkStream` will immediately yield `None` unless the `appsink` is actively streaming data (by looking at `AppSink::is_eos()`), which makes it difficult to use because I have to build the Gstreamer pipeline and start pushing to it to get that to start, but I'm doing something like this:
```rust
// build pipeline
// ...
// rsvgoverlay and its following elements aren't linked until `decodebin` emits the `pad-added` signal
tokio::try_join! {
appsrc.sink().send_all(&mut source_stream),
reqwest_client.post("some-url").body(appsink.stream().map(/* convert `Sample` to `bytes::Bytes` */)).send()
}
```
So the result is that the `reqwest` call uploads 0 bytes while the `appsrc` element is still being fed data.
I found a partial solution, to use `tokio::sync::Notify` to make the upload task wait until triggered:
```rust
let data_available = Arc::new(tokio::sync::Notify::new());
tokio::try_join! {
appsrc.sink().send_all(&mut source_stream),
async {
data_available.notified().await;
reqwest_client.post("some-url").body(appsink.stream().map(/* convert `Sample` to `bytes::Bytes` */)).send()
}
}
```
However, I can't find a suitable signal or callback to watch to know when to call `data_available.notify()`.
Connecting to the `pad-linked` signal on `appsink`'s `sink` pad doesn't quite get me there as data hasn't started flowing yet.
I thought of connecting to the notify signal for the `eos` property since I'd expect that to have a true->false transition as data starts being queued, but the code of `appsink` doesn't emit that signal internally.
I can set the `new-sample` callback but that would override what's set by `AppSink::stream()`, although I could just implement my own stream using a channel which wouldn't be too hard and is probably what I'll end up doing.
I could also set `emit-signals: true` connect to the `new-sample` signal but I don't want to take the performance hit (although maybe I could set `emit-signals: false` in the handler so it's only called once? would that break things?).
Any advice here? I don't know what I would change about `AppSinkStream` to make this easier. I think to fix it for my case would require it to always return `Pending` until it actually gets an `eos` callback, but would that be a breaking change to its behavior?https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/705pipeline with pipewiresrc doesn't resume when paused2021-09-25T00:10:07ZDave Patrick Cabertopipeline with pipewiresrc doesn't resume when pausedI am not sure if this is a gstreamer of pipewire issue, but everytime I try to pause it, and resume it doesn't work.
It's weird though that it sometimes works when I remove the caps after pipewiresrc and directly connect it to videoconv...I am not sure if this is a gstreamer of pipewire issue, but everytime I try to pause it, and resume it doesn't work.
It's weird though that it sometimes works when I remove the caps after pipewiresrc and directly connect it to videoconvert.
Here's a minimum code to reproduce it:
"""
import gi
gi.require_version('Gst', '1.0')
gi.require_version('Gtk', '3.0')
from gi.repository import Gst, Gtk
Gst.init(None)
class Window(Gtk.ApplicationWindow):
def __init__(self):
Gtk.ApplicationWindow.__init__(self)
box = Gtk.Box()
self.add(box)
start_b = Gtk.Button(label='Start')
box.pack_start(start_b, True, True, 0)
start_b.connect('clicked', self.start)
pause_b = Gtk.Button(label='Pause')
box.pack_start(pause_b, True, True, 0)
pause_b.connect('clicked', self.pause)
resume_b = Gtk.Button(label='Resume')
box.pack_start(resume_b, True, True, 0)
resume_b.connect('clicked', self.resume)
stop_b = Gtk.Button(label='Stop')
box.pack_start(stop_b, True, True, 0)
stop_b.connect('clicked', self.stop)
def _on_message(self, bus, message):
t = message.type
if t == Gst.MessageType.ERROR:
self.player.set_state(Gst.State.NULL)
err, debug = message.parse_error()
print("Error: %s" % err, debug)
def start(self, _):
self.pipeline = Gst.parse_launch('pipewiresrc path=37 ! video/x-raw,max-framerate=30/1 ! videoconvert ! xvimagesink sync=0')
self.record_bus = self.pipeline.get_bus()
self.handler_id = self.record_bus.connect('message', self._on_message)
self.pipeline.set_state(Gst.State.PLAYING)
def pause(self, _):
self.pipeline.set_state(Gst.State.PAUSED)
def resume(self, _):
self.pipeline.set_state(Gst.State.PLAYING)
def stop(self, _):
self.pipeline.set_state(Gst.State.NULL)
self.record_bus.remove_watch()
self.record_bus.disconnect(self.handler_id)
window = Window()
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()
"""https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/894matroskademux: Attachments undetected when their size exceeds 15MB2021-10-20T08:16:35ZRafał Dzięgielmatroskademux: Attachments undetected when their size exceeds 15MB`matroskademux` element has a defined [`MAX_BLOCK_SIZE` of 15MB](https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/blob/aad9c8a2165b0bbee957c54262391006e81907af/gst/matroska/matroska-demux.c#L5311). Due to how it is handled, it...`matroskademux` element has a defined [`MAX_BLOCK_SIZE` of 15MB](https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/blob/aad9c8a2165b0bbee957c54262391006e81907af/gst/matroska/matroska-demux.c#L5311). Due to how it is handled, it unfortunately breaks attachments detection if their combined size in video exceeds that limit.
Tested on both 1.18 and 1.19 git.https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/347zsh: illegal hardware instruction trying the first tutorial on OSX Big Sur2021-06-23T09:41:03ZMikzsh: illegal hardware instruction trying the first tutorial on OSX Big SurHi !
I am trying to learn gstreamer with the Rust binding. I get a strange error I do&n't explain when I try to build this:
```rust
use gstreamer::prelude::*;
use std::ops::Deref;
fn main() {
println!("début");
gstreamer::init...Hi !
I am trying to learn gstreamer with the Rust binding. I get a strange error I do&n't explain when I try to build this:
```rust
use gstreamer::prelude::*;
use std::ops::Deref;
fn main() {
println!("début");
gstreamer::init().unwrap();
println!("init ok");
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();
println!("pipeline {:?}", pipeline);
pipeline.set_state(gstreamer::State::Playing);
println!("state playing");
let bus = pipeline.get_bus().unwrap();
println!("bus {:?}", bus);
println!("{:?}", bus.timed_pop_filtered(
gstreamer::CLOCK_TIME_NONE,
&[gstreamer::MessageType::Error, gstreamer::MessageType::Eos],
));
if let Some(_msg) = bus.timed_pop_filtered(
gstreamer::CLOCK_TIME_NONE,
&[gstreamer::MessageType::Error, gstreamer::MessageType::Eos],
) { println!("OK"); }
pipeline.set_state(gstreamer::State::Null);
println!("Fin");
}
```
I don't know where the problem come from. But with the output I guess the problem is in `timed_pop_filtered`method:
```
% cargo run
Compiling gstreamer_test v0.1.0 (/Users/mik/Dev/Rust/gstreamer_test)
warning: unused import: `std::ops::Deref`
--> src/main.rs:2:5
|
2 | use std::ops::Deref;
| ^^^^^^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
warning: unused `Result` that must be used
--> src/main.rs:12:5
|
12 | pipeline.set_state(gstreamer::State::Playing);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(unused_must_use)]` on by default
= note: this `Result` may be an `Err` variant, which should be handled
warning: unused `Result` that must be used
--> src/main.rs:24:5
|
24 | pipeline.set_state(gstreamer::State::Null);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: this `Result` may be an `Err` variant, which should be handled
warning: 3 warnings emitted
Finished dev [unoptimized + debuginfo] target(s) in 0.62s
Running `target/debug/gstreamer_test`
début
init ok
pipeline Element { inner: ObjectRef { inner: 0x7fba6b00ca60, type: GstPlayBin } }
state playing
bus Bus { inner: ObjectRef { inner: 0x7fba68815e80, type: GstBus } }
zsh: illegal hardware instruction cargo run
```
Regardshttps://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/895equalizer plugin doesn't seem to be controllable2021-09-24T13:34:31ZMWWorksequalizer plugin doesn't seem to be controllableTrying to attach a control source to the equalizer plugin - the source code suggests the bands values are GST_PARAM_CONTROLLABLE. I'm using python, which hopefully isn't the issue! My code works with the volume plugin:
```
gst_adjust = ...Trying to attach a control source to the equalizer plugin - the source code suggests the bands values are GST_PARAM_CONTROLLABLE. I'm using python, which hopefully isn't the issue! My code works with the volume plugin:
```
gst_adjust = Gst.ElementFactory.make("volume", "adjust")
gst_pipeline.add(gst_adjust)
gst_cs0 = GstController.InterpolationControlSource()
gst_cs0.set_property('mode', GstController.InterpolationMode.LINEAR)
gst_adjust.add_control_binding(GstController.DirectControlBinding.new(gst_adjust,"volume",gst_cs0))
print(gst_cs0.set(0.1*Gst.SECOND,0.2))
```
But not when adjusted to the 3 or 10 band equalizer (I also get a True output, but no audible effect):
```
gst_adjust = Gst.ElementFactory.make("equalizer-3bands", "adjust")
gst_pipeline.add(gst_adjust)
gst_cs0 = GstController.InterpolationControlSource()
gst_cs0.set_property('mode', GstController.InterpolationMode.LINEAR)
gst_adjust.add_control_binding(GstController.DirectControlBinding.new(gst_adjust, "band0", gst_cs0))
print(gst_cs0.set(0.1*Gst.SECOND,0.99))
```
Presetting the property prior to running the pipline works as expected, but obviously not dynamic:
`print(gst_cs0.set(0.1*Gst.SECOND,12))`
I'm not an expert so could be missing something - but it seems that the equalizer should respond to controller changes?https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/153Fallbackswitch: Impossible to configure latency2022-08-30T06:19:26ZReinis MuiznieksFallbackswitch: Impossible to configure latencyWhile running the pipeline I noticed to get a lot of these errors
```
0:11:30.485967162 2014994 0x7fd65c9645e0 ERROR GST_PADS gstpad.c:3424:gst_pad_query_latency_default:<fallback_switch:src> minimum latency bigger than ma...While running the pipeline I noticed to get a lot of these errors
```
0:11:30.485967162 2014994 0x7fd65c9645e0 ERROR GST_PADS gstpad.c:3424:gst_pad_query_latency_default:<fallback_switch:src> minimum latency bigger than maximum latency
0:11:30.485987700 2014994 0x7fd65c9645e0 WARN aggregator src/base/gstaggregator.c:1933:gst_aggregator_query_latency_unlocked:<fallback_switch> warning: Impossible to configure latency: max 0:00:04.999979334 < min 0:00:05.000000000. Add queues or other buffering elements.
```
The difference is 0.020666 milliseconds. The number is so low that to me seems some kind of weird race condition.
```
if (min > max && GST_CLOCK_TIME_IS_VALID (max)) {
GST_ELEMENT_WARNING (self, CORE, CLOCK, (NULL),
("Impossible to configure latency: max %" GST_TIME_FORMAT " < min %"
GST_TIME_FORMAT ". Add queues or other buffering elements.",
GST_TIME_ARGS (max), GST_TIME_ARGS (min)));
return FALSE;
}
```
Is there some settings I have misconfigured?https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/913default value of max-buffers in appsink not match documentation2021-06-09T15:16:32Zdecembersouldefault value of max-buffers in appsink not match documentationIn the Appsink (gst-libs/gst/app/gstappsink.c)
the following define sets the default value of the max_buffers
`#define DEFAULT_PROP_MAX_BUFFERS 0`
In the current doc the value is
`Default value : 10485760 `
https://gstreamer.freedes...In the Appsink (gst-libs/gst/app/gstappsink.c)
the following define sets the default value of the max_buffers
`#define DEFAULT_PROP_MAX_BUFFERS 0`
In the current doc the value is
`Default value : 10485760 `
https://gstreamer.freedesktop.org/documentation/coreelements/queue.html?gi-language=c#propertieshttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/706[gstreamer 1.16] Unable to play MKV content: Resource not found2021-06-10T11:50:41ZKarim[gstreamer 1.16] Unable to play MKV content: Resource not found [the_100_0s_15s.mkv](/uploads/fd786db2e9c5c6d9736e9f529e0de641/the_100_0s_15s.mkv)
I'm experiencing an issue with gstreamer while attempting to play an mkv content.
Using the following pipeline (file or http):
Windows:
`gst-launch-1.... [the_100_0s_15s.mkv](/uploads/fd786db2e9c5c6d9736e9f529e0de641/the_100_0s_15s.mkv)
I'm experiencing an issue with gstreamer while attempting to play an mkv content.
Using the following pipeline (file or http):
Windows:
`gst-launch-1.0 -vvv filesrc location=.\the_100_0s_15s.mkv ! matroskademux ! h265parse ! queue ! avdec_h265 ! queue ! autovideosink`
Linux imx:
`gst-launch-1.0 -vvv filesrc location=.\the_100_0s_15s.mkv ! matroskademux ! h265parse ! queue ! v4l2h265dec! queue ! autovideosink`
Both failed:
```
Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstFileSrc:filesrc0: Resource not found.
Additional debug info:
../subprojects/gstreamer/plugins/elements/gstfilesrc.c(533): gst_file_src_start (): /GstPipeline:pipeline0/GstFileSrc:filesrc0:
No such file ".the_100_0s_15s.mkv"
Setting pipeline to NULL ...
Freeing pipeline ...
```
Please note that the same pipeline works fine with gstreamer 1.18.
I have attached the related content.
Is there a problem with the content ? It also fails with many recent encoded mkv files.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1602plugins-bad: Usb web camera can not work well, and some critical debug infor ...2022-12-07T10:04:06Zkklion zplugins-bad: Usb web camera can not work well, and some critical debug infor is reported by GstreamerOS version: openEuler
gstreamer version:gstreamer1-1.16.2
gstreamer1-plugins-bad-free-1.16.2
gstreamer1-plugins-base-1.16.2
gstreamer1-plugins-good-1.16.2
critical debug info:
...OS version: openEuler
gstreamer version:gstreamer1-1.16.2
gstreamer1-plugins-bad-free-1.16.2
gstreamer1-plugins-base-1.16.2
gstreamer1-plugins-good-1.16.2
critical debug info:
------------------------------
GStreamer-CRITICAL **: 20:26:20.234: gst_sample_set_buffer_list: assertion 'GST_IS_SAMPLE (sample)' failed
GStreamer-CRITICAL **: 20:26:20.234: gst_sample_set_buffer: assertion 'GST_IS_SAMPLE (sample)' failed
GStreamer-CRITICAL **: 20:26:20.234: gst_sample_get_caps: assertion 'GST_IS_SAMPLE (sample)' failed
GStreamer-CRITICAL **: 20:26:20.234: gst_sample_get_buffer: assertion 'GST_IS_SAMPLE (sample)' failed
CRITICAL **: 20:26:20.234: gst_video_info_from_caps: assertion 'caps != NULL' failed
GStreamer-CRITICAL **: 20:26:20.235: gst_mini_object_unref: assertion 'GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0' failed
CRITICAL **: 20:26:20.289: gst_video_frame_map_id: assertion 'GST_IS_BUFFER (buffer)' failed
GStreamer-CRITICAL **: 20:26:20.289: gst_pad_push: assertion 'GST_IS_BUFFER (buffer)' failed
GStreamer-CRITICAL **: 20:26:20.289: gst_element_message_full_with_details: assertion 'GST_IS_ELEMENT (element)' failed
GStreamer-CRITICAL **: 20:26:20.290: gst_mini_object_unref: assertion 'GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0' failed
------------------------------
There is a usb web camera related application which is developped based on gstreamer.
When the application starts, only a static image can be showed in the video windows, and above critical information is reported.
I try to debug and attempt to modify gstreamer1-plugin-bad as attachment patch file, the issue is resolved and the camera works well.
Could U help to debug the issue and please to confirm if the above patch can be applied to gstreamer1-plugin-bad?
thankshttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1603Update NVENC API to version 11.02023-05-30T16:11:29ZAntonio OspiteUpdate NVENC API to version 11.0Hi,
currently the nvenc elements support NVENC API version 9.1:
```
0:00:00.031951941 25312 0x258fcc0 INFO nvenc gstnvenc.c:936:gst_nvenc_load_library: Maximum supported API version by driver: 11.0
0:00:00.031979...Hi,
currently the nvenc elements support NVENC API version 9.1:
```
0:00:00.031951941 25312 0x258fcc0 INFO nvenc gstnvenc.c:936:gst_nvenc_load_library: Maximum supported API version by driver: 11.0
0:00:00.031979879 25312 0x258fcc0 INFO nvenc gstnvenc.c:954:gst_nvenc_load_library: API version 9.1 load done
```
As per https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/blob/master/sys/nvcodec/nvEncodeAPI.h#L113-114
Would it be possible to update the code to access functionalities from API 11.0?
In particular I would eventually be interested in encoding HEVC with an alpha channel as defined in https://developer.apple.com/av-foundation/HEVC-Video-with-Alpha-Interoperability-Profile.pdf which apparently is supported in the Video Codec SDK 11.0, like suggested in https://docs.nvidia.com/video-technologies/video-codec-sdk/nvenc-application-note/index.html#nvenc-capabilities__table-whats-new
I don't have access to the NVIDIA Video Codec SDK but I found a more recent `nvEncodeAPI.h` in https://github.com/johnhe4/nvenc_h265_transparency and I see it has been updated also in https://git.videolan.org/?p=ffmpeg/nv-codec-headers.git
After dropping the updated `nvEncodeAPI.h` over the current one in gst-plugins-bad the code still compiles but there are some deprecation warnings so I'd prefer someone more experienced with nvcodec to take a look, or at least provide some guidance about the update process, cc @seungha.yang
Thanks a lot,
Antoniohttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/154rsaudioloudnorm shows no effect2021-06-16T15:48:45ZRico Beierrsaudioloudnorm shows no effectHi,
I am trying to normalize an audio-clip for gstreamer editing services (ges); but it seems not to work.
```rust
let clp_audio = UriClip::new(&format!("file://test.flac"))?;
clp_audio.set_start(time);
clp_audio.add(&Effect::new("volu...Hi,
I am trying to normalize an audio-clip for gstreamer editing services (ges); but it seems not to work.
```rust
let clp_audio = UriClip::new(&format!("file://test.flac"))?;
clp_audio.set_start(time);
clp_audio.add(&Effect::new("volume volume=0.5 ! volume volume=0.5")?)?; // turn volume down
clp_audio.add(&Effect::new("audioresample ! rsaudioloudnorm ! audioresample ! capsfilter caps=audio/x-raw,rate=48000")?)?; // should be louder afterwards, but rsaudioloudnorm has no effect
l.add_clip(&clp_audio)?;
```https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3038rtpac3depay: source caps only allow "audio/ac3", not "audio/x-ac3"2023-10-19T14:25:47ZAbleBaconrtpac3depay: source caps only allow "audio/ac3", not "audio/x-ac3"The sink caps for `rtpac3pay` (the AC3 payloader) have both `audio/ac3` and `audio/x-ac3`:
```
SINK template: 'sink'
Availability: Always
Capabilities:
audio/ac3
audio/x-ac3
```
The source caps for `rtpac3depay` (t...The sink caps for `rtpac3pay` (the AC3 payloader) have both `audio/ac3` and `audio/x-ac3`:
```
SINK template: 'sink'
Availability: Always
Capabilities:
audio/ac3
audio/x-ac3
```
The source caps for `rtpac3depay` (the AC3 depayloader) only allow `audio/ac3`:
```
SRC template: 'src'
Availability: Always
Capabilities:
audio/ac3
```
The source caps for the depayloader (`rtpac3depay`) should also include `audio/x-ac3`. The capability for `audio/x-ac3` is important because the FFMPEG AC3 plugins only accept `audio/x-ac3`, not `audio/ac3`. Also, conceptually, the depayloader should be able to reverse any payloading that the payloader does.