I am trying to show live webcam video stream on webpage and I have a working draft. However, I am not satisfied with the performance and looking for a better way to do the job.
I have a webcam connected to Raspberry PI and a web server which is a simple python-Flask server. Webcam images are captured by using OpenCV and formatted as JPEG. Later, those JPEGs are sent to one of the server's UDP ports. What I did up to this point is something like a homemade MJPEG(motion-jpeg) streaming. 
At the server-side I have a simple python script that continuously reads UDP port and put JPEG image in the HTML5 canvas. That is fast enough to create a perception of a live stream. 
Problems:

This compress the video very little. Actually it does not compress the video. It only decreases the size of a frame by formatting as JPEG.
FPS is low and also quality of the stream is not that good.
It is not a major point for now but UDP is not a secure way to stream video.
Server is busy with image picking from UDP. Needs threaded server design.

Alternatives:

I have used FFMPEG before to convert video formats and also stream pre-recorded video. I guess, it is possible to encode(let say H.264) and stream WebCam live video using ffmpeg or avconv. (Encoding)


Is this applicable on Raspberry PI ?


VLC is able to play live videos streamed on network.  (Stream)


Is there any Media Player to embed on HTML/Javascript to handle
  network stream like the VLC does ?


I have read about HLS (HTTP Live Stream) and MPEG-DASH. 


Does these apply for this case ? If it does,how should I use them ?
Is there any other way to show live stream on webpage ?


RTSP is a secure protocol.


What is the best practice for transport layer protocol in video
  streaming ?
You could use FFmpeg to mux the video stream in to H.264 in a mp4 container and then that can be directly used in a HTML5 video element.
Live Video Encoding and Streaming on a Webpage