Restream a stream with VLC in real-time - streaming

How do I accomplish real-time video re-streaming with VLC (cli on linux) to an m3u8 playlist?
I currently have a piece of code, but it doesn't work correctly.
["cvlc","-v",url,"--drop-late-frames","--skip-frames","--sout","#std{access=livehttp{seglen=1,delsegs=false,numsegs=5, index=/var/www/x/test.m3u8, index-url=http://hello.com/_x/test-########.ts}, mux=ts{use-key-frames}, dst=/var/www/xxx/test-########.ts}}"
The code above for some reason waits 3-10 seconds to generate new .ts files - that should be done in real-time. What command line arguments should I use to correct that problem?

m3u8 is a fragmented format. It means the manifest can not be updated until the fragment is complete (no partial fragments) Because we can not time travel, we must wait for all the frames of the fragment. 3 seconds in your case.

Related

VLC command line to stream/convert/record from an rtsp stream

I am using Lubuntu linux 18.04LTS, VLC 3.0.8 trying to record via vlc a video stream from a security camera and so far have not had success. I tried using the GUI "Convert" but despite choosing mp4, it seems to only play back as an mp3. Then I thought the command line might work, but I haven't found a clear tutorial in how to set up the right parameters. The closest I've gotten is this, which is:
vlc -vvv rtsp://#192.168.0.xyz:XXXX/videofeed --sout="#transcode{vcodec=h264,acodec=mpga,ab=128,channels=2,samplerate=44100,scodec=none}:file{mux=mp4,dst=/media/my/external/hard/disk/yard-01.mp4,no-overwrite}" :no-sout-all :sout-keep
The problem is the file created is not usable/readable. Using Gnome MPV player, I get "Format not recognized." And it doesn't play. Xine seems to play it, but treat it as a silent audio file (guessing at that). When I look at the command line messages, I get a long scroll of "mp4 mux warning: i_length <= 0" which, I am guessing, cannot be good.
I'm the first to admit I don't know much about the options in that line above...just cut them from other folks' posts who said they got this to work. Is there something I can tweak above to make it record video properly? It doesn't have to be mp4, just something decent that will allow me to get a good feed for security purposes.
I should add that the streaming part works fine in VLC. I have a nice feed whenever I want via live streaming. So I know the hardware and access part is fine. It's just the transcoding that I think is going awry.
Any and all help greatly appreciated. Thank you in advance!

how to record the voip call using sipsorcery sdk?

I am using sample programs provided by sipsorcery:
https://github.com/sipsorcery/sipsorcery/tree/master/sipsorcery-softphonev2
What I want to record the call or record the part of one side spoken text, process it, then generate the answer test and speak it back.
What I need right now to process the spoken text. I wanted to record the parts of call and save them to a wav file and generate text from it. but it seems to me that I am doing wrong. I am not able to generate the correct wav file using the provided method of sipsorcery SDK.
I have tried to follow the example on this forum as well, but it didn't work
https://markheath.net/post/how-to-record-and-play-audio-at-same
I expect that this should work using a small temporary wave file at each time the user speaks a sentence and response back again playing back the processed response file.
Any guidance how can I achieve this sense of interception and processing of the call?
Thanks,
Vivek
This example should be pretty close to what you need. It plays the audio (only ulaw support) via the default speaker using NAudio. To record it should be a matter of switching from using NAudio playback to saving to a wav file.

Flowplayer Secure Streaming (via PHP): MP4 videos not Pseudo-Streaming (FLVs do)

I've ran into a problem with MP4 secure pseudo streaming.
First of all, a couple of FACTS for you to get the idea:
I'm using Flowplayer
I have mod_h264_streaming installed and working.
I have successfully added secure streaming plugin (PHP validation) and it's working with pseudo for FLV videos (thanks to mod_h264_streamin, of course).
I'm testing with an MP4 with the moov-atom at the beginning (and the video starts immediately. No pseudo, though).
Now... when flowplayer loads an MP4, the player makes a request like this:
http://mydomain.com/videos/fa3...[security_hash]...46/video.mp4?start=0
Note the ?start=0
When I seek to another part of the video (not yet loaded), the player makes this request:
http://mydomain.com/videos/fa3...[security_hash]...46/video.mp4?start=33.342
Note the ?start=33.342
This results in the video starting again from the beginning, which is the problem.
ADDITIONAL FACT: for MP4 files start is sent (to the PHP script) as the seconds of the timeline where you click on, and for FLVs start is sent as the seek position in Bytes and I think this difference is the main reason of the issue.
My question is:
How do I handle, in my PHP pseudo streaming script, MP4 videos streaming?
Auto-question: Should I use byte ranges headers?
I'm not posting code, as it's not a coding problem, but a conceptual one: let's focus on the idea by now.
Also, all files I'm testing with are well encoded and they are not the problem.
Thanks

How to make Red 5 media server stream different formats of files?

I need to stream both audio and video files from the Red 5 server. By default Red 5 only supports flash, but I need to add support for other file types too.
I need to dynamically (on the run time) transcode the media file in one format to desired formats as per client request. Is it possible ? How to go for it ? I have been reading of vlcj project, but dont know how to integrate them.
If audio / video transcoding is not possible in Red 5, is there any other open source alternative I can look forward to ?
Any help will be really appreciated...
Thanks !
Check out the StreamableFileFactory bean inside your red5-common.xml, to see what kind of files can be streamed by default (flv, mp3, mp4, m4a). If you copy any of these files in your red5 service's streaming directory, it will be able to play it.
If the source you need to stream is in different format (like youtube uploads), then the best way for you to go is ffmpeg.
You build it to your server, then
from inside your red5
service check whether there are any
unsupported files in your streaming
directory (should be a scheduled job), and
if so, use ffmpeg with the proper
parameters to convert the new files
to streamable formats.
that's it.

Artifact on playing a audio file on a phone from a Asterisk server

I have an Asterisk SIP server. When I playback an audio file (.ulaw file, compressed using ulaw) I hear a noticeable click (or sound artifact) before the playback begins. This "click" is not in the actual audio file and happens at the start of every Playback command in the ael script. Should I be using a different format, is this a codec issue, how do I resolve this issue?
Here are some of my files:
http://kscserver.com/hello.zip
http://kscserver.com/thankyou.zip
Without looking at the file, it's hard to say, but if the first sample of the file starts at some value other than 0, you may get a click (since the output will go from 0 to N in one sample - a broad noise impulse). If you don't know a sample starts "clean" it can make sense to ramp it in volume-wise, or search the uncompressed data for a zero-crossing and start there.