creating mobile streaming server (3gp) - 3gp

I need an Open Source solution & tutorial for creating mobile streaming server that can stream video on 3gp (3gpp) format, i have tried using Helix DNA Server, but it's free version only allow real media not 3gp.
I have heard about DSS (Darwin Streaming Server) but i can't found any Windows binaries (compiled exe) for that, and Catra Streaming server package only confused me more since i can't found any file required for Catra (setting, etc are missing on their package).
PS: Actually i need some sort of guide for setting DSS or Catra on Windows (especially Server 2003)

You may want to try VLC http://www.videolan.org/vlc/
I can't vouch for the streaming server, but the player works well, and 3gp is supported.
But this isn't a programming question.

DSS Windows binaries are here:
http://dss.macosforge.org/post/previous-releases/

If you're target mobile devices support flash you can stream 3gp from Red5. If they don't support flash, but they do allow HTML5 you could still use Red5 or pretty much any Java EE container server.

Related

Publish video to antmedia server from custom camera

I am not able to compile the WebRTCTest application in the antmedia github repository. This is the application I am trying to compile.
I need to test live stream performance over webRTC. The setup is running Linux OS and I am using gstreamer to capture the video frames.
Following is the use case:
Stream live video frames being captured from the camera over to antmedia using WebRTC protocol. However, I tried Compiling the WebRTCTest application given in the above link, but I got a lot of compilation issues mainly due to the header file names in the webRTC code source.
How can I publish the video frames being captured from the camera to antmedia via webRTC?
Also does antmedia provide any webRTC based SDK for linux platform (C language based)?
Actually WebRTCTest has not been supported for more than 1 year. But there is another WebRTC Test Tool that is developed by Ant Media team to test Ant Media Server. It is java based and publishes video files. You can still use it on Linux and publish your web cam with small changes.
https://gitlab.com/Ant-Media/webrtc-test
you should use https://resources.antmedia.io/docs/load-testing as a testing tool.
But if you need to publish or play only with gstreamer , I have wrote a gstreamer program in C which uses webrtc to send and receive stream from and to ant media server https://github.com/USAMAWIZARD/AntMedia-Gstreamer-Webrtc. It is tested with AMS version Enterprise Edition 2.5.1

Adobe Media Server Alternative for VideoChat

I currently have a video chat app working on web(Flash) and android via Adobe AIR, it uses Adobe Media Server (RTMP) as backend for video streaming and shared objects, my question is, if there is another server or solution that provides many to many live video broadcast maybe using H.264 codec from android and iOS, have some sort of user list and room list stored in a database or similar, I want to move away from Adobe as it has many limitations on mobile devices.
Live video is crucial in 1 to many broadcasts that will have hundreds of viewers at the same time.
Thanks for reading!
Ulex.fr created an RTMP connector for Asterisk (the free PBX platform).
Used with the Asterisk Vonference application, it allows you to create conference rooms for 1 to many configuration, with audio and video. The only one limitation is the power of your server. You can plan a scalable architecure in order to broadcast one video to many (many could be unlimited). We developp a specific protocol to connect and manage the connection based on the telephony events. I think we already done a direct RTMP connection that skip this protocol too.
All the project done by ulex.fr is free, OpenSource and GPL.
Get the full project here : https://github.com/voximal/asterisk-rtmp
(a live demo is available)
We already develop an RTMP stack for android with video (using the camera), this allows you to create your own application without using AIR.
You can check Adobe Cirrus, it's still in the beta stage (actually IMHO Adobe forgot about it), but it works on web, desktop and mobile too. Check this Video Phone example, it can handle chat applications without a problem.
http://labs.adobe.com/technologies/cirrus/samples/
You could take a look at Red5 Media Server, which is an open source solution. There are other options like the Wowza's solutions on AWS, but they come a higher cost...
Ok as today, we have decided that we can manage the users,rooms and messages via Google Firebase Real Time Database, and the live video stream using ANT Media Server

Streaming webcam and mic inputs through browser

Short version:
I need an in-browser solution to deliver the webcam and mic streams to a server.
Long version:
I'm trying to create a live streaming application. So far I've only managed to figure out this workflow:
Client creates stream (some transcoder is probably required here)
Client sends(publishes?) stream to server (basically hosts an RTMP/other stream that should be accessible by my server)
Server transcodes, transrates, etc. and publishes the stream to a CDN
Viewers watch published stream
Ideally, I'd like a browser-based solution that requires minimal setup from the client's end (a Flash plugin download might be acceptable) and streams the webcam and mic inputs to the server. I'm either unaware of the precise keywords or am looking for the wrong thing, but I can't find an apt solution.
Solutions that involve using ffmpeg or vlc to publish a stream aren't really what I'm looking for, since they require additional download and setup, and aren't restricted to just webcam and mic inputs. WebRTC probably won't serve the same quality but if all else fails, I think it can get the job done, at least for some browsers.
I'm using Ubuntu for development and have just activated a trial license for Wowza streaming server and cloud.
Is ffmpeg/vlc et. al. the only way out? Or is there something that can do the job in a single browser tab?
If you go the RTMP way, Adobe Flash Player supports H.264 encoding directly. Since you mentioned Wowza you can find an example and complete source code (including the fla) in the examples directory. There's also a demo here. There are many other open-source Flash capture plugins.
You can also use the aforementioned Flash recorder without Wowza. In this case you'll need a RTMP server, a notable example being the Nginx RTMP module which supports recording (to flv) and also offers callbacks that allow you to launch the transcoding once the recording is done.
With WebRTC you can record (getUserMedia, MediaStreamRecorder) small media chunks and send them to the server where they will get concatenated or using the peer-to-peer communications features of WebRTC (RTCPeerConnection). For a detailed overview see my answer here.
In both cases you'll have issues with devices/browsers that don't support Flash or WebRTC, eg. iPhones, Safari. Plus getUserMedia doesn't capture the same format across all browsers: Firefox audio/video in WebM and Chrome audio in wav and video in WebM.
For mobile devices you'll probably have to write apps.

