Hi, I have an issue with receiving all printouts produced by an OS process.
I start Gstreamer with Gstreamers’ trace (called gst-shark) to obtain stream information every 1s (f.e. CPU usage, bitrate etc.).
So I open and monitor the Port as follows:
port = Port.open({:spawn, command}, [:binary, :exit_status, {:env, env}])
port |> Port.monitor()
where env is:
env = [
{'GST_DEBUG', 'GST_TRACER:7'},
{'GST_TRACERS',
[
"bitrate(period=1)",
"cpuusage(period=1)",
"framerate(period=1)"
]
|> Enum.reduce(fn x, acc -> acc <> ";" <> x end)
|> to_charlist},
{'GST_SHARK_CTF_DISABLE', 'TRUE'}
]
and the simplified command is:
command = "gst-launch-1.0 v4l2src name=video_source \
! videorate \
! 'video/x-raw,format=YUY2,framerate=30/1,width=1920,height=1080' \
! nvvidconv \
! 'video/x-raw(memory:NVMM),format=NV12' \
! omxh264enc \
bitrate=3000000 \
profile=8 \
preset-level=3 \
! tee \
name=t \
t. \
! queue \
! h264parse name=pre_stream\
! hlssink2 \
playlist-length=0 \
max-files=50000 \
target-duration=3 \
location='./segment%05d.ts' \
playlist-location='./playlist.m3u8'"
I listen to the changes in my managing Genserver:
def handle_info({port, {:data, text_line}}, %{port: port} = state) do
...
end
My problem is that I can see in see the trace being printed out in the terminal (tested both and iex) and I receive certain standard Gstreamer messages like setting the stream start timer, but nothing from the trace.
Am I doing something wrong or the trace doesn’t provide information to the Port?
Thanks