Server: check ffmpeg at startup
authorChocobozzz <florian.bigard@gmail.com>
Fri, 5 May 2017 15:15:21 +0000 (17:15 +0200)
committerChocobozzz <florian.bigard@gmail.com>
Fri, 5 May 2017 15:15:21 +0000 (17:15 +0200)
server/initializers/checker.js

index a3727563ac8041ff63067c1d50f81138fff7ad81..aa8dea4bfa58531e674879906705d6c61a171118 100644 (file)
@@ -2,10 +2,12 @@
 
 const config = require('config')
 
+const constants = require('./constants')
 const db = require('./database')
 
 const checker = {
   checkConfig,
+  checkFFmpeg,
   checkMissedConfig,
   clientsExist,
   usersExist
@@ -42,6 +44,29 @@ function checkMissedConfig () {
   return miss
 }
 
+// Check the available codecs
+function checkFFmpeg (callback) {
+  const Ffmpeg = require('fluent-ffmpeg')
+
+  Ffmpeg.getAvailableCodecs(function (err, codecs) {
+    if (err) return callback(err)
+    if (constants.CONFIG.TRANSCODING.ENABLED === false) return callback(null)
+
+    const canEncode = [ 'libx264' ]
+    canEncode.forEach(function (codec) {
+      if (codecs[codec] === undefined) {
+        return callback(new Error('Unknown codec ' + codec + ' in FFmpeg.'))
+      }
+
+      if (codecs[codec].canEncode !== true) {
+        return callback(new Error('Unavailable encode codec ' + codec + ' in FFmpeg'))
+      }
+    })
+
+    return callback(null)
+  })
+}
+
 function clientsExist (callback) {
   db.OAuthClient.countTotal(function (err, totalClients) {
     if (err) return callback(err)