Git Product home page Git Product logo

bbb-mp4's Introduction

BigBlueButton MP4

Easily integrate this app into your BigBlueButton server to automatically convert class recordings into MP4 videos.

How it works?

After a BigBlueButton class ends, recording process kicks in, which will process recording in three stages - archieve, process and publish. Once recording is published, /usr/local/bigbluebutton/core/scripts/post_publish/bbb_mp4.rb is executed.

In bbb_mp4.rb, we invoke bbb-mp4.sh with corresponding meeting_id to convert recording into mp4 video.

bbb-mp4.sh starts a docker process to launch Chrome browser with the BigBlueButton playback URL in a Virtual Screen Buffer, that plays the recording and FFmpeg will capture the screen in mp4 format. MP4 will be moved to /var/www/bigbluebutton-default/recording.

When you visit the default BBB playback url https://<your-bbb-fqdn>/playback/presentation/2.3/<meeting_id>, either of the following two cases happen:

  • MP4 video exists: A download button will appear at the bottom right.
  • MP4 video doesn't exist: A download button will not appear.

Hence, you can safely deploy this project on your existing BigBlueButton server.

  • Going forward, all your recordings would get converted into MP4 videos.
  • Older recordings will still be accessible as default BBB playback recording.

Requirement

  1. Install the Docker as per the instruction mentioned here https://docs.docker.com/engine/install/

Install

# Assuming you install bbb-mp4 project at /var/www/
# SSH to your BigBlueButton server and execute the following commands
cd /var/www
git clone https://github.com/manishkatyan/bbb-mp4.git
cd bbb-mp4

Edit .env to update the following parameters:

  1. BBB_DOMAIN_NAME: (Example - bbb.higheredlab.com)
  2. COPY_TO_LOCATION: location where converted MP4 videos should be kept. Leave it at the default value so that you can view MP4 video at https://<your-bbb-fqdn>/recording/<meeting_id>.mp4.
# Execute the following to install all required packages.
./bbb-mp4-install.sh

bbb-mp4-install.sh will install the following packages In Docker :

  1. XVFB
  2. Google Chrome
  3. FFmpeg
  4. NodeJS
  5. Dependencies

During this installation, bbb-mp4-install.sh will also do the following:

  • create bbb_mp4.rb to invoke bbb-mp4.sh that will start automatic MP4 conversion after a class recording is published.
  • create a directory recording at /var/www/bigbluebutton-default to store converted MP4 videos that can be accessed via browser.
  • update the default index.html at /var/bigbluebutton/playback/presentation/2.3/index.html to provide download button.
# add user bigbluebutton to docker group
sudo usermod -aG docker bigbluebutton

# change ownership of /var/www/bbb-mp4 to bigbluebutton
sudo chown -R bigbluebutton:bigbluebutton /var/www/bbb-mp4

You need to give user bigbluebutton sudo access, as detailed above, for bbb-mp4 to run correctly.

If you are using BigBlueButton 2.6 or higher version you need to add nginx location to access mp4 recording

cd /usr/share/bigbluebutton/nginx
sudo touch bbb-mp4.nginx
sudo bash -c "echo 'location /recording { root    /var/www/bigbluebutton-default; }' > bbb-mp4.nginx"
sudo nginx -t
sudo nginx -s reload

How to use it

No changes are required from your side to view MP4 videos created by bbb-mp4.

As we updated the default index.html, when you would visit the default playback url - https://<your-bbb-fqdn>/playback/presentation/2.3/<meeting_id> - you would see a download button

If you are using Greenlight or Moodle, you will continue to use the same way to view MP4 videos.

Uninstall

In case you want to restore the default playback.html, please follow the steps below:

mv /var/bigbluebutton/playback/presentation/2.3/index_default.html /var/bigbluebutton/playback/presentation/2.3/index.html
mv /usr/local/bigbluebutton/core/scripts/post_publish/bbb_mp4.rb /usr/local/bigbluebutton/core/scripts/post_publish/bbb_mp4.rb.old

With this, you would be able to restore default playback behavior and default post_poublish action.

Save big with our affordable BigBlueButton hosting.

  • Bare metal servers for HD video
  • 40% lower hosting costs
  • Top-rated tech support, 100% uptime
  • Upgrade / cancel anytime
  • 2 weeks free trial; No credit card needed

