We have SDI input using Black Magic studio express, using just one source stream with 1 video + 16 audio channels, we want to push this stream as 16 frigging video streams. is it possible to split this video with 16 audio into 16 unique video (each with 1 audio) and push to YT + FB ?
yes it is possible; I pushed to 24 streamtargets in Youtube live + facebook live + dailymotion without issues.
I am assuming that you don’t want to split audio from video and remux at the onsite production but achieve that at the dedicated server running your wowza server.
Reason is you want of course to save your bandwidth.
So as pre-requisite:
- encode your capture locally in mpeg-ts using either hardware or software (cheapest way is to use ffmpeg but it does not have any advanced network capabitlity) and stream it either in udp or tcp.
I am assuming you know how to encode in mpeg-ts and are familiar with pid, programs etc … If not , google or hire someone.
there are then several possibilities:
- if using udp, stream directly to wowza using:
https://www.wowza.com/docs/how-to-publish-and-play-a-live-stream-mpeg-ts-based-encoder
Then check here:
https://www.wowza.com/docs/How-to-specify-per-stream-settings-in-stream-files#mpegtsstreams
You want to create as many stream files as you have audio channels.
In each one , the language will be specified either by: mpegtsAudioPID or mpegtsAudioLanguage
(depending on how you have created your mpeg-ts stream); don’t forget to specify the mpegtsVideoPID.
Each of the stream file is now a new stream which can be pushed using the stream targets capability of wowza.
- second option, if you use tcp:
wowza can pull a tcp stream , check:
https://www.wowza.com/docs/how-to-publish-and-play-a-live-stream-mpeg-ts-over-tcp-ip
What is unclear in the tutorial is that your encoder should not push to wowza; rather wowza pulls from it.
In other words your encoder should act as a server. ffmpeg is able to do that.
The rest is as in option (1)
- option 3 which is the one I routinely use:
I push a tcp mpeg-ts stream to an intermediate tcp listener (ffmpeg) which remuxes with no re-encodes in 16 rtmp pushed to wowza
The difference with option (2) is that the mpeg-ts stream is pushed in tcp to wowza and not pulled from encoder to wowza. It’s simpler to setup.
The pointers I’ve provided should be enough but if you don’t manage it, consider hiring someone to help you for that. If you’re interested PM me so that I can put you in touch with someone knowledgeable who can set it up for you for a reasonable fee. We reached 1.2 million people on a two hour talk on facebook live in 9 languages pushed at the same time on dalilymotion + youtube.
- another option is to encode locally all audio channels into independent rtmp streams; they have to be in sync (this is the difficult thing). The video is encodec with one language as rtmp stream
One can then use the AVMix module:
https://www.wowza.com/docs/how-to-mix-audio-and-video-from-different-live-sources-moduleavmix
This allows to remux audio and video into 16 rtmp streams with both video and audio
I also use this method routinely; works extremely well
Thanks for the answers. I appreciate it
Basically we are trying mpeg dash as a hack to deal with inconsistent upstream,
so mpeg dash => mpeg ts => wowza => yt + fb channels , did you happen to work with mpeg dash?
Also, can you please introduce to the guy? I can be reached on ‘abdulraufhaseeb[at]gmail’
if you use mpeg-ts tcp, packet loss is much less an issue ;
so no , I never used mpeg dash on the encoder side. It’s much simpler to encode directly in mpeg-ts.
Don’t understand how mpeg-dash would help.
I’ll email you the email of the consultant who worked with me on this setup.
Please can you also introduce the consultant to me as I would also like to do the same setup.
@kv pham
Please can you also introduct the consultant to me as I would aslo like to do a similar setup with Wowza.
Thanks,
Jeffrey Yim