4

I have a small hobby project based on live streaming. My streaming server likes RTMP. Currently, the broadcasters use native solutions like OBS, FFmpeg or VLC for publishing webcam and mic input to my streaming server. I want a browser-based solution for this publishing bit.

I'd want to avoid Flash as far as possible (ready-made solutions that can be plugged in directly are okay).

The other option I have been exploring is WebRTC. I don't mind the insufficient browser support but can't seem to figure out how to publish it to an RTMP server.

In short, I need either:

  1. A Flash-based live webcam stream capturing software that I can use with little tweaking.
  2. A way of publishing WebRTC streams to an RTMP server.
  3. Any other way of capturing webcam and mic streams in the browser.

Thanks in advance!

0

as an AD.3

you can use HLS or you can use WebRTC with h264 or webm DASH for DASH it somewhat blurry form me (no straight answer for ffmpeg), but as for the HLS this is supported in a straightforward fashion look here

Some time ago I was looking for a way to publish an h264 stream from the IPCam without the need of extra user actions. I came across Janus Gateway, this bit of software consumes RTP streams (amongst others types of media) and publishes it as WebRTC media to the browser. So basically I did the following:

  • used ffmpeg as an rtsp client and encoder to publish audio and video (separately) as RTP streams
  • I have setup Janus streaming plugin to accept h264 RTP stream and audio stream (descriptions are coming from the RTSP sdp file)

and it worked just nice. I had some issues with the h264 from the IPcam so I had to re-encode it using x264 to be visible in the browsers. Ideally Janus has a support for RTSP, but it seems it's lacking option of interleaved TCP transport of RTP and RTCP, and besides I had to re-encode the stream one way or another. This are the configs I have used:

Janus - file janus.plugin.streaming.cfg:

[h264-sample]
type = rtp
id = 1
description = H.264 live stream test
audio = yes
video = yes
audioport = 8005
audiopt = 8
audiortpmap = PCMA/8000
videoport = 8004
videopt = 126
videortpmap = H264/90000
videofmtp = profile-level-id=42e01f\;packetization-mode=1

the ffmpeg stream feeding the pipes should look like that (you can of course re-encode whatever you like in this fashion):

ffmpeg -rtsp_transport tcp -i rtsp://hostname:port/description.sdp \
-an -c:v h264 -profile:v baseline -preset ultrafast -tune zerolatency -f rtp rtp://localhost:8004 \
-vn -acodec copy -f rtp rtp://localhost:8005
| improve this answer | |
0

If you can afford to buy a used BlackMagic H.264 ProCoder, it's a fantastic device, allowing you to input either a HDMI or HD-SDI signal and push to either RTMP or HTTP via h.264 -- with full control over bitrate, along with multiple streams (which the user's computer would chose based on their connection speed). So you could simultaneously push a medium and high quality stream in real time.

The device also does all the encoding in the box; putting no strain on your CPU or GPU; which allows you to run it on a fairly simple system even at very high quality streams.

If you need a different input than what the pro-coder has; BM has a full line of adapter units (composite to HD-SDI; etc) to get what ever your source is; to whatever your input needs are.

It's a workhorse.

Lastly; combine the box with livestream; a pro account (about $60 a month) and you are all set.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.