Start Free Trial

bbb-mp4's People

Contributors

arun-hel avatar manishkatyan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

bbb-mp4's Issues

Possible bug?

Sometimes I run into this problem:

Starting pulseaudio...
Waiting for pulseaudio to start...
(node:19) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'close' of undefined
    at main (/usr/src/app/bbb-mp4.js:122:14)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:19) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:19) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
TimeoutError: Timed out after 30000 ms while trying to connect to the browser! Only Chrome at revision r869685 is guaranteed to work.
    at Timeout.onTimeout (/usr/src/app/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:205:20)
    at listOnTimeout (internal/timers.js:557:17)
    at processTimers (internal/timers.js:500:7)

Is this work with BigBlueButton v2.5.2 (3031)?!

Hi
Thanks for your script. I installed that and test once. Everything was ok. But after a day, the download button has been disappeared. I even executed bbb-record --rebuildall command to rebuild all records but nothing happened!

How can I make sure that this script is fully installed and work?

Improve Download buton

Hi, with a minor change in download-button.js is possible to directly download de file instead of browser opening another tab showing the mp4 video. Only adding a download tag in the anchor definition like:
a.setAttribute("download", url.pathname.split("/")[4])

I've tested it and works great !
Cheers

records were not visible on greenlight

hi, i installed it on my server and it worked fine. However, when I installed it on another server, the records were not visible on greenlight. how should i go?

Mp4 recording not working automatically

Hello guys,
Thank you very much for the nice project.
I followed the installation instructions, but here what is happening:
1- Start the meeting > start the recording > end the meeting.
2- tail -f /var/log/bigbluebutton/post_publish.log

