diff --git a/lib/options.js b/lib/options.js index 4c32804..5a3a273 100644 --- a/lib/options.js +++ b/lib/options.js @@ -14,7 +14,8 @@ var defaults = exports.defaults = { audioChannels: 2, format: 'mp4', useSubripSubtitles: false, - subtitleStyle: null + subtitleStyle: null, + subtitleOptions: null, } exports.define = function (options) { diff --git a/lib/render.js b/lib/render.js index 6fc8054..9539769 100644 --- a/lib/render.js +++ b/lib/render.js @@ -134,7 +134,16 @@ function renderVideo(videoshow, options, forwardEvent, cb) { }) if (subtitles) { - options.push('-vf subtitles=\'' + subtitles + '\'') + const subtitleOptions = [ + '\'' + subtitles + '\'', + ] + if (params.subtitleOptions) { + Object.keys(params.subtitleOptions).forEach(key => { + subtitleOptions.push(key + '=' + '\'' + params.subtitleOptions[key] + '\''); + }); + } + + options.push(`-vf subtitles=` + subtitleOptions.join(':')) } if (videoOptions.pixelFormat) { @@ -222,15 +231,15 @@ function getImageSubtitles(videoshow) { var length = 0 var subtitles = videoshow.images - .map(function (image, index) { - var offset = calculateOffsetDelay(index) - if (image.caption) { - return renderCaption(image, length++, offset, params) - } - }) - .filter(function (caption) { - return caption != null - }) + .map(function (image, index) { + var offset = calculateOffsetDelay(index) + if (image.caption) { + return renderCaption(image, length++, offset, params) + } + }) + .filter(function (caption) { + return caption != null + }) if (!subtitles.length) { return @@ -240,7 +249,11 @@ function getImageSubtitles(videoshow) { extension = '.srt' subtitles = subrip.stringify(subtitles) } else { - subtitles = substation.stringify(subtitles, params.subtitleStyle) + subtitles = substation.stringify(subtitles, { + 'V4 Styles': { + 'Style': params.subtitleStyle, + } + }) } filepath = randomName() + extension diff --git a/lib/substation.js b/lib/substation.js index fc1314c..17b1a87 100644 --- a/lib/substation.js +++ b/lib/substation.js @@ -83,8 +83,8 @@ var defaultParams = { } } -exports.stringify = function (captions, styles) { - var params = mergeParams(styles) +exports.stringify = function (captions, params) { + var params = mergeParams(params) captions.forEach(function (caption) { var subtitle = merge({}, captionParams, { @@ -103,9 +103,8 @@ exports.stringify = function (captions, styles) { return substation(params) } -function mergeParams(styles) { - var params = merge({}, defaultParams) - merge(params['V4 Styles'].Style, styles) +function mergeParams(params) { + var params = merge({}, defaultParams, params); return Object.keys(params).map(function (key) { var body = params[key]