Hello
I have a project, in which I can receive an HLS stream from a broadcaster.
I get this HLS manually - I have created a program which polls the m3u8 from the broadcaster’s server, and when new chunks are available, the program download the .ts files using http.
On the Wowza side, I need to create a DVR stream, based on that HLS stream.
I configure an Wowza Application to “live”, and set-up the DVR settings as required.
Each .ts file is 10-seconds long, so naturally I get a new file every 10 seconds.
I tried a few techniques to push the .ts files to do that:
1:
I use ffmpeg in the middle, using command like this:
ffmpeg.exe -re -i tcp://127.0.0.1:1231?listen=1 -vcodec copy -acodec aac -b:a 128k -strict experimental -f flv -bsf:a aac_adtstoasc rtmp://localhost:1935/dvr/stream_hls
What it does, is listening to data on local tcp port, and copying it to a rtmp stream on wowza.
On my program’s side, each file that I download, I send it all to the tcp port.
This technique works, but it has 2 drawbacks: it needs ffmpeg in the middle, and I need to retranscode the audio, as it is not working without it.
2:
I use ffmpeg in the middle, similar to technique 1 using command like this:
ffmpeg.exe -re -i tcp://127.0.0.1:1231?listen=1 -c copy -f mpegts udp://127.0.0.1:10001?pkt_size=1316
I configure a rtp stream on the wowza server, which listens to udp port 10001.
What it does, is listening to data on local tcp port, and copying it to a mpegts using udp.
ffmpeg manage the breaking of the ts file to basic packets.
On my program’s side, each file that I download, I send it all to the tcp port.
This technique works, but it has 1 drawbacks: it needs ffmpeg in the middle, and it sometimes not working on the wowza side - the wowza not always manage to sync to ffmpeg.
So, I want to know what is the best option to send a complete .ts files to wowza for ingestion.
I did try manually break the ts file to basic packets, and send each packet to wowza directly using UDP.
But that didn’t work, as it seems that I need to send the packets as “real-time”, and not all the 10-seconds at once (This timing is handled by ffmpeg, using the -re argument).
So, I would like to know what is the best and recommended way to do that - sending a complete .ts file to wowza.
Do I need to manually manage to send that packets in real-time?
Doesn’t wowza has some sort of buffering capabilities, so it can convert the complete 10-seconds file to the correct timing?
thanks!