commit
aa096a755f
|
|
@ -25,6 +25,16 @@ var config =
|
||||||
{ scaleResolutionDownBy: 2 },
|
{ scaleResolutionDownBy: 2 },
|
||||||
{ scaleResolutionDownBy: 1 }
|
{ scaleResolutionDownBy: 1 }
|
||||||
],
|
],
|
||||||
|
/**
|
||||||
|
* White listing browsers that support audio output device selection.
|
||||||
|
* It is not yet fully implemented in Firefox.
|
||||||
|
* See: https://bugzilla.mozilla.org/show_bug.cgi?id=1498512
|
||||||
|
*/
|
||||||
|
audioOutputSupportedBrowsers :
|
||||||
|
[
|
||||||
|
'chrome',
|
||||||
|
'opera'
|
||||||
|
],
|
||||||
// Socket.io request timeout
|
// Socket.io request timeout
|
||||||
requestTimeout : 10000,
|
requestTimeout : 10000,
|
||||||
transportOptions :
|
transportOptions :
|
||||||
|
|
|
||||||
|
|
@ -244,6 +244,8 @@ export default class RoomClient
|
||||||
|
|
||||||
this._audioDevices = {};
|
this._audioDevices = {};
|
||||||
|
|
||||||
|
this._audioOutputDevices = {};
|
||||||
|
|
||||||
// mediasoup Consumers.
|
// mediasoup Consumers.
|
||||||
// @type {Map<String, mediasoupClient.Consumer>}
|
// @type {Map<String, mediasoupClient.Consumer>}
|
||||||
this._consumers = new Map();
|
this._consumers = new Map();
|
||||||
|
|
@ -456,6 +458,7 @@ export default class RoomClient
|
||||||
|
|
||||||
await this._updateAudioDevices();
|
await this._updateAudioDevices();
|
||||||
await this._updateWebcams();
|
await this._updateWebcams();
|
||||||
|
await this._updateAudioOutputDevices();
|
||||||
|
|
||||||
store.dispatch(requestActions.notify(
|
store.dispatch(requestActions.notify(
|
||||||
{
|
{
|
||||||
|
|
@ -1107,6 +1110,37 @@ export default class RoomClient
|
||||||
meActions.setAudioInProgress(false));
|
meActions.setAudioInProgress(false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async changeAudioOutputDevice(deviceId)
|
||||||
|
{
|
||||||
|
logger.debug('changeAudioOutputDevice() [deviceId: %s]', deviceId);
|
||||||
|
|
||||||
|
store.dispatch(
|
||||||
|
meActions.setAudioOutputInProgress(true));
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
const device = this._audioOutputDevices[deviceId];
|
||||||
|
|
||||||
|
if (!device)
|
||||||
|
throw new Error('Selected audio output device no longer avaibale');
|
||||||
|
|
||||||
|
logger.debug(
|
||||||
|
'changeAudioOutputDevice() | new selected [audio output device:%o]',
|
||||||
|
device);
|
||||||
|
|
||||||
|
store.dispatch(settingsActions.setSelectedAudioOutputDevice(deviceId));
|
||||||
|
|
||||||
|
await this._updateAudioOutputDevices();
|
||||||
|
}
|
||||||
|
catch (error)
|
||||||
|
{
|
||||||
|
logger.error('changeAudioOutputDevice() failed: %o', error);
|
||||||
|
}
|
||||||
|
|
||||||
|
store.dispatch(
|
||||||
|
meActions.setAudioOutputInProgress(false));
|
||||||
|
}
|
||||||
|
|
||||||
async changeVideoResolution(resolution)
|
async changeVideoResolution(resolution)
|
||||||
{
|
{
|
||||||
logger.debug('changeVideoResolution() [resolution: %s]', resolution);
|
logger.debug('changeVideoResolution() [resolution: %s]', resolution);
|
||||||
|
|
@ -2717,6 +2751,19 @@ export default class RoomClient
|
||||||
this.enableWebcam();
|
this.enableWebcam();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await this._updateAudioOutputDevices();
|
||||||
|
|
||||||
|
const { selectedAudioOutputDevice } = store.getState().settings;
|
||||||
|
|
||||||
|
if (!selectedAudioOutputDevice && this._audioOutputDevices !== {})
|
||||||
|
{
|
||||||
|
store.dispatch(
|
||||||
|
settingsActions.setSelectedAudioOutputDevice(
|
||||||
|
Object.keys(this._audioOutputDevices)[0]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
store.dispatch(roomActions.setRoomState('connected'));
|
store.dispatch(roomActions.setRoomState('connected'));
|
||||||
|
|
||||||
// Clean all the existing notifications.
|
// Clean all the existing notifications.
|
||||||
|
|
@ -3515,4 +3562,35 @@ export default class RoomClient
|
||||||
logger.error('_getWebcamDeviceId() failed:%o', error);
|
logger.error('_getWebcamDeviceId() failed:%o', error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async _updateAudioOutputDevices()
|
||||||
|
{
|
||||||
|
logger.debug('_updateAudioOutputDevices()');
|
||||||
|
|
||||||
|
// Reset the list.
|
||||||
|
this._audioOutputDevices = {};
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
logger.debug('_updateAudioOutputDevices() | calling enumerateDevices()');
|
||||||
|
|
||||||
|
const devices = await navigator.mediaDevices.enumerateDevices();
|
||||||
|
|
||||||
|
for (const device of devices)
|
||||||
|
{
|
||||||
|
if (device.kind !== 'audiooutput')
|
||||||
|
continue;
|
||||||
|
|
||||||
|
this._audioOutputDevices[device.deviceId] = device;
|
||||||
|
}
|
||||||
|
|
||||||
|
store.dispatch(
|
||||||
|
meActions.setAudioOutputDevices(this._audioOutputDevices));
|
||||||
|
}
|
||||||
|
catch (error)
|
||||||
|
{
|
||||||
|
logger.error('_updateAudioOutputDevices() failed:%o', error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,8 @@ beforeEach(() =>
|
||||||
me : {
|
me : {
|
||||||
audioDevices : null,
|
audioDevices : null,
|
||||||
audioInProgress : false,
|
audioInProgress : false,
|
||||||
|
audioOutputDevices : null,
|
||||||
|
audioOutputInProgress : false,
|
||||||
canSendMic : false,
|
canSendMic : false,
|
||||||
canSendWebcam : false,
|
canSendWebcam : false,
|
||||||
canShareFiles : false,
|
canShareFiles : false,
|
||||||
|
|
@ -72,11 +74,12 @@ beforeEach(() =>
|
||||||
windowConsumer : null
|
windowConsumer : null
|
||||||
},
|
},
|
||||||
settings : {
|
settings : {
|
||||||
advancedMode : true,
|
advancedMode : true,
|
||||||
displayName : 'Jest Tester',
|
displayName : 'Jest Tester',
|
||||||
resolution : 'ultra',
|
resolution : 'ultra',
|
||||||
selectedAudioDevice : 'default',
|
selectedAudioDevice : 'default',
|
||||||
selectedWebcam : 'soifjsiajosjfoi'
|
selectedAudioOutputDevice : 'default',
|
||||||
|
selectedWebcam : 'soifjsiajosjfoi'
|
||||||
},
|
},
|
||||||
toolarea : {
|
toolarea : {
|
||||||
currentToolTab : 'chat',
|
currentToolTab : 'chat',
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,12 @@ export const setAudioDevices = (devices) =>
|
||||||
payload : { devices }
|
payload : { devices }
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export const setAudioOutputDevices = (devices) =>
|
||||||
|
({
|
||||||
|
type : 'SET_AUDIO_OUTPUT_DEVICES',
|
||||||
|
payload : { devices }
|
||||||
|
});
|
||||||
|
|
||||||
export const setWebcamDevices = (devices) =>
|
export const setWebcamDevices = (devices) =>
|
||||||
({
|
({
|
||||||
type : 'SET_WEBCAM_DEVICES',
|
type : 'SET_WEBCAM_DEVICES',
|
||||||
|
|
@ -69,6 +75,12 @@ export const setAudioInProgress = (flag) =>
|
||||||
payload : { flag }
|
payload : { flag }
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export const setAudioOutputInProgress = (flag) =>
|
||||||
|
({
|
||||||
|
type : 'SET_AUDIO_OUTPUT_IN_PROGRESS',
|
||||||
|
payload : { flag }
|
||||||
|
});
|
||||||
|
|
||||||
export const setWebcamInProgress = (flag) =>
|
export const setWebcamInProgress = (flag) =>
|
||||||
({
|
({
|
||||||
type : 'SET_WEBCAM_IN_PROGRESS',
|
type : 'SET_WEBCAM_IN_PROGRESS',
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,12 @@ export const setSelectedAudioDevice = (deviceId) =>
|
||||||
payload : { deviceId }
|
payload : { deviceId }
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export const setSelectedAudioOutputDevice = (deviceId) =>
|
||||||
|
({
|
||||||
|
type : 'CHANGE_AUDIO_OUTPUT_DEVICE',
|
||||||
|
payload : { deviceId }
|
||||||
|
});
|
||||||
|
|
||||||
export const setSelectedWebcamDevice = (deviceId) =>
|
export const setSelectedWebcamDevice = (deviceId) =>
|
||||||
({
|
({
|
||||||
type : 'CHANGE_WEBCAM',
|
type : 'CHANGE_WEBCAM',
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,8 @@ import PeerAudio from './PeerAudio';
|
||||||
const AudioPeers = (props) =>
|
const AudioPeers = (props) =>
|
||||||
{
|
{
|
||||||
const {
|
const {
|
||||||
micConsumers
|
micConsumers,
|
||||||
|
audioOutputDevice
|
||||||
} = props;
|
} = props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
@ -19,6 +20,7 @@ const AudioPeers = (props) =>
|
||||||
<PeerAudio
|
<PeerAudio
|
||||||
key={micConsumer.id}
|
key={micConsumer.id}
|
||||||
audioTrack={micConsumer.track}
|
audioTrack={micConsumer.track}
|
||||||
|
audioOutputDevice={audioOutputDevice}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
|
|
@ -29,12 +31,14 @@ const AudioPeers = (props) =>
|
||||||
|
|
||||||
AudioPeers.propTypes =
|
AudioPeers.propTypes =
|
||||||
{
|
{
|
||||||
micConsumers : PropTypes.array
|
micConsumers : PropTypes.array,
|
||||||
|
audioOutputDevice : PropTypes.string
|
||||||
};
|
};
|
||||||
|
|
||||||
const mapStateToProps = (state) =>
|
const mapStateToProps = (state) =>
|
||||||
({
|
({
|
||||||
micConsumers : micConsumerSelector(state)
|
micConsumers : micConsumerSelector(state),
|
||||||
|
audioOutputDevice : state.settings.selectedAudioOutputDevice
|
||||||
});
|
});
|
||||||
|
|
||||||
const AudioPeersContainer = connect(
|
const AudioPeersContainer = connect(
|
||||||
|
|
@ -45,7 +49,8 @@ const AudioPeersContainer = connect(
|
||||||
areStatesEqual : (next, prev) =>
|
areStatesEqual : (next, prev) =>
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
prev.consumers === next.consumers
|
prev.consumers === next.consumers &&
|
||||||
|
prev.settings.selectedAudioOutputDevice === next.settings.selectedAudioOutputDevice
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ export default class PeerAudio extends React.PureComponent
|
||||||
// Latest received audio track.
|
// Latest received audio track.
|
||||||
// @type {MediaStreamTrack}
|
// @type {MediaStreamTrack}
|
||||||
this._audioTrack = null;
|
this._audioTrack = null;
|
||||||
|
this._audioOutputDevice = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
render()
|
render()
|
||||||
|
|
@ -24,17 +25,19 @@ export default class PeerAudio extends React.PureComponent
|
||||||
|
|
||||||
componentDidMount()
|
componentDidMount()
|
||||||
{
|
{
|
||||||
const { audioTrack } = this.props;
|
const { audioTrack, audioOutputDevice } = this.props;
|
||||||
|
|
||||||
this._setTrack(audioTrack);
|
this._setTrack(audioTrack);
|
||||||
|
this._setOutputDevice(audioOutputDevice);
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line camelcase
|
// eslint-disable-next-line camelcase
|
||||||
UNSAFE_componentWillReceiveProps(nextProps)
|
UNSAFE_componentWillReceiveProps(nextProps)
|
||||||
{
|
{
|
||||||
const { audioTrack } = nextProps;
|
const { audioTrack, audioOutputDevice } = nextProps;
|
||||||
|
|
||||||
this._setTrack(audioTrack);
|
this._setTrack(audioTrack);
|
||||||
|
this._setOutputDevice(audioOutputDevice);
|
||||||
}
|
}
|
||||||
|
|
||||||
_setTrack(audioTrack)
|
_setTrack(audioTrack)
|
||||||
|
|
@ -60,9 +63,23 @@ export default class PeerAudio extends React.PureComponent
|
||||||
audio.srcObject = null;
|
audio.srcObject = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_setOutputDevice(audioOutputDevice)
|
||||||
|
{
|
||||||
|
if (this._audioOutputDevice === audioOutputDevice)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._audioOutputDevice = audioOutputDevice;
|
||||||
|
|
||||||
|
const { audio } = this.refs;
|
||||||
|
|
||||||
|
if (audioOutputDevice && typeof audio.setSinkId === 'function')
|
||||||
|
audio.setSinkId(audioOutputDevice);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PeerAudio.propTypes =
|
PeerAudio.propTypes =
|
||||||
{
|
{
|
||||||
audioTrack : PropTypes.any
|
audioTrack : PropTypes.any,
|
||||||
|
audioOutputDevice : PropTypes.string
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -131,6 +131,13 @@ const Settings = ({
|
||||||
else
|
else
|
||||||
audioDevices = [];
|
audioDevices = [];
|
||||||
|
|
||||||
|
let audioOutputDevices;
|
||||||
|
|
||||||
|
if (me.audioOutputDevices)
|
||||||
|
audioOutputDevices = Object.values(me.audioOutputDevices);
|
||||||
|
else
|
||||||
|
audioOutputDevices = [];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Dialog
|
<Dialog
|
||||||
className={classes.root}
|
className={classes.root}
|
||||||
|
|
@ -226,6 +233,55 @@ const Settings = ({
|
||||||
</FormHelperText>
|
</FormHelperText>
|
||||||
</FormControl>
|
</FormControl>
|
||||||
</form>
|
</form>
|
||||||
|
{
|
||||||
|
'audioOutputSupportedBrowsers' in window.config &&
|
||||||
|
window.config.audioOutputSupportedBrowsers.includes(me.browser.name) &&
|
||||||
|
<form className={classes.setting} autoComplete='off'>
|
||||||
|
<FormControl className={classes.formControl}>
|
||||||
|
<Select
|
||||||
|
value={settings.selectedAudioOutputDevice || ''}
|
||||||
|
onChange={(event) =>
|
||||||
|
{
|
||||||
|
if (event.target.value)
|
||||||
|
roomClient.changeAudioOutputDevice(event.target.value);
|
||||||
|
}}
|
||||||
|
displayEmpty
|
||||||
|
name={intl.formatMessage({
|
||||||
|
id : 'settings.audioOutput',
|
||||||
|
defaultMessage : 'Audio output device'
|
||||||
|
})}
|
||||||
|
autoWidth
|
||||||
|
className={classes.selectEmpty}
|
||||||
|
disabled={audioOutputDevices.length === 0 || me.audioOutputInProgress}
|
||||||
|
>
|
||||||
|
{ audioOutputDevices.map((audioOutput, index) =>
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
<MenuItem
|
||||||
|
key={index}
|
||||||
|
value={audioOutput.deviceId}
|
||||||
|
>
|
||||||
|
{audioOutput.label}
|
||||||
|
</MenuItem>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</Select>
|
||||||
|
<FormHelperText>
|
||||||
|
{ audioOutputDevices.length > 0 ?
|
||||||
|
intl.formatMessage({
|
||||||
|
id : 'settings.selectAudioOutput',
|
||||||
|
defaultMessage : 'Select audio output device'
|
||||||
|
})
|
||||||
|
:
|
||||||
|
intl.formatMessage({
|
||||||
|
id : 'settings.cantSelectAudioOutput',
|
||||||
|
defaultMessage : 'Unable to select audio output device'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</FormHelperText>
|
||||||
|
</FormControl>
|
||||||
|
</form>
|
||||||
|
}
|
||||||
<form className={classes.setting} autoComplete='off'>
|
<form className={classes.setting} autoComplete='off'>
|
||||||
<FormControl className={classes.formControl}>
|
<FormControl className={classes.formControl}>
|
||||||
<Select
|
<Select
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ export default function()
|
||||||
flag,
|
flag,
|
||||||
os : browser.getOSName(true), // ios, android, linux...
|
os : browser.getOSName(true), // ios, android, linux...
|
||||||
platform : browser.getPlatformType(true), // mobile, desktop, tablet
|
platform : browser.getPlatformType(true), // mobile, desktop, tablet
|
||||||
name : browser.getBrowserName(),
|
name : browser.getBrowserName(true),
|
||||||
version : browser.getBrowserVersion(),
|
version : browser.getBrowserVersion(),
|
||||||
bowser : browser
|
bowser : browser
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -99,6 +99,13 @@ const me = (state = initialState, action) =>
|
||||||
return { ...state, audioDevices: devices };
|
return { ...state, audioDevices: devices };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case 'SET_AUDIO_OUTPUT_DEVICES':
|
||||||
|
{
|
||||||
|
const { devices } = action.payload;
|
||||||
|
|
||||||
|
return { ...state, audioOutputDevices: devices };
|
||||||
|
}
|
||||||
|
|
||||||
case 'SET_WEBCAM_DEVICES':
|
case 'SET_WEBCAM_DEVICES':
|
||||||
{
|
{
|
||||||
const { devices } = action.payload;
|
const { devices } = action.payload;
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,11 @@ const settings = (state = initialState, action) =>
|
||||||
return { ...state, selectedAudioDevice: action.payload.deviceId };
|
return { ...state, selectedAudioDevice: action.payload.deviceId };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case 'CHANGE_AUDIO_OUTPUT_DEVICE':
|
||||||
|
{
|
||||||
|
return { ...state, selectedAudioOutputDevice: action.payload.deviceId };
|
||||||
|
}
|
||||||
|
|
||||||
case 'SET_DISPLAY_NAME':
|
case 'SET_DISPLAY_NAME':
|
||||||
{
|
{
|
||||||
const { displayName } = action.payload;
|
const { displayName } = action.payload;
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,9 @@
|
||||||
"settings.audio": "音频设备",
|
"settings.audio": "音频设备",
|
||||||
"settings.selectAudio": "选择音频设备",
|
"settings.selectAudio": "选择音频设备",
|
||||||
"settings.cantSelectAudio": "无法选择音频设备",
|
"settings.cantSelectAudio": "无法选择音频设备",
|
||||||
|
"settings.audioOutput": "音频输出设备",
|
||||||
|
"settings.selectAudioOutput": "选择音频输出设备",
|
||||||
|
"settings.cantSelectAudioOutput": "无法选择音频输出设备",
|
||||||
"settings.resolution": "选择视频分辨率",
|
"settings.resolution": "选择视频分辨率",
|
||||||
"settings.layout": "房间布局",
|
"settings.layout": "房间布局",
|
||||||
"settings.selectRoomLayout": "选择房间布局",
|
"settings.selectRoomLayout": "选择房间布局",
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,9 @@
|
||||||
"settings.audio": "Audio zařízení",
|
"settings.audio": "Audio zařízení",
|
||||||
"settings.selectAudio": "Vyberte audio zařízení",
|
"settings.selectAudio": "Vyberte audio zařízení",
|
||||||
"settings.cantSelectAudio": "Není možno vybrat audio zařízení",
|
"settings.cantSelectAudio": "Není možno vybrat audio zařízení",
|
||||||
|
"settings.audioOutput": "Audio output zařízení",
|
||||||
|
"settings.selectAudioOutput": "Vyberte audio output zařízení",
|
||||||
|
"settings.cantSelectAudioOutput": "Není možno vybrat audio output zařízení",
|
||||||
"settings.resolution": "Vyberte rozlišení vašeho videa",
|
"settings.resolution": "Vyberte rozlišení vašeho videa",
|
||||||
"settings.layout": "Rozvržení místnosti",
|
"settings.layout": "Rozvržení místnosti",
|
||||||
"settings.selectRoomLayout": "Vyberte rozvržení místnosti",
|
"settings.selectRoomLayout": "Vyberte rozvržení místnosti",
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,9 @@
|
||||||
"settings.audio": "Audiogerät",
|
"settings.audio": "Audiogerät",
|
||||||
"settings.selectAudio": "Wähle ein Audiogerät",
|
"settings.selectAudio": "Wähle ein Audiogerät",
|
||||||
"settings.cantSelectAudio": "Kann Audiogerät nicht aktivieren",
|
"settings.cantSelectAudio": "Kann Audiogerät nicht aktivieren",
|
||||||
|
"settings.audioOutput": "Audioausgabegerät",
|
||||||
|
"settings.selectAudioOutput": "Wähle ein Audioausgabegerät",
|
||||||
|
"settings.cantSelectAudioOutput": "Kann Audioausgabegerät nicht aktivieren",
|
||||||
"settings.resolution": "Wähle eine Auflösung",
|
"settings.resolution": "Wähle eine Auflösung",
|
||||||
"settings.layout": "Raumlayout",
|
"settings.layout": "Raumlayout",
|
||||||
"settings.selectRoomLayout": "Wähle ein Raumlayout",
|
"settings.selectRoomLayout": "Wähle ein Raumlayout",
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,10 @@
|
||||||
"settings.audio": "Lydenhed",
|
"settings.audio": "Lydenhed",
|
||||||
"settings.selectAudio": "Vælg lydenhed",
|
"settings.selectAudio": "Vælg lydenhed",
|
||||||
"settings.cantSelectAudio": "Kan ikke vælge lydenhed",
|
"settings.cantSelectAudio": "Kan ikke vælge lydenhed",
|
||||||
|
"settings.audioOutput": "Audio output enhed",
|
||||||
|
"settings.selectAudioOutput": "Vælg lydudgangsenhed",
|
||||||
|
"settings.cantSelectAudioOutput": "Kan ikke vælge lydoutputenhed",
|
||||||
|
|
||||||
"settings.resolution": "Vælg din videoopløsning",
|
"settings.resolution": "Vælg din videoopløsning",
|
||||||
"settings.layout": "Møde visning",
|
"settings.layout": "Møde visning",
|
||||||
"settings.selectRoomLayout": "Vælg møde visning",
|
"settings.selectRoomLayout": "Vælg møde visning",
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,9 @@
|
||||||
"settings.audio": "Συσκευή ήχου",
|
"settings.audio": "Συσκευή ήχου",
|
||||||
"settings.selectAudio": "Επιλογή συσκευής ήχου",
|
"settings.selectAudio": "Επιλογή συσκευής ήχου",
|
||||||
"settings.cantSelectAudio": "Αδυναμία επιλογής συσκευής ήχου",
|
"settings.cantSelectAudio": "Αδυναμία επιλογής συσκευής ήχου",
|
||||||
|
"settings.audioOutput": "Συσκευή εξόδου ήχου",
|
||||||
|
"settings.selectAudioOutput": "Επιλέξτε συσκευή εξόδου ήχου",
|
||||||
|
"settings.cantSelectAudioOutput": "Δεν είναι δυνατή η επιλογή συσκευής εξόδου ήχου",
|
||||||
"settings.resolution": "Επιλέξτε την ανάλυση του video",
|
"settings.resolution": "Επιλέξτε την ανάλυση του video",
|
||||||
"settings.layout": "Περιβάλλον δωματίου",
|
"settings.layout": "Περιβάλλον δωματίου",
|
||||||
"settings.selectRoomLayout": "Επιλογή περιβάλλοντος δωματίου",
|
"settings.selectRoomLayout": "Επιλογή περιβάλλοντος δωματίου",
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,9 @@
|
||||||
"settings.audio": "Audio device",
|
"settings.audio": "Audio device",
|
||||||
"settings.selectAudio": "Select audio device",
|
"settings.selectAudio": "Select audio device",
|
||||||
"settings.cantSelectAudio": "Unable to select audio device",
|
"settings.cantSelectAudio": "Unable to select audio device",
|
||||||
|
"settings.audioOutput": "Audio output device",
|
||||||
|
"settings.selectAudioOutput": "Select audio output device",
|
||||||
|
"settings.cantSelectAudioOutput": "Unable to select audio output device",
|
||||||
"settings.resolution": "Select your video resolution",
|
"settings.resolution": "Select your video resolution",
|
||||||
"settings.layout": "Room layout",
|
"settings.layout": "Room layout",
|
||||||
"settings.selectRoomLayout": "Select room layout",
|
"settings.selectRoomLayout": "Select room layout",
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,9 @@
|
||||||
"settings.audio": "Dispositivo de sonido",
|
"settings.audio": "Dispositivo de sonido",
|
||||||
"settings.selectAudio": "Seleccione dispositivo de sonido",
|
"settings.selectAudio": "Seleccione dispositivo de sonido",
|
||||||
"settings.cantSelectAudio": "No ha sido posible seleccionar el dispositivo de sonido",
|
"settings.cantSelectAudio": "No ha sido posible seleccionar el dispositivo de sonido",
|
||||||
|
"settings.audioOutput": "Dispositivo de salida de audio",
|
||||||
|
"settings.selectAudioOutput": "Seleccionar dispositivo de salida de audio",
|
||||||
|
"settings.cantSelectAudioOutput": "No se puede seleccionar el dispositivo de salida de audio",
|
||||||
"settings.resolution": "Seleccione su resolución de imagen",
|
"settings.resolution": "Seleccione su resolución de imagen",
|
||||||
"settings.layout": "Disposición de la sala",
|
"settings.layout": "Disposición de la sala",
|
||||||
"settings.selectRoomLayout": "Seleccione la disposición de la sala",
|
"settings.selectRoomLayout": "Seleccione la disposición de la sala",
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,9 @@
|
||||||
"settings.audio": "Microphone",
|
"settings.audio": "Microphone",
|
||||||
"settings.selectAudio": "Sélectionnez votre microphone",
|
"settings.selectAudio": "Sélectionnez votre microphone",
|
||||||
"settings.cantSelectAudio": "Impossible de sélectionner votre la caméra",
|
"settings.cantSelectAudio": "Impossible de sélectionner votre la caméra",
|
||||||
|
"settings.audioOutput": "Périphérique de sortie audio",
|
||||||
|
"settings.selectAudioOutput": "Sélectionnez le périphérique de sortie audio",
|
||||||
|
"settings.cantSelectAudioOutput": "Impossible de sélectionner le périphérique de sortie audio",
|
||||||
"settings.resolution": "Sélectionnez votre résolution",
|
"settings.resolution": "Sélectionnez votre résolution",
|
||||||
"settings.layout": "Mode d'affichage de la salle",
|
"settings.layout": "Mode d'affichage de la salle",
|
||||||
"settings.selectRoomLayout": "Sélectionnez la présentation de la salle",
|
"settings.selectRoomLayout": "Sélectionnez la présentation de la salle",
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,9 @@
|
||||||
"settings.audio": "Uređaj za zvuk",
|
"settings.audio": "Uređaj za zvuk",
|
||||||
"settings.selectAudio": "Odaberi uređaj za zvuk",
|
"settings.selectAudio": "Odaberi uređaj za zvuk",
|
||||||
"settings.cantSelectAudio": "Nije moguće odabrati uređaj za zvuk",
|
"settings.cantSelectAudio": "Nije moguće odabrati uređaj za zvuk",
|
||||||
|
"settings.audioOutput": "Uređaj za izlaz zvuka",
|
||||||
|
"settings.selectAudioOutput": "Odaberite audio izlazni uređaj",
|
||||||
|
"settings.cantSelectAudioOutput": "Nije moguće odabrati audio izlazni uređaj",
|
||||||
"settings.resolution": "Odaberi video rezoluciju",
|
"settings.resolution": "Odaberi video rezoluciju",
|
||||||
"settings.layout": "Način prikaza",
|
"settings.layout": "Način prikaza",
|
||||||
"settings.selectRoomLayout": "Odaberi način prikaza",
|
"settings.selectRoomLayout": "Odaberi način prikaza",
|
||||||
|
|
|
||||||
|
|
@ -95,12 +95,15 @@
|
||||||
|
|
||||||
"settings.settings": "Beállítások",
|
"settings.settings": "Beállítások",
|
||||||
"settings.camera": "Kamera",
|
"settings.camera": "Kamera",
|
||||||
"settings.selectCamera": "Válasz videóeszközt",
|
"settings.selectCamera": "Válassz videoeszközt",
|
||||||
"settings.cantSelectCamera": "Nem lehet a videó eszközt kiválasztani",
|
"settings.cantSelectCamera": "Nem lehet a videoeszközt kiválasztani",
|
||||||
"settings.audio": "Hang eszköz",
|
"settings.audio": "Hang eszköz",
|
||||||
"settings.selectAudio": "Válasz hangeszközt",
|
"settings.selectAudio": "Válassz hangeszközt",
|
||||||
"settings.cantSelectAudio": "Nem lehet a hang eszközt kiválasztani",
|
"settings.cantSelectAudio": "Nem sikerült a hangeszközt kiválasztani",
|
||||||
"settings.resolution": "Válaszd ki a videóeszközöd felbontását",
|
"settings.audioOutput": "Kimenti hangeszköz",
|
||||||
|
"settings.selectAudioOutput": "Válassz kimenti hangeszközt",
|
||||||
|
"settings.cantSelectAudioOutput": "Nem sikerült a kimeneti hangeszközt kiválasztani",
|
||||||
|
"settings.resolution": "Válaszd ki a videoeszközöd felbontását",
|
||||||
"settings.layout": "A konferencia képkiosztása",
|
"settings.layout": "A konferencia képkiosztása",
|
||||||
"settings.selectRoomLayout": "Válaszd ki a konferencia képkiosztását",
|
"settings.selectRoomLayout": "Válaszd ki a konferencia képkiosztását",
|
||||||
"settings.advancedMode": "Részletes információk",
|
"settings.advancedMode": "Részletes információk",
|
||||||
|
|
|
||||||
|
|
@ -99,6 +99,9 @@
|
||||||
"settings.audio": "Dispositivo audio",
|
"settings.audio": "Dispositivo audio",
|
||||||
"settings.selectAudio": "Seleziona dispositivo audio",
|
"settings.selectAudio": "Seleziona dispositivo audio",
|
||||||
"settings.cantSelectAudio": "Impossibile selezionare dispositivo audio",
|
"settings.cantSelectAudio": "Impossibile selezionare dispositivo audio",
|
||||||
|
"settings.audioOutput": "Dispositivo di uscita audio",
|
||||||
|
"settings.selectAudioOutput": "Seleziona il dispositivo di uscita audio",
|
||||||
|
"settings.cantSelectAudioOutput": "Impossibile selezionare il dispositivo di uscita audio",
|
||||||
"settings.resolution": "Seleziona risoluzione",
|
"settings.resolution": "Seleziona risoluzione",
|
||||||
"settings.layout": "Aspetto stanza",
|
"settings.layout": "Aspetto stanza",
|
||||||
"settings.selectRoomLayout": "Seleziona aspetto stanza",
|
"settings.selectRoomLayout": "Seleziona aspetto stanza",
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,9 @@
|
||||||
"settings.audio": "Lydenhet",
|
"settings.audio": "Lydenhet",
|
||||||
"settings.selectAudio": "Velg lydenhet",
|
"settings.selectAudio": "Velg lydenhet",
|
||||||
"settings.cantSelectAudio": "Kan ikke velge lydenhet",
|
"settings.cantSelectAudio": "Kan ikke velge lydenhet",
|
||||||
|
"settings.audioOutput": "Lydutgangsenhet",
|
||||||
|
"settings.selectAudioOutput": "Velg lydutgangsenhet",
|
||||||
|
"settings.cantSelectAudioOutput": "Kan ikke velge lydutgangsenhet",
|
||||||
"settings.resolution": "Velg oppløsning",
|
"settings.resolution": "Velg oppløsning",
|
||||||
"settings.layout": "Møtelayout",
|
"settings.layout": "Møtelayout",
|
||||||
"settings.selectRoomLayout": "Velg møtelayout",
|
"settings.selectRoomLayout": "Velg møtelayout",
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,9 @@
|
||||||
"settings.audio": "Urządzenie audio",
|
"settings.audio": "Urządzenie audio",
|
||||||
"settings.selectAudio": "Wybór urządzenia audio",
|
"settings.selectAudio": "Wybór urządzenia audio",
|
||||||
"settings.cantSelectAudio": "Nie można wybrać urządzenia audio",
|
"settings.cantSelectAudio": "Nie można wybrać urządzenia audio",
|
||||||
|
"settings.audioOutput": "Urządzenie wyjściowe audio",
|
||||||
|
"settings.selectAudioOutput": "Wybierz urządzenie wyjściowe audio",
|
||||||
|
"settings.cantSelectAudioOutput": "Nie można wybrać urządzenia wyjściowego audio",
|
||||||
"settings.resolution": "Wybór rozdzielczości wideo",
|
"settings.resolution": "Wybór rozdzielczości wideo",
|
||||||
"settings.layout": "Układ konferencji",
|
"settings.layout": "Układ konferencji",
|
||||||
"settings.selectRoomLayout": "Ustawienia układu konferencji",
|
"settings.selectRoomLayout": "Ustawienia układu konferencji",
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,9 @@
|
||||||
"settings.audio": "Dispositivo Áudio",
|
"settings.audio": "Dispositivo Áudio",
|
||||||
"settings.selectAudio": "Selecione o seu dispositivo de áudio",
|
"settings.selectAudio": "Selecione o seu dispositivo de áudio",
|
||||||
"settings.cantSelectAudio": "Impossível selecionar o seu dispositivo de áudio",
|
"settings.cantSelectAudio": "Impossível selecionar o seu dispositivo de áudio",
|
||||||
|
"settings.audioOutput": "Dispositivo de saída de áudio",
|
||||||
|
"settings.selectAudioOutput": "Selecionar dispositivo de saída de áudio",
|
||||||
|
"settings.cantSelectAudioOutput": "Não foi possível selecionar o dispositivo de saída de áudio",
|
||||||
"settings.resolution": "Selecione a sua resolução de vídeo",
|
"settings.resolution": "Selecione a sua resolução de vídeo",
|
||||||
"settings.layout": "Disposição da sala",
|
"settings.layout": "Disposição da sala",
|
||||||
"settings.selectRoomLayout": "Seleccione a disposição da sala",
|
"settings.selectRoomLayout": "Seleccione a disposição da sala",
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,9 @@
|
||||||
"settings.audio": "Dispozitivul audio",
|
"settings.audio": "Dispozitivul audio",
|
||||||
"settings.selectAudio": "Selectarea dispozitivul audio",
|
"settings.selectAudio": "Selectarea dispozitivul audio",
|
||||||
"settings.cantSelectAudio": "Încercarea de a selecta dispozitivul audio a eșuat",
|
"settings.cantSelectAudio": "Încercarea de a selecta dispozitivul audio a eșuat",
|
||||||
|
"settings.audioOutput": "Dispozitiv de ieșire audio",
|
||||||
|
"settings.selectAudioOutput": "Selectați dispozitivul de ieșire audio",
|
||||||
|
"settings.cantSelectAudioOutput": "Imposibil de selectat dispozitivul de ieșire audio",
|
||||||
"settings.resolution": "Selectează rezoluția video",
|
"settings.resolution": "Selectează rezoluția video",
|
||||||
"settings.layout": "Aspectul camerei video",
|
"settings.layout": "Aspectul camerei video",
|
||||||
"settings.selectRoomLayout": "Selectează spectul camerei video",
|
"settings.selectRoomLayout": "Selectează spectul camerei video",
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,9 @@
|
||||||
"settings.audio": "Аудіопристрій",
|
"settings.audio": "Аудіопристрій",
|
||||||
"settings.selectAudio": "Вибрати аудіопристрій",
|
"settings.selectAudio": "Вибрати аудіопристрій",
|
||||||
"settings.cantSelectAudio": "Неможливо вибрати аудіопристрій",
|
"settings.cantSelectAudio": "Неможливо вибрати аудіопристрій",
|
||||||
|
"settings.audioOutput": "Пристрій аудіовиходу",
|
||||||
|
"settings.selectAudioOutput": "Виберіть пристрій аудіовиходу",
|
||||||
|
"settings.cantSelectAudioOutput": "Неможливо вибрати аудіо вихідний пристрій",
|
||||||
"settings.resolution": "Виберіть роздільну здатність відео",
|
"settings.resolution": "Виберіть роздільну здатність відео",
|
||||||
"settings.layout": "Розміщення кімнати",
|
"settings.layout": "Розміщення кімнати",
|
||||||
"settings.selectRoomLayout": "Вибір розташування кімнати",
|
"settings.selectRoomLayout": "Вибір розташування кімнати",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue