fabled / bmd-tools

Tools to connect and manage Blackmagic Design video equipment with built-in H.264 encoder
MIT License
37 stars 14 forks source link

bmd-streamer to open in another bash/app #4

Closed deedos closed 10 years ago

deedos commented 10 years ago

I 'm trying to send the stream from "atem tvs" to another shell/app and not succeeding so far. Within the same shell, with gstreamer it's working like a charm, for example, for recording the stream:

./bmd-streamer | gst-launch-0.10 -v fdsrc ! 'video/mpegts, systemstream=(boolean)true, packetsize=(int)188' ! queue ! filesink location=/media/dados/bmdtools.ts

I need to open the stream in another shell, How eould I do it ? I tried so far:

./bmd-streamer > /tmp/pipe

and in another shell:

gst-launch-0.10 -v fdsrc /tmp/pipe ! 'video/mpegts, systemstream=(boolean)true, packetsize=(int)188' ! queue ! filesink location=/media/dados/bmdtools.ts

anyway, I tried many ways ans nothiing. Any help would be appreciated.

fabled commented 10 years ago

You could pipe through netcat or other similar tool that converts pipes to sockets. Or pipe to ffmpeg and export the stream as RTP. Though, it might be feasible to add support for unix sockets in the main code - that would allow splitting streams to separate sockets in case one is connecting multiple blackmagic devices.

deedos commented 10 years ago

I have just found gstreamer shmsink and shmsrc . I do not have the atem with me now but this works: gst-launch-0.10 -v videotestsrc ! 'video/x-raw-yuv, format=(fourcc)"I420", framerate=30/1, width=1280, height=720' ! shmsink socket-path=/tmp/test shm-size=10000000 wait-for-connection=0 sync=false

and in other shell gst-launch-0.10 -v shmsrc socket-path=/tmp/test ! 'video/x-raw-yuv, format=(fourcc)"I420", framerate=30/1, width=1280, height=720' ! autovideosink

I 'll try with bmd-streamer when possible and report back.

Thanks Timos

deedos commented 10 years ago

It works with shmsrc and shmsink: ./bmd-streamer | gst-launch-0.10 -v fdsrc ! 'video/mpegts, systemstream=(boolean)true, packetsize=(int)188' ! shmsink socket-path=/tmp/test shm-size=10000000 wait-for-connection=0 sync=false

and

gst-launch-0.10 -v shmsrc socket-path=/tmp/test ! 'video/mpegts, systemstream=(boolean)true, packetsize=(int)188' ! queue ! filesink location=/media/dados/bmdtools-shm.ts

thanks!!