diff --git a/Dockerfile b/Dockerfile
index 3bb946e4b547853873a52b6cae3b4fc9706ae978..cf5a6275eb4ef2798212039c0995ddd1759d54f6 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,15 +1,18 @@
-FROM python:3
+ARG FFMPEG_VERSION=4.2.2
 
-WORKDIR /usr/src/app
+FROM ubuntu:bionic
+ARG FFMPEG_VERSION
 
-COPY py_requirements.txt ./
+WORKDIR /usr/src/app
 
-RUN pip install --no-cache-dir -r py_requirements.txt
+RUN apt-get update && apt-get install -y software-properties-common && apt-get update && add-apt-repository ppa:jonathonf/ffmpeg-4
 
 RUN apt-get update && apt-get install -y \
+        python3-pip \
+        python3-dev \
         xvfb \
-        ffmpeg \
         fluxbox \
+        ffmpeg \
         dbus-x11 \
         libasound2 \
         libasound2-plugins\
@@ -18,6 +21,15 @@ RUN apt-get update && apt-get install -y \
         pulseaudio \
         pulseaudio-utils 
 
+RUN ln -s /usr/bin/python3 /usr/local/bin/python \
+    && pip3 install --upgrade pip
+
+COPY py_requirements.txt ./
+
+RUN pip install --no-cache-dir -r py_requirements.txt
+
+
+
 RUN apt-get update && \
     apt-get install -y gnupg wget curl unzip --no-install-recommends && \
     wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
@@ -33,6 +45,7 @@ RUN apt-get update && \
 ENV BBB_AS_MODERATOR false
 ENV BBB_USER_NAME Live
 ENV BBB_CHAT_NAME Chat
+ENV BBB_SHOW_CHAT false
 ENV BBB_ENABLE_CHAT false
 ENV BBB_REDIS_HOST redis
 ENV BBB_REDIS_CHANNEL chat
diff --git a/startStream.sh b/startStream.sh
index 7bd8c89ff4610a6cb85eac5415ea4f47cee03e23..8aed46c5a5bd78522d51cd85d75b7bc3e603859a 100644
--- a/startStream.sh
+++ b/startStream.sh
@@ -4,7 +4,13 @@ JOIN_AS_MODERATOR="";
 if [ "${BBB_AS_MODERATOR}" = "true" ]
 then
    JOIN_AS_MODERATOR="-m";
-fi   
+fi 
+
+SHOW_CHAT="";
+if [ "${BBB_SHOW_CHAT}" = "true" ]
+then
+   SHOW_CHAT="-c";
+fi 
 
 if [ "${BBB_ENABLE_CHAT}" = "true" ]
 then
@@ -12,4 +18,4 @@ then
    sleep 10
 fi 
 
-xvfb-run -n 122 --server-args="-screen 0 1920x1080x24" python3 stream.py -s ${BBB_URL} -p ${BBB_SECRET} -i ${BBB_MEETING_ID} -t ${BBB_STREAM_URL} -u ${BBB_USER_NAME} $JOIN_AS_MODERATOR;
+xvfb-run -n 122 --server-args="-screen 0 1920x1080x24" python3 stream.py -s ${BBB_URL} -p ${BBB_SECRET} -i ${BBB_MEETING_ID} -t ${BBB_STREAM_URL} -u ${BBB_USER_NAME} ${SHOW_CHAT} $JOIN_AS_MODERATOR;
diff --git a/stream.py b/stream.py
index 48dc7ec51f0893fc665144ff0208b1267e565c8f..bf17bafc07315388af1c68f2d17e4f3878cd1c77 100644
--- a/stream.py
+++ b/stream.py
@@ -25,6 +25,7 @@ parser.add_argument("-i","--id", help="Big Blue Button Meeting ID")
 parser.add_argument("-m","--moderator", help="Join the meeting as moderator",action="store_true")
 parser.add_argument("-u","--user", help="Name to join the meeting",default="Live")
 parser.add_argument("-t","--target", help="RTMP Streaming URL")
+parser.add_argument("-c","--chat", help="Show the chat",action="store_true")
 args = parser.parse_args()
 
 bbb = BigBlueButton(args.server,args.secret)
@@ -60,8 +61,13 @@ def bbb_browser():
     WebDriverWait(browser, selelnium_timeout).until(element)
     browser.find_element_by_id('message-input').send_keys("This meeting will be stream to the following address: %s" % args.target)
     browser.find_elements_by_css_selector('[aria-label="Send message"]')[0].click()
-    browser.find_elements_by_id('chat-toggle-button')[0].click()
-    browser.find_elements_by_css_selector('button[aria-label="Users and messages toggle"]')[0].click()
+    
+    if args.chat:
+        browser.execute_script("document.querySelector('[aria-label=\"User list\"]').parentElement.style.display='none';")
+    else:
+        browser.find_elements_by_id('chat-toggle-button')[0].click()
+        browser.find_elements_by_css_selector('button[aria-label="Users and messages toggle"]')[0].click()
+        
     browser.execute_script("document.querySelector('[aria-label=\"Users and messages toggle\"]').style.display='none';")
     browser.execute_script("document.querySelector('[aria-label=\"Options\"]').style.display='none';")
     browser.execute_script("document.querySelector('[aria-label=\"Actions bar\"]').style.display='none';")
@@ -82,8 +88,8 @@ def watch():
 def stream():
     audio_options = '-f alsa -i pulse -ac 2 -c:a aac -b:a 160k -ar 44100'
     #video_options = ' -c:v libvpx-vp9 -b:v 2000k -crf 33 -quality realtime -speed 5'
-    video_options = '-c:v libx264 -x264-params "nal-hrd=cbr" -vf format=yuv420p -b:v 4000k -g 60 -preset ultrafast -tune zerolatency'
-    ffmpeg_stream = 'ffmpeg -thread_queue_size 512 -f x11grab -draw_mouse 0 -s 1920x1080  -i :%d %s -threads 0 %s -f flv "%s"' % ( 122, audio_options, video_options, args.target)
+    video_options = '-c:v libx264 -x264-params "nal-hrd=cbr" -profile:v high -level:v 4.2 -vf format=yuv420p -b:v 4000k -maxrate 4000k -minrate 2000k -bufsize 8000k -g 60 -preset ultrafast -tune zerolatency'
+    ffmpeg_stream = 'ffmpeg -thread_queue_size 1024 -f x11grab -draw_mouse 0 -s 1920x1080  -i :%d %s -threads 0 %s -f flv -flvflags no_duration_filesize "%s"' % ( 122, audio_options, video_options, args.target)
     ffmpeg_args = shlex.split(ffmpeg_stream)
     p = subprocess.Popen(ffmpeg_args)