Difference between red5 and wowza

I am trying to set up a streaming media server. I tried wowza and found it very well documented. Its forums are very active.
I also checked red5. Red5 originated in 2005 whereas wowza started in 2007. Red5 is open source too. The past links to red5 documentation are almost dead. Is wowza a proprietary version of red5? Or red5 evolved into wowza just like rtmpd into evostream?
How do i set up red5 to capture an rtsp stream of the following format and publish it to rtmp?
rtsp://username:password#<Camera IP Address>:554/axis-media/media.amp
Wowza is quite mature than Red5. Red 5 is an open source effort that still has many bugs (I tried up to version 0.9). Documentation is critical about Red5, there is no support (only some mailing lists). Wowza has a complete forum with different topics and solid documentation. Actually I have a Wowza platform with excellent mobile support, which could never be achieved with Red5 (audio problems).
I can answer half. Red5 and Wowza are completely seperate projects. Wowza is closed source while red5 is open source. Wowza did not evolve out of red5. I don't know a feature by feature comparison between the two projects.
Scott, Wowza
On the Red5Server website there is a feature comparison of the two products.

Is it possible to use WebRTC to streaming video from Server to Client?

In WebRTC, I always see the implementation about peer-to-peer and how to get video streaming from one client to another client. How about server-to-client?
Is it possible for WebRTC to streaming video file from server-to-client?
(I am thinking about using WebRTC Native C++ API to create my own server application to connect to the current implementation on chrome or firefox browser client application.)
OK, if it is possible, will it be faster than many current video streaming services?
Yes it is possible as the server can be one of the peers in that peer-to-peer session.
If you respect the protocols and send the video in SRTP packets using VP8, the browser will play it. To help you build these components on other applications or servers, you can check this page and this project as a guide.
Now, comparing WebRTC with other streaming services... It will depend on several variables like the Codec or the protocol. But, for instance, comparing WebRTC (SRTP over UDP with VP8 Codec) against Flash (RTMP over TCP with H264 Codec), I would say that WebRTC wins.
The player will be Flash Player against the native <video> tag.
The transport would be TCP against UDP.
But of course, everything depends on what you are sending to the client.
I have written some apps and plugins using the native WebRTC API, and there isn't a lot of information out there yet, but here are a few useful resources to get you started:
QT Example: http://research.edm.uhasselt.be/jori/qtwebrtc
Native to Browser example: http://sourcey.com/webrtc-native-to-browser-video-streaming-example/
I started with the WebRTC Native C++ to Browser Video Streaming Example but it doesnot build anymore with the actual WebRTC Native Code.
Then I made modifications merging into a standalone process :
management of the peerConnection (the peerconnection_server)
access to Video4Linux capture (the peerconnection_client).
Removing the stream from browser to the WebRTC Native C++ client give a simple solution to access throught a WebRTC browser to a Video4Linux device that is available from GitHub webrtc-streamer.
Live Demo
We are attempting to replace MJPEGs with Webrtc for our server software and have a prototype module for doing this using a smattering of components tied to the Openwebrtc project. It has been an absolute bear to do, and we have frequent ICE negotiation errors (even over a simple LAN), but it mostly works.
We also built a prototype with the Google Webrtc module, but it had many dependencies. I find it easier to work with the Openwebrtc modules because Google's stuff is so tightly tied to general peer-to-peer scenarios on the browser.
I compiled the following from scratch:
libnice 0.1.14
gstreamer-sctp-1.0
usrsctp
Then I have to interact with libnice a bit directly to gather candidates. Also have to write out the SDP files by hand. But the amount of control--being able to control the source of the pipeline--makes it worthwhile. The resulting pipeline (with two clients off one server source) is below:
Of course. I'm writting a program using native WebRTC api which can join the conference as a peer and record both video and audio.
see: How to stream audio from browser to WebRTC native C++ application
and you can definitely streaming media from native app.
I'm sure you can use dummy_audio_file to streaming audio from local file, and you can find a way to access the video streaming progress by your own.
Yes it is. We have developed an load test tool to publish and play for Ant Media Server. This tool can broadcast media file. We used the same native WebRTC library used in Ant Media Server.
Sure it's possible, it allows covert live streaming to WebRTC, for example:
OBS/FFmpeg ---RTMP---> Server ---WebRTC--> Chrome/Client
For this scenario, it allows the ultra low latency live streaming, about 600~800ms, to play the live streaming by WebRTC. Please take a look at this demo.