GStreamer issues.

2017-08-21 Thread Johnson via Digitalmars-d-learn

I can't get the example to work(although slightly modified).

The installed version of GStreamer is 1.12.2
The file is: D:\temp\test.ogg
Loading
Setting to PLAYING.
Running.
XError: Could not demultiplex stream. dbug: gstoggdemux.c(4418): 
gst_ogg_demux_find_chains (): 
/GstPipeline:audio-player/GstOggDemux:ogg-parser:

can't get first chain

Actually I was getting a much worse error before ;/ I can't 
remember it now.



The installed version of GStreamer is 1.12.2
The file is: D:\temp\test2.wav
Loading
Setting to PLAYING.
Running.
XError: Internal data stream error. dbug: gstwavparse.c(2249): 
gst_wavparse_loop (): 
/GstPipeline:audio-player/GstWavParse:wav-parser:

streaming stopped, reason not-linked (-1)

Basically all I did was change the sink:

sink = ElementFactory.make("autoaudiosink", "auto-output");

So it I could get past the error about alsa. I think the last 
name doesn't matter?


I downloaded the gstreamer binaries from their site, had some 
issues with a few of the dll's complaining about gxx errors, I 
removed them(h264, soundtouch, tag).



For the wav I changed
//parser = ElementFactory.make("oggdemux", "ogg-parser");
//decoder = ElementFactory.make("vorbisdec", "vorbis-decoder");
parser = ElementFactory.make("wavparse", "wav-parser");
decoder = ElementFactory.make("audioconvert", "wav-decoder");


which, is all i could find on line, I don't know if it's right at 
all.



Ultimately I want to be able to read somewhat arbitrary audio 
formats(most common at least), get the raw channel data(samples 
for each channel), play/pause/stop with good accuracy(no latency 
or low latency(<20ms), possibly do some pitch shifting and basic 
mixing(EQ, limiting, panning, etc), and eventually play some 
videos.


Is GstreamerD going to be useful for this or so I look in to 
using ffmpeg directly and do some of the stuff(e.g., eq) myself?


Thanks.


Re: GStreamer issues.

2017-08-22 Thread Mike Wey via Digitalmars-d-learn

On 22-08-17 02:13, Johnson wrote:

I can't get the example to work(although slightly modified).

The installed version of GStreamer is 1.12.2
The file is: D:\temp\test.ogg
Loading
Setting to PLAYING.
Running.
XError: Could not demultiplex stream. dbug: gstoggdemux.c(4418): 
gst_ogg_demux_find_chains (): 
/GstPipeline:audio-player/GstOggDemux:ogg-parser:

can't get first chain

Actually I was getting a much worse error before ;/ I can't remember it 
now.



The installed version of GStreamer is 1.12.2
The file is: D:\temp\test2.wav
Loading
Setting to PLAYING.
Running.
XError: Internal data stream error. dbug: gstwavparse.c(2249): 
gst_wavparse_loop (): /GstPipeline:audio-player/GstWavParse:wav-parser:

streaming stopped, reason not-linked (-1)

Basically all I did was change the sink:

 sink = ElementFactory.make("autoaudiosink", "auto-output");

So it I could get past the error about alsa. I think the last name 
doesn't matter?


I downloaded the gstreamer binaries from their site, had some issues 
with a few of the dll's complaining about gxx errors, I removed 
them(h264, soundtouch, tag).



For the wav I changed
 //parser = ElementFactory.make("oggdemux", "ogg-parser");
 //decoder = ElementFactory.make("vorbisdec", "vorbis-decoder");
 parser = ElementFactory.make("wavparse", "wav-parser");
 decoder = ElementFactory.make("audioconvert", "wav-decoder");


which, is all i could find on line, I don't know if it's right at all.


Ultimately I want to be able to read somewhat arbitrary audio 
formats(most common at least), get the raw channel data(samples for each 
channel), play/pause/stop with good accuracy(no latency or low 
latency(<20ms), possibly do some pitch shifting and basic mixing(EQ, 
limiting, panning, etc), and eventually play some videos.


Is GstreamerD going to be useful for this or so I look in to using 
ffmpeg directly and do some of the stuff(e.g., eq) myself?


Thanks.


The Gstreamer demo should use an `playbin` instead of explicitly setting 
the pipeline, Like this: 
https://github.com/gtkd-developers/GtkD/blob/master/demos/gstreamer/helloworld/gstreamer_helloworld.d


This way gstreamer will detect the file type, i don't know if it helps 
with the errors.


--
Mike Wey


Re: GStreamer issues.

2017-08-22 Thread Johnson via Digitalmars-d-learn

On Tuesday, 22 August 2017 at 15:15:41 UTC, Mike Wey wrote:

On 22-08-17 02:13, Johnson wrote:

I can't get the example to work(although slightly modified).

The installed version of GStreamer is 1.12.2
The file is: D:\temp\test.ogg
Loading
Setting to PLAYING.
Running.
XError: Could not demultiplex stream. dbug: 
gstoggdemux.c(4418): gst_ogg_demux_find_chains (): 
/GstPipeline:audio-player/GstOggDemux:ogg-parser:

can't get first chain

Actually I was getting a much worse error before ;/ I can't 
remember it now.



The installed version of GStreamer is 1.12.2
The file is: D:\temp\test2.wav
Loading
Setting to PLAYING.
Running.
XError: Internal data stream error. dbug: 
gstwavparse.c(2249): gst_wavparse_loop (): 
/GstPipeline:audio-player/GstWavParse:wav-parser:

streaming stopped, reason not-linked (-1)

Basically all I did was change the sink:

 sink = ElementFactory.make("autoaudiosink", 
"auto-output");


So it I could get past the error about alsa. I think the last 
name doesn't matter?


I downloaded the gstreamer binaries from their site, had some 
issues with a few of the dll's complaining about gxx errors, I 
removed them(h264, soundtouch, tag).



For the wav I changed
 //parser = ElementFactory.make("oggdemux", 
"ogg-parser");
 //decoder = ElementFactory.make("vorbisdec", 
"vorbis-decoder");
 parser = ElementFactory.make("wavparse", 
"wav-parser");
 decoder = ElementFactory.make("audioconvert", 
"wav-decoder");



