| /*jshint node:true*/ | |
| ; | |
| var utils = require('../utils'); | |
| /* | |
| *! Audio-related methods | |
| */ | |
| module.exports = function(proto) { | |
| /** | |
| * Disable audio in the output | |
| * | |
| * @method FfmpegCommand#noAudio | |
| * @category Audio | |
| * @aliases withNoAudio | |
| * @return FfmpegCommand | |
| */ | |
| proto.withNoAudio = | |
| proto.noAudio = function() { | |
| this._currentOutput.audio.clear(); | |
| this._currentOutput.audioFilters.clear(); | |
| this._currentOutput.audio('-an'); | |
| return this; | |
| }; | |
| /** | |
| * Specify audio codec | |
| * | |
| * @method FfmpegCommand#audioCodec | |
| * @category Audio | |
| * @aliases withAudioCodec | |
| * | |
| * @param {String} codec audio codec name | |
| * @return FfmpegCommand | |
| */ | |
| proto.withAudioCodec = | |
| proto.audioCodec = function(codec) { | |
| this._currentOutput.audio('-acodec', codec); | |
| return this; | |
| }; | |
| /** | |
| * Specify audio bitrate | |
| * | |
| * @method FfmpegCommand#audioBitrate | |
| * @category Audio | |
| * @aliases withAudioBitrate | |
| * | |
| * @param {String|Number} bitrate audio bitrate in kbps (with an optional 'k' suffix) | |
| * @return FfmpegCommand | |
| */ | |
| proto.withAudioBitrate = | |
| proto.audioBitrate = function(bitrate) { | |
| this._currentOutput.audio('-b:a', ('' + bitrate).replace(/k?$/, 'k')); | |
| return this; | |
| }; | |
| /** | |
| * Specify audio channel count | |
| * | |
| * @method FfmpegCommand#audioChannels | |
| * @category Audio | |
| * @aliases withAudioChannels | |
| * | |
| * @param {Number} channels channel count | |
| * @return FfmpegCommand | |
| */ | |
| proto.withAudioChannels = | |
| proto.audioChannels = function(channels) { | |
| this._currentOutput.audio('-ac', channels); | |
| return this; | |
| }; | |
| /** | |
| * Specify audio frequency | |
| * | |
| * @method FfmpegCommand#audioFrequency | |
| * @category Audio | |
| * @aliases withAudioFrequency | |
| * | |
| * @param {Number} freq audio frequency in Hz | |
| * @return FfmpegCommand | |
| */ | |
| proto.withAudioFrequency = | |
| proto.audioFrequency = function(freq) { | |
| this._currentOutput.audio('-ar', freq); | |
| return this; | |
| }; | |
| /** | |
| * Specify audio quality | |
| * | |
| * @method FfmpegCommand#audioQuality | |
| * @category Audio | |
| * @aliases withAudioQuality | |
| * | |
| * @param {Number} quality audio quality factor | |
| * @return FfmpegCommand | |
| */ | |
| proto.withAudioQuality = | |
| proto.audioQuality = function(quality) { | |
| this._currentOutput.audio('-aq', quality); | |
| return this; | |
| }; | |
| /** | |
| * Specify custom audio filter(s) | |
| * | |
| * Can be called both with one or many filters, or a filter array. | |
| * | |
| * @example | |
| * command.audioFilters('filter1'); | |
| * | |
| * @example | |
| * command.audioFilters('filter1', 'filter2=param1=value1:param2=value2'); | |
| * | |
| * @example | |
| * command.audioFilters(['filter1', 'filter2']); | |
| * | |
| * @example | |
| * command.audioFilters([ | |
| * { | |
| * filter: 'filter1' | |
| * }, | |
| * { | |
| * filter: 'filter2', | |
| * options: 'param=value:param=value' | |
| * } | |
| * ]); | |
| * | |
| * @example | |
| * command.audioFilters( | |
| * { | |
| * filter: 'filter1', | |
| * options: ['value1', 'value2'] | |
| * }, | |
| * { | |
| * filter: 'filter2', | |
| * options: { param1: 'value1', param2: 'value2' } | |
| * } | |
| * ); | |
| * | |
| * @method FfmpegCommand#audioFilters | |
| * @aliases withAudioFilter,withAudioFilters,audioFilter | |
| * @category Audio | |
| * | |
| * @param {...String|String[]|Object[]} filters audio filter strings, string array or | |
| * filter specification array, each with the following properties: | |
| * @param {String} filters.filter filter name | |
| * @param {String|String[]|Object} [filters.options] filter option string, array, or object | |
| * @return FfmpegCommand | |
| */ | |
| proto.withAudioFilter = | |
| proto.withAudioFilters = | |
| proto.audioFilter = | |
| proto.audioFilters = function(filters) { | |
| if (arguments.length > 1) { | |
| filters = [].slice.call(arguments); | |
| } | |
| if (!Array.isArray(filters)) { | |
| filters = [filters]; | |
| } | |
| this._currentOutput.audioFilters(utils.makeFilterStrings(filters)); | |
| return this; | |
| }; | |
| }; | |