fabled / bmd-tools Goto Github PK
View Code? Open in Web Editor NEWTools to connect and manage Blackmagic Design video equipment with built-in H.264 encoder
License: MIT License
Tools to connect and manage Blackmagic Design video equipment with built-in H.264 encoder
License: MIT License
You forgot to add the f options at bmd-streamer.c@1297:
Should be:
static const char short_options[] = "vk:K:a:P:L:bcBCF:f:S:x:Rs";
/TS
Hi,
Thanks a lot for your work and this pretty nice peace of software !
I was able to use it during my tests with a camera in 1080i50 on a macmini under Debian Jessie.
Everything was running smoothly.
unfortunately for the production i use another camera which is using 1080p30, 1080p25, or 720p60 and bmd-streamer doesn't seem to manage those format or am i wrong ?
Input Mode, 0xff (display mode 0x02) not supported
or
Input Mode, 0x8e (display mode 0x09) not supported
really too bad. Do you plan to make your soft support other formats ?
thanks a lot
Hi. I did suceed to us extract the firmware and execute the binary with sudo, which retunrs me:
sudo ./bmd-streamer
[1/4 1edb:bd52]: device connected
EP8: 8 bytes: 00 08 05 0e 8d 6f 46 c3
EP8: 36 bytes: 00 24 05 0e 8d bb b1 40 05 0e 8e 08 1b bd 05 0e 8e 54 86 3f 05 0e 8e a0 f0 c4 06 01 8e cf be 01 05 02 05 81
[1/4 1edb:bd52]: FX2Status: Idle (5)
[1/4 1edb:bd52]: MAC address 7c:2e:0d:02:1b:43
[1/4 1edb:bd52]: Input Mode, 0x81 (display mode 0x0b) not supported
EP8: 8 bytes: 00 08 05 0e 8f 1b fc c0
EP8: 8 bytes: 00 08 05 0e 8f 68 67 3b
EP8: 8 bytes: 00 08 05 0e 8f b4 d1 c2
EP8: 8 bytes: 00 08 05 0e 90 01 3c 3d
and goes on.. So:
Thanks in advance
Thank you for bmd-tools, it's very useful for me. Could you please add releases for it?
I compiled bmd-tools under Debian Jessie 64 bits.
when i first launch bmd-streamer it seems ok. But when i stop it and launch again it can be a pain to make it work again. Seem to launch but nothing happens. I often have to unplug from USB and power supply to make it work again... like there were some memory effect or cache.
If I run bmd-streamer as normal user, I get the following error:
[1/11 1edb:bd43]: unable to open device: LIBUSB_ERROR_ACCESS
With sudo (or as root user) everyhting is fine. Do you have any advice how to overcome this issue? Thank you!
I don't know if this is an issue with bmd-streamer or the hardware, but looks like that at 1080p/60 it's unable to work when -B is passed to it, I was seeing mostly "H56 Error. Restarting device.". It is supposed to warn me, or just now allow this? Or is this related to other settings (my full line was /usr/local/bin/bmd-streamer -f /usr/lib/firmware -k 1000 -S hdmi)?
hi,
i test your bmd-tools with h.264 recorder and when i set HDMI input to 1080p i got the message:
display mode 0x0f) not supported
The whole output looks like this:
EP8: 31 bytes: 00 1f 06 01 0c 6d d0 aa 05 02 04 01 02 05 90 02 07 04 02 06 09 09 08 0c 6d d1 d3 00 00 00 00
[26/4 1edb:bd43]: FX2Status: Idle (5)
[26/4 1edb:bd43]: MAC address 00:00:00:00:00:00
[26/4 1edb:bd43]: Input Mode, 0x90 (display mode 0x0f) not supported
As far as i can see is that 0x90 seems, 1080p60 and for this mode the display struct seems to be missing,
static struct display_mode *display_modes[DMODE_MAX]
...
So, i think i have to add this display-mode into bmd-streamer.c.
ic struct display_mode *display_modes[DMODE_MAX] = {
[DMODE_1920x1080p_60] = &(struct display_mode){
.description = "1080p 60",
.width = 1920, .height = 1080, .interlaced = 0,
.fps_numerator = 25, .fps_denominator = 1, .fx2_fps = 0x3,
.ain_offset = 0x0000,
.r1000 = ??????????,
.r147x =??????????,
.r154x = ??????????},
},
Currently i do not understand yet how to add other display-modes. Can you give me some hints or how i can send you more infos about the pro recorder device?
Atem Studio is working fine, also the firm. extraction works on both.
thx for any help.
Hi. Could you give us further compiling instructions ?
I had erros with libusb.h and after changing the header location it found other problems with libusb.
thanks and congrats for the code (many linux users with atem will love and use that!)
I'm trying to connect camera to h.264 usb card and I get this error
display mode: 0x04; not supported
Here is the dump
Hi, first of all I have to congratulate for your interesting tools.
Now the question:
How can I get the settings (.r1000......) for an unsupported display_modes[ ] ?
I would like to have /* DMODE_720x576i_30 / what is the usual PAL and for / DMODE_720x480i_29_97 */ what is the usual NTSC.
Could you help me to find them ?
Thanks in advance and best regards.
TS
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.
I guess I've installed everything needed regarding libusb. First with apt-get and then by building libusbx. But this is what I get by executing make.
user01@user01:/tmp/bmd-tools$ make/tmp/bmd-tools$
gcc -g -O3 -I/usr/local/include/libusb-1.0 -L/usr/local/lib -lusb-1.0 -lpthread -lm bmd-streamer.c -o bmd-streamer
bmd-streamer.c: In function ‘mpegparser_parse’:
bmd-streamer.c:325:8: warning: ignoring return value of ‘write’, declared with attribute warn_unused_result [-Wunused-result]
write(STDOUT_FILENO, &buf[i], 0xbc);
^
/tmp/ccJRMa1A.o: In function bmd_encoder_stop': /home/user01/tmp/bmd-tools/bmd-streamer.c:786: undefined reference to
libusb_control_transfer'
/home/user01/tmp/bmd-tools/bmd-streamer.c:790: undefined reference to libusb_control_transfer' /home/user01/tmp/bmd-tools/bmd-streamer.c:795: undefined reference to
libusb_control_transfer'
/home/user01/tmp/bmd-tools/bmd-streamer.c:801: undefined reference to libusb_control_transfer' /tmp/ccJRMa1A.o: In function
bmd_pump_mpegts':
/home/user01/tmp/bmd-tools/bmd-streamer.c:468: undefined reference to libusb_bulk_transfer' /home/user01/tmp/bmd-tools/bmd-streamer.c:478: undefined reference to
libusb_error_name'
/tmp/ccJRMa1A.o: In function handle_hotplug': /home/user01/tmp/bmd-tools/bmd-streamer.c:981: undefined reference to
libusb_get_device_descriptor'
/home/user01/tmp/bmd-tools/bmd-streamer.c:983: undefined reference to libusb_get_device_address' /home/user01/tmp/bmd-tools/bmd-streamer.c:983: undefined reference to
libusb_get_bus_number'
/home/user01/tmp/bmd-tools/bmd-streamer.c:985: undefined reference to libusb_ref_device' /home/user01/tmp/bmd-tools/bmd-streamer.c:992: undefined reference to
pthread_create'
/home/user01/tmp/bmd-tools/bmd-streamer.c:999: undefined reference to pthread_detach' /home/user01/tmp/bmd-tools/bmd-streamer.c:995: undefined reference to
libusb_unref_device'
/tmp/ccJRMa1A.o: In function bmd_fujitsu_read': /home/user01/tmp/bmd-tools/bmd-streamer.c:404: undefined reference to
libusb_control_transfer'
/tmp/ccJRMa1A.o: In function bmd_fujitsu_write': /home/user01/tmp/bmd-tools/bmd-streamer.c:434: undefined reference to
libusb_control_transfer'
/tmp/ccJRMa1A.o: In function bmd_configure_encoder': /home/user01/tmp/bmd-tools/bmd-streamer.c:527: undefined reference to
ceilf'
/home/user01/tmp/bmd-tools/bmd-streamer.c:527: undefined reference to ceilf' /home/user01/tmp/bmd-tools/bmd-streamer.c:529: undefined reference to
libusb_control_transfer'
/tmp/ccJRMa1A.o: In function bmd_encoder_start': /home/user01/tmp/bmd-tools/bmd-streamer.c:764: undefined reference to
libusb_control_transfer'
/tmp/ccJRMa1A.o: In function bmd_fujitsu_read': /home/user01/tmp/bmd-tools/bmd-streamer.c:404: undefined reference to
libusb_control_transfer'
/home/user01/tmp/bmd-tools/bmd-streamer.c:404: undefined reference to libusb_control_transfer' /home/user01/tmp/bmd-tools/bmd-streamer.c:404: undefined reference to
libusb_control_transfer'
/tmp/ccJRMa1A.o:/home/user01/tmp/bmd-tools/bmd-streamer.c:404: more undefined references to libusb_control_transfer' follow /tmp/ccJRMa1A.o: In function
bmd_handle_messages':
/home/user01/tmp/bmd-tools/bmd-streamer.c:856: undefined reference to libusb_bulk_transfer' /tmp/ccJRMa1A.o: In function
bmd_read_register':
/home/user01/tmp/bmd-tools/bmd-streamer.c:377: undefined reference to libusb_control_transfer' /home/user01/tmp/bmd-tools/bmd-streamer.c:377: undefined reference to
libusb_control_transfer'
/home/user01/tmp/bmd-tools/bmd-streamer.c:377: undefined reference to libusb_control_transfer' /home/user01/tmp/bmd-tools/bmd-streamer.c:377: undefined reference to
libusb_control_transfer'
/home/user01/tmp/bmd-tools/bmd-streamer.c:377: undefined reference to libusb_control_transfer' /tmp/ccJRMa1A.o:/home/user01/tmp/bmd-tools/bmd-streamer.c:377: more undefined references to
libusb_control_transfer' follow
/tmp/ccJRMa1A.o: In function bmd_handle_messages': /home/user01/tmp/bmd-tools/bmd-streamer.c:877: undefined reference to
libusb_error_name'
/tmp/ccJRMa1A.o: In function bmd_device_thread': /home/user01/tmp/bmd-tools/bmd-streamer.c:896: undefined reference to
libusb_open'
/home/user01/tmp/bmd-tools/bmd-streamer.c:902: undefined reference to libusb_set_configuration' /home/user01/tmp/bmd-tools/bmd-streamer.c:908: undefined reference to
libusb_claim_interface'
/home/user01/tmp/bmd-tools/bmd-streamer.c:937: undefined reference to pthread_create' /home/user01/tmp/bmd-tools/bmd-streamer.c:941: undefined reference to
libusb_control_transfer'
/home/user01/tmp/bmd-tools/bmd-streamer.c:904: undefined reference to libusb_error_name' /home/user01/tmp/bmd-tools/bmd-streamer.c:960: undefined reference to
libusb_close'
/home/user01/tmp/bmd-tools/bmd-streamer.c:961: undefined reference to libusb_unref_device' /home/user01/tmp/bmd-tools/bmd-streamer.c:898: undefined reference to
libusb_error_name'
/tmp/ccJRMa1A.o: In function bmd_set_input_source': /home/user01/tmp/bmd-tools/bmd-streamer.c:365: undefined reference to
libusb_control_transfer'
/tmp/ccJRMa1A.o: In function bmd_device_thread': /home/user01/tmp/bmd-tools/bmd-streamer.c:910: undefined reference to
libusb_error_name'
/home/user01/tmp/bmd-tools/bmd-streamer.c:949: undefined reference to pthread_join' /tmp/ccJRMa1A.o: In function
bmd_load_firmware':
/home/user01/tmp/bmd-tools/bmd-streamer.c:389: undefined reference to libusb_control_transfer' /home/user01/tmp/bmd-tools/bmd-streamer.c:389: undefined reference to
libusb_control_transfer'
/home/user01/tmp/bmd-tools/bmd-streamer.c:389: undefined reference to libusb_control_transfer' /tmp/ccJRMa1A.o: In function
main':
/home/user01/tmp/bmd-tools/bmd-streamer.c:1102: undefined reference to libusb_init' /home/user01/tmp/bmd-tools/bmd-streamer.c:1126: undefined reference to
libusb_error_name'
/home/user01/tmp/bmd-tools/bmd-streamer.c:1128: undefined reference to libusb_exit' /home/user01/tmp/bmd-tools/bmd-streamer.c:1108: undefined reference to
libusb_hotplug_register_callback'
/home/user01/tmp/bmd-tools/bmd-streamer.c:1122: undefined reference to `libusb_handle_events'
collect2: error: ld returned 1 exit status
make: *** [bmd-streamer] Error 1
user01@user01:
Issue #9 fixed. Thanks.
but now having H56 Error :
[2/29 1edb:bd43]: firmware downloaded needed
[2/29 1edb:bd43]: firmware downloaded succesfully
[2/29 1edb:bd43]: closing device
[2/30 1edb:bd43]: device connected
[2/30 1edb:bd43]: Switching input source to sdi (2)
[2/30 1edb:bd43]: Display Mode: 1080p 25
[2/30 1edb:bd43]: Display Mode: 1080p 25
[2/30 1edb:bd43]: Display Mode: 1080p 25
[2/30 1edb:bd43]: H56 Error. Restarting device.
[2/30 1edb:bd43]: Display Mode: 1080p 25
[2/30 1edb:bd43]: H56 Error. Restarting device.
Command is :
sudo ./bmd-tools/bmd-streamer -S sdi -K 10000 -P main
don't know if it is technically possible, but it would be nice to be able to specify the input signal definition for H264 recorder. For now it seems to detect automatically the input signal. If signal breaks it starts poling for other input but never detect signal when it is back.
(sorry for my english)
Hello,
I am using your great tool to stream video over ethernet.
This happens from time to time :
Everything is ok for 2 or 3 weeks. Then image starts to lag and finally freezes.
So i stop the stream and start it over, ther bmd-tools keeps on complaining :
"[2/2 1edb:bd43]: Input Mode, 0xff (display mode 0x02) not supported"
"[2/2 1edb:bd43]: Input Mode, 0xff (display mode 0x02) not supported"
"[2/2 1edb:bd43]: Input Mode, 0xff (display mode 0x02) not supported"
...
From here, i stop, restart the stream, reboot once, twice, unplug the h264 Pro Recorder and repeat all this once and again.
Always the same error...
And all in a sudden, unplugging and reboot one more time and all starts to work again !
what the problem could be ?
thank you
PS : this is the command i use
sudo ./bmd-tools/bmd-streamer -S sdi -k 9000 -K 10000 -P main | avconv -i - -vcodec copy -acodec copy -f mpegts udp://239.255.1.1:1234
Hi,
i use bmd-streamer to stream an SDI video camera image through UDP Multicast.
when signal breaks (camera disconnected or off) stream breaks and error occurs.
reconnecting the camera (or turning back on) doesn't fix. Stream needs to manually be launched again.
would be nice if stream cleanly stops and waits for the signal to appear again.
thank you
Hi,
using the last commit.
Can't make it to work with 1080p25 (see details appended in issue #5)
Back to the previously working 720p50, doesn't seem to work anymore :
[2/21 1edb:bd43]: firmware downloaded needed
[2/21 1edb:bd43]: firmware downloaded succesfully
[2/21 1edb:bd43]: closing device
[2/22 1edb:bd43]: device connected
[2/22 1edb:bd43]: Switching input source to sdi (0)
[2/22 1edb:bd43]: Display Mode: 720p 50
[2/22 1edb:bd43]: Input Mode, 0xff (display mode 0x02) not supported
[2/22 1edb:bd43]: Input Mode, 0xff (display mode 0x02) not supported
[2/22 1edb:bd43]: Input Mode, 0xff (display mode 0x02) not supported
[2/22 1edb:bd43]: Input Mode, 0xff (display mode 0x02) not supported
[2/22 1edb:bd43]: Input Mode, 0xff (display mode 0x02) not supported
[2/22 1edb:bd43]: Input Mode, 0xff (display mode 0x02) not supported
[2/22 1edb:bd43]: Input Mode, 0xff (display mode 0x02) not supported
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.