which, is all i could find on line, I don't know if it's right 
at all.



Ultimately I want to be able to read somewhat arbitrary audio 
formats(most common at least), get the raw channel 
data(samples for each channel), play/pause/stop with good 
accuracy(no latency or low latency(<20ms), possibly do some 
pitch shifting and basic mixing(EQ, limiting, panning, etc), 
and eventually play some videos.


Is GstreamerD going to be useful for this or so I look in to 
using ffmpeg directly and do some of the stuff(e.g., eq) 
myself?


Thanks.


The Gstreamer demo should use an `playbin` instead of 
explicitly setting the pipeline, Like this: 
https://github.com/gtkd-developers/GtkD/blob/master/demos/gstreamer/helloworld/gstreamer_helloworld.d


This way gstreamer will detect the file type, i don't know if 
it helps with the errors.


Thanks, that works!

Could you address some of my concerns:

1. I need to be able to get the raw data, is this easily possible 
with gstreamer?


2. It's quite a big package 600mb+ total and about 150 for the 
bin and 150 for the lib. Eventually I want to support android, 
this seems quite excessive for it. I'm not familiar with 
Gstreamer though and maybe most of that space is "junk". It seems 
people use it already on android so I'm not too worried, I 
imagine it can be customized?


3. Does Gstreamer/D provide any type of EQ, pitch shifting, 
stretching, etc?


4. Do you have any idea why the original code would work? I ask 
because maybe in the future I'll need to use it for other 
purposes and don't wanna hit a brick wall.


Note that I'm completely new to gstreamer and only learned of it 
through gtkD... so some of these might be basic questions. I'm 
just trying to find something simple to use but is robust so I 
don't waste time learning an api that isn't going to really do 
what I need. I was plan on using portaudio and ffmpeg, but 
ffmpegD doesn't really seem to work(old bindings I guess). I also 
had trouble with portaudio not playing any sound, but haven't 
spent much time with it to why.


Gstreamer, with your updated example, works though. Just not sure 
how far of a leap I'll have to make to get it working the way I 
need in my app.






Re: GStreamer issues.

2017-08-23 Thread Mike Wey via Digitalmars-d-learn

On 22-08-17 21:28, Johnson wrote:


Thanks, that works!

Could you address some of my concerns:

1. I need to be able to get the raw data, is this easily possible with 
gstreamer?


2. It's quite a big package 600mb+ total and about 150 for the bin and 
150 for the lib. Eventually I want to support android, this seems quite 
excessive for it. I'm not familiar with Gstreamer though and maybe most 
of that space is "junk". It seems people use it already on android so 
I'm not too worried, I imagine it can be customized?


3. Does Gstreamer/D provide any type of EQ, pitch shifting, stretching, 
etc?


4. Do you have any idea why the original code would work? I ask because 
maybe in the future I'll need to use it for other purposes and don't 
wanna hit a brick wall.


Note that I'm completely new to gstreamer and only learned of it through 
gtkD... so some of these might be basic questions. I'm just trying to 
find something simple to use but is robust so I don't waste time 
learning an api that isn't going to really do what I need. I was plan on 
using portaudio and ffmpeg, but ffmpegD doesn't really seem to work(old 
bindings I guess). I also had trouble with portaudio not playing any 
sound, but haven't spent much time with it to why.


Gstreamer, with your updated example, works though. Just not sure how 
far of a leap I'll have to make to get it working the way I need in my app.





I'm not all to familiar with GStreamer, i'll answer as best as i can.

1. Probably.

2. ~700MB of static libraries for android, i don't know how much of that 
would be linked into you executable, but personally i would find that a 
bit excessive space wise for an android app.


3. Maybe.

4. In the original demo the pipeline was set up manually, this gives you 
full control over the pipeline, but you do need to know what you are 
doing. It wont work when using the wrong Elements, source, or destination.



--
Mike Wey