diff --git a/dashboard-ui/components/viewcontainer-lite.js b/dashboard-ui/components/viewcontainer-lite.js
index 1d5d81c649..bfa14eb077 100644
--- a/dashboard-ui/components/viewcontainer-lite.js
+++ b/dashboard-ui/components/viewcontainer-lite.js
@@ -56,6 +56,7 @@ define(['browser'], function (browser) {
dependencies.push('jqmlistview');
dependencies.push('scripts/notifications');
dependencies.push('dashboardcss');
+ dependencies.push('emby-icons');
}
return new Promise(function (resolve, reject) {
diff --git a/dashboard-ui/encodingsettings.html b/dashboard-ui/encodingsettings.html
index 529acc1600..757628571f 100644
--- a/dashboard-ui/encodingsettings.html
+++ b/dashboard-ui/encodingsettings.html
@@ -34,17 +34,29 @@
${OptionEnableTranscodingThrottleHelp}
+
diff --git a/dashboard-ui/scripts/encodingsettings.js b/dashboard-ui/scripts/encodingsettings.js
index b62c0eea2c..cd716098bf 100644
--- a/dashboard-ui/scripts/encodingsettings.js
+++ b/dashboard-ui/scripts/encodingsettings.js
@@ -7,6 +7,7 @@
$('#selectVideoDecoder', page).val(config.HardwareAccelerationType);
$('#selectThreadCount', page).val(config.EncodingThreadCount);
$('#txtDownMixAudioBoost', page).val(config.DownMixAudioBoost);
+ $('.txtEncoderPath', page).val(config.EncoderAppPath || '');
$('#txtTranscodingTempPath', page).val(config.TranscodingTempPath || '');
Dashboard.hideLoadingMsg();
@@ -16,13 +17,14 @@
var form = this;
- var onDecoderConfirmed = function() {
+ var onDecoderConfirmed = function () {
Dashboard.showLoadingMsg();
ApiClient.getNamedConfiguration("encoding").then(function (config) {
config.DownMixAudioBoost = $('#txtDownMixAudioBoost', form).val();
config.TranscodingTempPath = $('#txtTranscodingTempPath', form).val();
+ config.EncoderAppPath = $('.txtEncoderPath', form).val();
config.EncodingThreadCount = $('#selectThreadCount', form).val();
config.HardwareAccelerationType = $('#selectVideoDecoder', form).val();
@@ -74,6 +76,27 @@
var page = this;
+ $('#btnSelectEncoderPath', page).on("click.selectDirectory", function () {
+
+ require(['directorybrowser'], function (directoryBrowser) {
+
+ var picker = new directoryBrowser({
+ includeFiles: true
+ });
+
+ picker.show({
+
+ callback: function (path) {
+
+ if (path) {
+ $('.txtEncoderPath', page).val(path);
+ }
+ picker.close();
+ }
+ });
+ });
+ });
+
$('#btnSelectTranscodingTempPath', page).on("click.selectDirectory", function () {
require(['directorybrowser'], function (directoryBrowser) {
@@ -104,13 +127,21 @@
Dashboard.showLoadingMsg();
- LibraryMenu.setTabs('playback',3, getTabs);
+ LibraryMenu.setTabs('playback', 3, getTabs);
var page = this;
ApiClient.getNamedConfiguration("encoding").then(function (config) {
loadPage(page, config);
+ });
+ ApiClient.getSystemInfo().then(function (systemInfo) {
+
+ if (systemInfo.HasExternalEncoder) {
+ page.querySelector('.fldEncoderPath').classList.add('hide');
+ } else {
+ page.querySelector('.fldEncoderPath').classList.remove('hide');
+ }
});
});
diff --git a/dashboard-ui/strings/en-US.json b/dashboard-ui/strings/en-US.json
index 20b7d20997..14c12ac940 100644
--- a/dashboard-ui/strings/en-US.json
+++ b/dashboard-ui/strings/en-US.json
@@ -2372,5 +2372,8 @@
"LabelBindToLocalNetworkAddressHelp": "Optional. Override the local IP address to bind the http server to. If left empty, the server will bind to all availabile addresses. Changing this value requires restarting Emby Server.",
"TitleHostingSettings": "Hosting Settings",
"SettingsWarning": "Changing these values may cause instability or connectivity failures. If you experience any problems, we recommend changing them back to default.",
- "MapChannels": "Map Channels"
+ "MapChannels": "Map Channels",
+ "LabelffmpegPath": "FFMpeg path:",
+ "LabelffmpegPathHelp": "The path to your ffmpeg application, or folder containing ffmpeg.",
+ "LabelffmpegPathHelp2": "Important: FFProbe must exist within the same folder."
}