I, [2021-02-17T18:14:52.654513 #26989] INFO -- : Task: Getting meeting metadata
I, [2021-02-17T18:14:52.675215 #26989] INFO -- : MP4 conversion started ID : true
I, [2021-02-17T18:14:53.148714 #26995] INFO -- : Task: Getting meeting metadata
I, [2021-02-17T18:14:53.164974 #26995] INFO -- : Recording Ready Notify for [ID] starts
I, [2021-02-17T18:14:53.165110 #26995] INFO -- : Recording Ready notify ends

3- nothing is showing in the directory: /var/www/bigbluebutton-default/recording

I should start the process manually by using the command below:

  1. node bbb-mp4.js https://bbb-fqdn/playback/presentation/2.0/playback.html?meetingId=ID
  2. ./bbb-mp4.sh ID
    to be able to see the mp4 files.

I am expecting all process will be working automatically, can you please help to figure out what is wrong here.

How to adjust video size and quality?

Hi @manishkatyan ,
thank you for this very useful software.
We have tested it and it works fine.
But I am wondering where and how I can adjust the video size and quality for different purposes.

Regards,
Gerhard

Integrate with Scalelite Playback

Hi
I want to use your script with the Scalelite load balancer. It means when the user uses the Scalelite playback page, it has a download link on it.

I think it can be deployed in 2 ways:

1- Offline mp4 (bbb-mp4) is made on BBB server and transferred to the Scalelite
2- Offline mp4 (bbb-mp4) is made on Scalelite after transfer videos to it

How can I do this?

No such file or directory

When run the ./bbb-mp4.sh then show /var/www/bbb-mp4/webm/.webm: No such file or directory mp4_dir=/var/www/bigbluebutton-default/recording webm_dir=/var/www/bbb-mp4/webm download_dir=/var/www/bbb-mp4/download bbb_fqdn=xyz.xyz.com playbackFile=playback_default.html

BBB 2.3 - Continuous processing without ending

We've got a BBB 2.3.1 instance and have the bbb-mp4 installed (minus the automatic creation and modified playback files). We've done this with BBB 2.2 with success. We're running into an issue with BBB 2.3.1 where the process starts fine and creates an mp4 output, but the process never ends. The mp4 continues to get larger in size until we kill the container.

Here are the logs from the container:

Starting pulseaudio...
Waiting for pulseaudio to start...
PAGE LOG: Failed to load resource: the server responded with a status of 404 (Not Found)
PAGE LOG: Failed to load resource: the server responded with a status of 404 (Not Found)
Recording found
20759
waitFor is deprecated and will be removed in a future release. See https://github.com/puppeteer/puppeteer/issues/6214 for details and how to migrate your code.
stderr: ffmpeg version 4.3.2-0york0~18.04 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
  configuration: --prefix=/usr --extra-version='0york0~18.04' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libzimg --enable-pocketsphinx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared

stderr:   libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100

stderr: [x11grab @ 0x56223e0c0840] Stream #0: not enough frames to estimate rate; consider increasing probesize

stderr: Input #0, x11grab, from ':114':
  Duration: N/A, start: 1621256480.225877, bitrate: 983040 kb/s
    Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1280x800, 983040 kb/s, 30 fps, 1000k tbr, 1000k tbn, 1000k tbc

stderr: Guessed Channel Layout for Input Stream #1.0 : stereo
Input #1, alsa, from 'pulse':
  Duration: N/A, start: 1621256480.268611, bitrate: 1536 kb/s

stderr:     Stream #1:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s

stderr: Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
  Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (native))
stderr: 
Press [q] to stop, [?] for help

stderr: [libx264 @ 0x56223e0ea440] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 AVX512

stderr: [libx264 @ 0x56223e0ea440] profile High, level 3.2

stderr: [libx264 @ 0x56223e0ea440] 264 - core 155 r2917 0a84d98 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=1 ref=2 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=6 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=30 rc=crf mbtree=1 crf=22.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00

stderr: Output #0, mp4, to '/usr/src/app/download/3bcc64efbf4d748bd83ed2e2bbbb63f639d33f67-1620428235349.mp4':
  Metadata:
    encoder         : Lavf58.45.100

stderr:     Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p(progressive), 1280x800, q=-1--1, 30 fps, 15360 tbn, 30 tbc
    Metadata:
      encoder         : Lavc58.91.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
    Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s
    Metadata:
      encoder         : Lavc58.91.100 aac

PAGE LOG: Failed to load resource: net::ERR_CONTENT_LENGTH_MISMATCH
PAGE LOG: Failed to load resource: net::ERR_CONNECTION_RESET

Problema no acesso público dos arquivos mp4 gerados

Estou usando a versão 2.6.8 do bbb
Em um linux: Canonical, Ubuntu, 20.04 LTS, amd64

Ao tentar acessar os arquivos mp4 gerados pela url: https://<your-bbb-fqdn>/recording/<meeting_id>.mp4
Me deparava com o HTTP ERROR 406 persistentemente

Para resolver, executei os seguintes comandos:

cd /usr/share/bigbluebutton/nginx
sudo touch bbb-mp4.nginx
sudo bash -c "echo 'location /recording { root    /var/www/bigbluebutton-default; }' > bbb-mp4.nginx"
sudo systemctl reload nginx

É necessário se atentar que o caminho do root no arquivo bbb-mp4.nginx deve ser o mesmo do COPY_TO_LOCATION contido no arquivo /var/www/bbb-mp4/.env

Change of presentation/playback URL

The new updates over the weekend are great and have made what we were looking to do much simpler so thank you.

One thing that has changed though is the ease of being able to change the presentation that's recorded. By default it's using /2.0/ presentation, with the previous script we copied /2.0/ into our own presenation/playback with the chat stripped out and a few more changes so that we could change the layout of the resulting video.

Is it possible to make the URL that's recorded in the video an item in .env like it was before?

Also, not sure if this is a common issue but on the initial run of bbb-mp4-install.sh, apt complained that it couldn't find google-chrome-stable, I ran apt install google-chrome-stable after it finished and it installed without a problem. I then re-ran the bbb-mp4-install.sh script which went through and picked up ffmpeg which looks like it didn't install properly first time either. This was on an updated Ubuntu 16.04.7 server.

Compatibility with BBB 2.6?

Hi, I am successfully using this mp4 download script in BBB 2.4 version. Thanks for this script. Recently I created a all new install of BBB 2.6 in AWS EC2 instance and also installed this bbb-mp4 script. When a meeting is completed, the download button is not shown in the default playback link (I am using Greenlight Version 3).

But on seeing the /var/www/bigbluebutton-default/recording folder in FileZilla, the mp4 file is created and able to be downloaded through file zilla. The issue is the download button is not showing in the default playback url and also on accessing,
https://<>/recording/meeting-id.mp4 is not loading that video. But I am able to see that video in file zilla for that specific meeting that too with the same meeting id file name. Is there any compatibility issue with recent BBB 2.6 or Am I missing anything? Kindly help in this regard.

docker cmd, ffmpeg errors.

Hi,

very usefull thing

can you check your docker run cmd

sudo docker run --rm -d \

i do not undrestand why you use env ** --env-file /var/www/bbb-mp4/.env** here if you passed domain and record path with other vars.

the second is ffmpeg error:

PAGE LOG: Failed to load resource: the server responded with a status of 404 ()
PAGE LOG: Failed to load resource: the server responded with a status of 404 ()
Recording found
5796.047
waitFor is deprecated and will be removed in a future release. See https://gith
b.com/puppeteer/puppeteer/issues/6214 for details and how to migrate your code.
stderr: ffmpeg version 4.3.2-0york0~18.04 Copyright (c) 2000-2021 the FFmpeg de
elopers
built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
configuration: --prefix=/usr --extra-version='0york0~18.04' --toolchain=harde
ed --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --
rch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter
resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enab
e-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcode
2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfri
idi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enab
e-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-
ibpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-l
bshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --
nable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enabl
-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx26
--enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv
--enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --e
able-libzimg --enable-pocketsphinx --enable-libdc1394 --enable-libdrm --enable-
ibiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-share

stderr: libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100

stderr: [x11grab @ 0x55d90f406840] Stream #0: not enough frames to estimate rat
; consider increasing probesize

stderr: Input #0, x11grab, from ':193':
Duration: N/A, start: 1625498742.450675, bitrate: 983040 kb/s
Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1280x800, 983040 kb
s, 30 fps, 1000k tbr, 1000k tbn, 1000k tbc

stderr: Guessed Channel Layout for Input Stream #1.0 : stereo
Input #1, alsa, from 'pulse':
Duration: N/A, start: 1625498742.499923, bitrate: 1536 kb/s

stderr: Stream #1:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s

stderr: Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (native))
Press [q] to stop, [?] for help

stderr: [libx264 @ 0x55d90f430b80] using cpu capabilities: MMX2 SSE2Fast SSSE3
SE4.2 AVX FMA3 BMI2 AVX2

stderr: [libx264 @ 0x55d90f430b80] profile High, level 3.2

stderr: [libx264 @ 0x55d90f430b80] 264 - core 155 r2917 0a84d98 - H.264/MPEG-4
VC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: ca
ac=1 ref=2 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=6 psy=1 psy_rd=1.00:0.0
mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fa
t_pskip=1 chroma_qp_offset=-2 threads=24 lookahead_threads=4 sliced_threads=0 n
=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyra
id=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=250 keyi
t_min=25 scenecut=40 intra_refresh=0 rc_lookahead=30 rc=crf mbtree=1 crf=22.0 q
omp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00

stderr: Output #0, mp4, to '/usr/src/app/download/441d2cf98f167ffceae167cff8c1d
87f161b3ac-1620716225849.mp4':
Metadata:
encoder : Lavf58.45.100
Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p(progressive
, 1280x800, q=-1--1, 30 fps, 15360 tbn, 30 tbc
Metadata:
encoder : Lavc58.91.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A

stderr: Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo,
fltp, 128 kb/s
Metadata:
encoder : Lavc58.91.100 aac

stderr: [alsa @ 0x55d90f4114c0] Thread message queue blocking; consider raising
the thread_queue_size option (current value: 1024)

PAGE LOG: Failed to load resource: net::ERR_HTTP2_PROTOCOL_ERROR
PAGE LOG: Failed to load resource: net::ERR_HTTP2_PROTOCOL_ERROR
PAGE LOG: Failed to load resource: net::ERR_HTTP2_PROTOCOL_ERROR

the record is actually exists.
and the error I am vorry about:
stderr: [alsa @ 0x55d90f4114c0] Thread message queue blocking; consider raising
the thread_queue_size option (current value: 1024)

Reduce Final MP4 Size

Hi Manish,

Scripts are working well. But the final output mp4 size is too large.
When I have used https://github.com/jibon57/bbb-recorder, 2 Hour video would come around 200 Mb Maximum, Now the Same video is going upto 800mb.

Kindly update your ffmpeg command to reduce the final output size

bbb 2.6.5 some records fail

some records fail after update to 2.6.5
I think script do not wait long enough to load full page and fail.

Thu May  4 11:05:36 UTC 2023 converting 5df99deb8da2b6c4555efa21862c5a7f7c0d08d3-1683037180578 to mp4 duration 65 min
f77735c08475bbe89ff964a2e5e9500d71b44ec8817e4ac66a5510ce6c3813ae
Starting pulseaudio...
Waiting for pulseaudio to start...
PAGE LOG: Failed to load resource: the server responded with a status of 404 ()
PAGE LOG: Failed to load resource: the server responded with a status of 404 ()
PAGE LOG: Failed to load resource: the server responded with a status of 404 ()
Recording found
NaN
waitFor is deprecated and will be removed in a future release. See https://github.com/puppeteer/puppeteer/issues/6214 for details and how to migrate your code.
stderr: ffmpeg version 4.3.2-0york0~18.04 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
  configuration: --prefix=/usr --extra-version='0york0~18.04' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libzimg --enable-pocketsphinx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared

stderr:   libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100

stderr: [x11grab @ 0x5615e8605840] Cannot open display :155, error 1.

stderr: :155: Input/output error

stdout: Moving video to processed folder

stderr: mv: cannot stat '/usr/src/app/processing/5df99deb8da2b6c4555efa21862c5a7f7c0d08d3-1683037180578.mp4': No such file or directory

child process exited with code 1

Full resource usage problem (CPU and RAM 100%!)

Hi
I have a problem in using your script in a server with 4 core CPUs (E5-2695 v2 @ 2.40GHz) and 4 GB RAM + 8 GB Swap space with very low number of class (1 or 2 concurrent session).
After a session finishing, server consume all the resources for many hours (for example 24 hours) to create mp4 file!!!!
In this situation, nobody can join to the new class and we must wait to finish server process!

These are two photos of htop status. How can I limit the resource usage?

image

image

Conversion status of the file to download

Meanwhile, I would like to thank you for the two problems solved in a brilliant way. But I ask you if you can make some corrections to the download button so that it can indicate, perhaps by changing the colour of the 'download' text, when the system has finished converting the video to mp4 format. In fact, if you try to press the button before the conversion has been completed, the browser window opens, indicating a file format that cannot be interpreted.
Yours sincerely

No mp4 file created

Hi,

I installed bbb-mp4. After presentation published no mp4 file created.

tail -f /var/log/bigbluebutton/post_publish.log
I, [2021-10-28T09:06:57.529659 #24777] INFO -- : Task: Getting meeting metadata
I, [2021-10-28T09:06:57.531597 #24777] INFO -- : Recording Ready notify ends
I, [2021-10-28T09:19:53.713002 #29145] INFO -- : Task: Getting meeting metadata
I, [2021-10-28T09:19:53.998739 #29222] INFO -- : Recording Ready Notify for [183f0bf3a0982a127bdb8161e0c44eb696b3e75c-1635401937731] starts
I, [2021-10-28T09:19:53.998791 #29222] INFO -- : Task: Getting meeting metadata
I, [2021-10-28T09:19:54.000528 #29222] INFO -- : Recording Ready notify ends
I, [2021-10-28T09:45:11.847465 #2154] INFO -- : MP4 conversion started for 183f0bf3a0982a127bdb8161e0c44eb696b3e75c-1635403447546: true
I, [2021-10-28T09:45:12.785176 #2269] INFO -- : Recording Ready Notify for [183f0bf3a0982a127bdb8161e0c44eb696b3e75c-1635403447546] starts
I, [2021-10-28T09:45:12.785237 #2269] INFO -- : Task: Getting meeting metadata
I, [2021-10-28T09:45:12.786457 #2269] INFO -- : Recording Ready notify ends

ls -l /mnt/scalelite-recordings/var/bigbluebutton/mp4/

total 0

Supports BBB 2.4?

Hi, I am already using bbb-mp4 in version 2.3 and everything works fine. Now on installing in new BBB 2.4, it seems that the mp4 process is not auto started. On running the mp4 process manually, it works fine and mp4 video is created. But it is not starting automatically in version 2.4. My doubt is, is bbb-mp4 supports BBB version 2.4 OR Am I missing something? Kindly help.

Using on already MP4 Enabled server?

Hi
Thanks for your useful script. I have a question:

I've already enabled MP4 video and disabled WEBM format in /usr/local/bigbluebutton/core/scripts/presentation.yml
Can I use your script on my server? Will duplicate mp4 files be created?

Download Button gone after Update BBB 2.3.4 -> 2.3.6

Greetings, thank you for this awesome tool.

My download button is gone since that update.
But also there is no 404 error for the mp4 in the DevTools,
so I think the javascript is not checking for the file anymore.

Running ./bbb-mp4-install.sh again does not help. Any ideas?

mp4 file remains on the server after deleting the recording in greenlight

I fixed it by assigning the default mp4 dir to :

mp4_dir = /var/bigbluebutton/published/presentation

So if a user deletes the recording in Greenlight, he also deletes the mp4.
Then I changed the last line in bbb_mp4.sh to:

ffmpeg -nostdin -y -i "$webm_dir"/"$meeting_id".webm -c:v libx264 -preset veryfast -movflags faststart -profile:v high -level 4.2 -max_muxing_queue_size 9999 -vf mpdecimate -vsync vfr "$mp4_dir"/"$meeting_id"/"recording.mp4

But then I can't access the mp4 file from the url anymore. Any idea how to redirect to the new file location?

Great Tool, thank you a lot!

VARIABLE ERROR TYPE

The error of type of undefined variable does not allow the visualization of the download button.
Schermata del 2021-06-01 11-58-54

scalelite aws bigbluebutton setup problem

First of all thank you very much for this usefull app. i wonder that can i install it scalelite bbb system? if yes how?
Because you know that in scalelite bbb scalelite ec2 copies all presentation to itself. So where should i install this app bbbstack or scalelite stack? i confused.

New version

Hi!
thank You very mutch for your work ))
I have a two questions:

  1. I`s installd BBB-MP4 about two mounth ago, but now exixst a new version. What must I do for update my BBB-MP4 to lasted version?
  2. Can I to convert my old video in BBB to mp4 via BBB-MP4?
    Thank You again!

Add user to docker group instead of sudo

I don't get it why would you have the bigbluebutton user run any command via sudo passwordless.
If, as it seems to be, you just need to create docker containers you can simply add the user to the docker group.
Will test this shortly.

BBB 2.4.9 compatibility

Hi,
I have a problem with viewing the recordings:

bbb 2.4.9 (3079)

Chrome 103.0.5060.66: Recording ok, but no "download" button.
Firefox 102.0: blank page.
Edge 103.0.1264.44: blank page.

Same problem for you too?
Thanks.

The bbb-mp4-install.sh installation script does not create the recording folder

Hello, in the meantime I would like to thank you for this very useful tool for converting BBB recording to MP4, there are some small issues that I noticed while installing the script:
the recording folder in /var/www/bigbluebutton-default/ is not created automatically and must be created manually.
Also I would like to ask you how you can change the video resolution of the generated MP4 file.
I thank you in advance for whatever you can tell me.
Best regards
John

Add check for mp4 recording

We're looking at adding this on to an existing installation of BBB which already has recordings.

Going to playback.html always redirects, is it possible to add a check to see if the mp4 file exists first, if it doesn't then direct the user to playback_default.html?

The alternative is to manually run all previous saved recordings but that will take a long time as there are hundreds of recordings some of which are over 6 hours long.

Over two hours and video quality

Hi Thank You for Your work )).
Is installd а new version. All work is OK but only if a conference about two hours duration. If a conference lasts more than two hours, mp4 file is created, but its broken.
What can I do to extend processing time for mp4 file?
And one more question:
How can I to change quolity video in mp4 file?

Thank You again.

How can I change video resolution to 1366 x 768

Hi. I want change recording screen resolution. I change in ffmpeg-cmd.sh and bbb-mp4.js resolution line but i check recording video. The video resolotion is 1280 X 800. What can i do for change resolution video?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.