How to use H.264 encoding for NoMachine on Linux - archlinux

I am running NoMachine server on Arch Linux and connecting it from NoMachine client on Windows10. I have set the encoding H.264 in server preference but it always picks up VP8 irrespective of my settings.
How can i enable H264 encoding on server and decoding in client?

H.264 will be used by default if:
(i) the hardware or software H.264 encoder is available on server-side
and
(ii) the HW or SW H.264 decoder is present on client-side.
If neither the server nor any of the clients support H.264, VP8 will be used as a fallback.
So you should make sure you have the appropriate libraries built on the server side if you are using the free version. The free version doesn't ship them.

Related

Does Kurento supports hardware decoding by utilizing the GPU (RTSP Streaming)?

I want to render the RTSP streams which comes from the IP cameras on to the web browser. In this context, when an IP camera supports one codec and web browser supports another codec. Here, transcoding comes in to the picture.
Does Kurento framework do this transcoding using hardware decoding by utilizing the GPU (Graphics processing unit)? I mean Hardware-Accelerated Streaming.
There is no GPU support in Kurento.

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

Does YouTube support Live ingest of HEVC over RTMP or is this only available via HLS?

On the site https://support.google.com/youtube/answer/2853702?ref_topic=6136989 only h.264 is listed as an avalible injest codec however on the page https://developers.google.com/youtube/v3/live/guides/hls-ingestion it states that "Supported video codecs are H264 and HEVC."
I've experimented a bit but have been unable to get an RTMP connection with HEVC. When i switch back to h.264 and maintain all the same codec parameters it works fine.
I talked to the YouTube Chat support and he said:
"I've checked our available resources here and there is no information yet for hevc. Maybe you can check the site if they have support as well. https://developers.google.com/youtube/v3/live/support"
So here I am :)
Thanks for reading!
Short answer: HEVC is not supported by RTMP.
RTMP protocol supports H264 but does not support HEVC because it's underlying container FLV does not support HEVC. So unless Adobe specifies it in the specification, it is unlikely to be supported by anyone. The spec was defined quite a while ago when most modern codec was H264.
HLS protocol supports both H264 and HEVC. It is based on MPEG-TS or fMP4 which have the support of both these codecs.
You can hack / force put HEVC into FLV and then stream with RTMP (some people do it for their custom streaming pipeline or apps), but nobody except you could receive it since it would not conform to the specification.
Links:
https://en.wikipedia.org/wiki/Comparison_of_video_container_formats#Video_coding_formats_support
https://www.adobe.com/devnet/rtmp.html
https://www.adobe.com/devnet/f4v.html
Some enthusiasts made changes in RTMP protocol to support HEVC. It came from streaming cameras side but looks like it's working with just minor changes.
Take a look at our approach to this: Support for HEVC over RTMP in Softvelum products

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.

creating mobile streaming server (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.