Upstream version 0.15.4+dfsg1

-----BEGIN PGP SIGNATURE-----
 
 iQIyBAABCAAcBQJXwtQXFRxzcmFtYWNoZXJAZGViaWFuLm9yZwAKCRBp8vxRbqcZ
 k3cwEAC/2Uiq20OroY8xvXfVxq4FjfWjwSFZWJgmvBSR0RSUwGwYx7CxnwvBjNG8
 DhfEuqMX6IFOFCd386Ib27Cz3vs+FFRTHdTiXjYuTRRi8O8toAy7jqZojZBkNjQk
 JZrnnxieLccqk+lfKpGdYMNFLrJhGvUf9i5AwnUDEgGu3iJ6Mfy8hWFCWWo8sKZw
 8uBTm0KEiy8LvpyuMTcKcw8p37HeTAZ57WCVxoIznsd0Ds3liDiVP+9WkfDVD2cB
 uas/omw+d7sQPkuXL8e1JeAQnr7koD/nQHWS7oM37/EyQr/NP5uYtToNJwpANWjN
 Scsl0VsnLoRdIP8aOGEGYRx82cG60bW6i3IPF+5r3TbpxSmLIETPBRtdbba4Fwas
 01fmKFVTvNRUlMu3uhyZVn15K7o+1ZFNJty0XB5FmZIXY37A5xhhwkTMNhrVEr5E
 R8kg5fpgebc7c8k2WYR9X+KWx0WtzDKs+A0Y1FrOkoa/Law3cdIAP5wJbsGKzSPx
 O067EC/HkEUC5gKOpznZnoLLFdaRSjCmNG7ZxCmgKLSjnyztWzXyj3vYukll/YvJ
 YFJJDT+0/jXg1A4oRUxINDbXk7SqtHPrwt5XNdOp1XVFvdXVgUhPvK+MriWmnOun
 drY8Lpi7AGhtvaYKRs9Ff0CBr3J37UttEWDt52NyykbopsdDpg==
 =YtBD
 -----END PGP SIGNATURE-----

Merge tag 'upstream/0.15.4+dfsg1'

Upstream version 0.15.4+dfsg1

# gpg: Signature made Sun 28 Aug 2016 14:07:51 CEST using RSA key ID 69F2FC516EA71993
# gpg: Good signature from "Sebastian Ramacher <sebastian@ramacher.at>" [ultimate]
# gpg:                 aka "Sebastian Ramacher <s.ramacher@gmail.com>" [ultimate]
# gpg:                 aka "Sebastian Ramacher <s.ramacher@gmx.at>" [ultimate]
# gpg:                 aka "Sebastian Ramacher <s.ramacher@student.tugraz.at>" [ultimate]
# gpg:                 aka "Sebastian Ramacher <sramacher@debian.org>" [ultimate]
# gpg:                 aka "Sebastian Ramacher <sebastian.ramacher@iaik.tugraz.at>" [ultimate]
This commit is contained in:
Sebastian Ramacher 2016-08-28 14:07:52 +02:00
commit f5477d794a
359 changed files with 8423 additions and 1050 deletions

View file

@ -6,6 +6,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
include(ObsHelpers) include(ObsHelpers)
include(ObsCpack) include(ObsCpack)
include(GNUInstallDirs)
if(MSVC AND NOT EXISTS "${CMAKE_BINARY_DIR}/ALL_BUILD.vcxproj.user") if(MSVC AND NOT EXISTS "${CMAKE_BINARY_DIR}/ALL_BUILD.vcxproj.user")
file(GENERATE file(GENERATE

2
README
View file

@ -98,7 +98,7 @@ What was wrong with the original OBS?
- The devices and audio code was poor, I had no idea what I was getting into - The devices and audio code was poor, I had no idea what I was getting into
when I started writing them in. I did not realize beforehand all the when I started writing them in. I did not realize beforehand all the
device-specific quirks that each device/system could have. Some devices device-specific quirks that each device/system could have. Some devices
had bad timing and quirks that I never aniticipated while writing them. had bad timing and quirks that I never anticipated while writing them.
I struggled with devices, and my original design for the audio subsystem I struggled with devices, and my original design for the audio subsystem
for example morphed over and over into an abomination that, though works, for example morphed over and over into an abomination that, though works,
is basically this giant duct-taped zombie monster. is basically this giant duct-taped zombie monster.

View file

@ -0,0 +1,72 @@
# Once done these will be defined:
#
# LIBVLC_FOUND
# LIBVLC_INCLUDE_DIRS
# LIBVLC_LIBRARIES
#
# For use in OBS:
#
# VLC_INCLUDE_DIR
find_package(PkgConfig QUIET)
if (PKG_CONFIG_FOUND)
pkg_check_modules(_VLC QUIET VLC)
endif()
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(_lib_suffix 64)
else()
set(_lib_suffix 32)
endif()
find_path(VLC_INCLUDE_DIR
NAMES libvlc.h
HINTS
ENV VLCPath${_lib_suffix}
ENV VLCPath
ENV DepsPath${_lib_suffix}
ENV DepsPath
${VLCPath${_lib_suffix}}
${VLCPath}
${DepsPath${_lib_suffix}}
${DepsPath}
${_VLC_INCLUDE_DIRS}
PATHS
/usr/include /usr/local/include /opt/local/include /sw/include
PATH_SUFFIXES
vlc include/vlc include)
find_library(VLC_LIB
NAMES ${_VLC_LIBRARIES} VLC libVLC
HINTS
ENV VLCPath${_lib_suffix}
ENV VLCPath
ENV DepsPath${_lib_suffix}
ENV DepsPath
${VLCPath${_lib_suffix}}
${VLCPath}
${DepsPath${_lib_suffix}}
${DepsPath}
${_VLC_LIBRARY_DIRS}
PATHS
/usr/lib /usr/local/lib /opt/local/lib /sw/lib
PATH_SUFFIXES
lib${_lib_suffix} lib
libs${_lib_suffix} libs
bin${_lib_suffix} bin
../lib${_lib_suffix} ../lib
../libs${_lib_suffix} ../libs
../bin${_lib_suffix} ../bin)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LibVLC_INCLUDES DEFAULT_MSG VLC_INCLUDE_DIR)
find_package_handle_standard_args(LibVLC DEFAULT_MSG VLC_LIB VLC_INCLUDE_DIR)
mark_as_advanced(VLC_INCLUDE_DIR VLC_LIB)
if(LIBVLC_INCLUDES_FOUND)
set(LIBVLC_INCLUDE_DIRS ${VLC_INCLUDE_DIR})
endif()
if(LIBVLC_FOUND)
set(LIBVLC_LIBRARIES ${VLC_LIB})
endif()

View file

@ -0,0 +1,68 @@
# Once done these will be defined:
#
# LIBSPEEXDSP_FOUND
# LIBSPEEXDSP_INCLUDE_DIRS
# LIBSPEEXDSP_LIBRARIES
#
# For use in OBS:
#
# SPEEXDSP_INCLUDE_DIR
find_package(PkgConfig QUIET)
if (PKG_CONFIG_FOUND)
pkg_check_modules(_SPEEXDSP QUIET speexdsp libspeexdsp)
endif()
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(_lib_suffix 64)
else()
set(_lib_suffix 32)
endif()
find_path(SPEEXDSP_INCLUDE_DIR
NAMES speex/speex_preprocess.h
HINTS
ENV speexPath${_lib_suffix}
ENV speexPath
ENV DepsPath${_lib_suffix}
ENV DepsPath
${speexPath${_lib_suffix}}
${speexPath}
${DepsPath${_lib_suffix}}
${DepsPath}
${_SPEEXDSP_INCLUDE_DIRS}
PATHS
/usr/include /usr/local/include /opt/local/include /sw/include
PATH_SUFFIXES
include)
find_library(SPEEXDSP_LIB
NAMES ${_SPEEXDSP_LIBRARIES} speexdsp libspeexdsp
HINTS
ENV speexPath${_lib_suffix}
ENV speexPath
ENV DepsPath${_lib_suffix}
ENV DepsPath
${speexPath${_lib_suffix}}
${speexPath}
${DepsPath${_lib_suffix}}
${DepsPath}
${_SPEEXDSP_LIBRARY_DIRS}
PATHS
/usr/lib /usr/local/lib /opt/local/lib /sw/lib
PATH_SUFFIXES
lib${_lib_suffix} lib
libs${_lib_suffix} libs
bin${_lib_suffix} bin
../lib${_lib_suffix} ../lib
../libs${_lib_suffix} ../libs
../bin${_lib_suffix} ../bin)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Libspeexdsp DEFAULT_MSG SPEEXDSP_LIB SPEEXDSP_INCLUDE_DIR)
mark_as_advanced(SPEEXDSP_INCLUDE_DIR SPEEXDSP_LIB)
if(LIBSPEEXDSP_FOUND)
set(LIBSPEEXDSP_INCLUDE_DIRS ${SPEEXDSP_INCLUDE_DIR})
set(LIBSPEEXDSP_LIBRARIES ${SPEEXDSP_LIB})
endif()

View file

@ -106,13 +106,13 @@ endfunction()
# 'target' is the destination target project being installed to # 'target' is the destination target project being installed to
# 'additional_target' specifies the additional binary # 'additional_target' specifies the additional binary
function(install_external_plugin_bin_to_data target additional_target) function(install_external_plugin_bin_to_data target additional_target)
install(TARGETS ${target} install(TARGETS ${additional_target}
LIBRARY DESTINATION "data" LIBRARY DESTINATION "data"
RUNTIME DESTINATION "data") RUNTIME DESTINATION "data")
add_custom_command(TARGET ${target} POST_BUILD add_custom_command(TARGET ${additional_target} POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy COMMAND "${CMAKE_COMMAND}" -E copy
"$<TARGET_FILE:${target}>" "$<TARGET_FILE:${additional_target}>"
"${EXTERNAL_PLUGIN_OUTPUT_DIR}/$<CONFIGURATION>/${plugin_target}/data/$<TARGET_FILE_NAME:${target}>" "${EXTERNAL_PLUGIN_OUTPUT_DIR}/$<CONFIGURATION>/${target}/data/$<TARGET_FILE_NAME:${additional_target}>"
VERBATIM) VERBATIM)
endfunction() endfunction()
@ -128,12 +128,36 @@ function(install_external_plugin_bin_to_arch_data target additional_target)
set(_bit_suffix "/32bit") set(_bit_suffix "/32bit")
endif() endif()
install(TARGETS ${target} install(TARGETS ${additional_target}
LIBRARY DESTINATION "data${_bit_suffix}" LIBRARY DESTINATION "data${_bit_suffix}"
RUNTIME DESTINATION "data${_bit_suffix}") RUNTIME DESTINATION "data${_bit_suffix}")
add_custom_command(TARGET ${target} POST_BUILD add_custom_command(TARGET ${additional_target} POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy COMMAND "${CMAKE_COMMAND}" -E copy
"$<TARGET_FILE:${target}>" "$<TARGET_FILE:${additional_target}>"
"${EXTERNAL_PLUGIN_OUTPUT_DIR}/$<CONFIGURATION>/${plugin_target}/data${_bit_suffix}/$<TARGET_FILE_NAME:${target}>" "${EXTERNAL_PLUGIN_OUTPUT_DIR}/$<CONFIGURATION>/${target}/data${_bit_suffix}/$<TARGET_FILE_NAME:${additional_target}>"
VERBATIM)
endfunction()
# Installs an additional file in an architecture-specific data directory on windows/linux (data/32bit or data/64bit). Does not apply for mac.
# 'target' is the destination target project being installed to
# 'additional_target' specifies the additional binary
function(install_external_plugin_data_file_to_arch_data target additional_target file_target)
if(APPLE)
set(_bit_suffix "")
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(_bit_suffix "/64bit")
else()
set(_bit_suffix "/32bit")
endif()
get_filename_component(file_target_name ${file_target} NAME)
install(TARGETS ${additional_target}
LIBRARY DESTINATION "data${_bit_suffix}"
RUNTIME DESTINATION "data${_bit_suffix}")
add_custom_command(TARGET ${additional_target} POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy
"${file_target}"
"${EXTERNAL_PLUGIN_OUTPUT_DIR}/$<CONFIGURATION>/${target}/data${_bit_suffix}/${file_target_name}"
VERBATIM) VERBATIM)
endfunction() endfunction()

View file

@ -19,7 +19,8 @@ add_library(w32-pthreads SHARED
target_compile_definitions(w32-pthreads target_compile_definitions(w32-pthreads
PRIVATE __CLEANUP_C PTW32_BUILD) PRIVATE __CLEANUP_C PTW32_BUILD)
target_include_directories(w32-pthreads target_include_directories(w32-pthreads
PUBLIC .) PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>")
target_link_libraries(w32-pthreads) target_link_libraries(w32-pthreads)
install_obs_core(w32-pthreads) install_obs_core(w32-pthreads EXPORT w32-pthreads)

View file

@ -0,0 +1,15 @@
# - Config file for the w32-pthreads package
# It defines the following variables
# THREADS_INCLUDE_DIRS
# THREADS_LIBRARIES
set(W32_PTHREADS_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@")
# Cleanup possible relative paths
get_filename_component(W32_PTHREADS_INCLUDE_DIRS "${THREADS_INCLUDE_DIRS}" ABSOLUTE)
if(NOT TARGET w32-pthreads)
include("${CMAKE_CURRENT_LIST_DIR}/w32-pthreadsTarget.cmake")
endif()
set(W32_PTHREADS_LIBRARIES w32-pthreads)

View file

View file

@ -222,10 +222,18 @@ inline void gs_shader::UpdateParam(vector<uint8_t> &constData,
upload = true; upload = true;
param.changed = false; param.changed = false;
} }
} else if (param.curValue.size() == sizeof(gs_texture_t*)) { } else if (param.curValue.size() == sizeof(gs_texture_t*)) {
gs_texture_t *tex; gs_texture_t *tex;
memcpy(&tex, param.curValue.data(), sizeof(gs_texture_t*)); memcpy(&tex, param.curValue.data(), sizeof(gs_texture_t*));
device_load_texture(device, tex, param.textureID); device_load_texture(device, tex, param.textureID);
if (param.nextSampler) {
ID3D11SamplerState *state = param.nextSampler->state;
device->context->PSSetSamplers(param.textureID, 1,
&state);
param.nextSampler = nullptr;
}
} }
} }
@ -384,3 +392,8 @@ void gs_shader_set_default(gs_sparam_t *param)
shader_setval_inline(param, param->defaultValue.data(), shader_setval_inline(param, param->defaultValue.data(),
param->defaultValue.size()); param->defaultValue.size());
} }
void gs_shader_set_next_sampler(gs_sparam_t *param, gs_samplerstate_t *sampler)
{
param->nextSampler = sampler;
}

View file

@ -356,6 +356,7 @@ struct gs_shader_param {
gs_shader_param_type type; gs_shader_param_type type;
uint32_t textureID; uint32_t textureID;
struct gs_sampler_state *nextSampler = nullptr;
int arrayCount; int arrayCount;

View file

@ -487,6 +487,12 @@ static void program_set_param_data(struct gs_program *program,
} }
} else if (pp->param->type == GS_SHADER_PARAM_TEXTURE) { } else if (pp->param->type == GS_SHADER_PARAM_TEXTURE) {
if (pp->param->next_sampler) {
program->device->cur_samplers[pp->param->sampler_id] =
pp->param->next_sampler;
pp->param->next_sampler = NULL;
}
glUniform1i(pp->obj, pp->param->texture_id); glUniform1i(pp->obj, pp->param->texture_id);
device_load_texture(program->device, pp->param->texture, device_load_texture(program->device, pp->param->texture,
pp->param->texture_id); pp->param->texture_id);
@ -720,3 +726,8 @@ void gs_shader_set_default(gs_sparam_t *param)
{ {
gs_shader_set_val(param, param->def_value.array, param->def_value.num); gs_shader_set_val(param, param->def_value.array, param->def_value.num);
} }
void gs_shader_set_next_sampler(gs_sparam_t *param, gs_samplerstate_t *sampler)
{
param->next_sampler = sampler;
}

View file

@ -300,6 +300,7 @@ struct gs_shader_param {
char *name; char *name;
gs_shader_t *shader; gs_shader_t *shader;
gs_samplerstate_t *next_sampler;
GLint texture_id; GLint texture_id;
size_t sampler_id; size_t sampler_id;
int array_count; int array_count;

View file

@ -125,6 +125,8 @@ void gs_technique_end(gs_technique_t *tech)
da_free(param->cur_val); da_free(param->cur_val);
param->changed = false; param->changed = false;
if (param->next_sampler)
param->next_sampler = NULL;
} }
} }
@ -147,6 +149,9 @@ static void upload_shader_params(struct darray *pass_params, bool changed_only)
struct gs_effect_param *eparam = param->eparam; struct gs_effect_param *eparam = param->eparam;
gs_sparam_t *sparam = param->sparam; gs_sparam_t *sparam = param->sparam;
if (eparam->next_sampler)
gs_shader_set_next_sampler(sparam, eparam->next_sampler);
if (changed_only && !eparam->changed) if (changed_only && !eparam->changed)
continue; continue;
@ -378,3 +383,14 @@ void gs_effect_set_default(gs_eparam_t *param)
effect_setval_inline(param, param->default_val.array, effect_setval_inline(param, param->default_val.array,
param->default_val.num); param->default_val.num);
} }
void gs_effect_set_next_sampler(gs_eparam_t *param, gs_samplerstate_t *sampler)
{
if (!param) {
blog(LOG_ERROR, "gs_effect_set_next_sampler: invalid param");
return;
}
if (param->type == GS_SHADER_PARAM_TEXTURE)
param->next_sampler = sampler;
}

View file

@ -57,6 +57,7 @@ struct gs_effect_param {
DARRAY(uint8_t) default_val; DARRAY(uint8_t) default_val;
gs_effect_t *effect; gs_effect_t *effect;
gs_samplerstate_t *next_sampler;
/*char *full_name; /*char *full_name;
float scroller_min, scroller_max, scroller_inc, scroller_mul;*/ float scroller_min, scroller_max, scroller_inc, scroller_mul;*/

View file

@ -167,6 +167,7 @@ bool load_graphics_imports(struct gs_exports *exports, void *module,
GRAPHICS_IMPORT(gs_shader_set_texture); GRAPHICS_IMPORT(gs_shader_set_texture);
GRAPHICS_IMPORT(gs_shader_set_val); GRAPHICS_IMPORT(gs_shader_set_val);
GRAPHICS_IMPORT(gs_shader_set_default); GRAPHICS_IMPORT(gs_shader_set_default);
GRAPHICS_IMPORT(gs_shader_set_next_sampler);
/* OSX/Cocoa specific functions */ /* OSX/Cocoa specific functions */
#ifdef __APPLE__ #ifdef __APPLE__

View file

@ -225,6 +225,8 @@ struct gs_exports {
void (*gs_shader_set_val)(gs_sparam_t *param, const void *val, void (*gs_shader_set_val)(gs_sparam_t *param, const void *val,
size_t size); size_t size);
void (*gs_shader_set_default)(gs_sparam_t *param); void (*gs_shader_set_default)(gs_sparam_t *param);
void (*gs_shader_set_next_sampler)(gs_sparam_t *param,
gs_samplerstate_t *sampler);
#ifdef __APPLE__ #ifdef __APPLE__
/* OSX/Cocoa specific functions */ /* OSX/Cocoa specific functions */

View file

@ -2089,6 +2089,16 @@ void gs_shader_set_default(gs_sparam_t *param)
graphics->exports.gs_shader_set_default(param); graphics->exports.gs_shader_set_default(param);
} }
void gs_shader_set_next_sampler(gs_sparam_t *param, gs_samplerstate_t *sampler)
{
graphics_t *graphics = thread_graphics;
if (!gs_valid_p("gs_shader_set_next_sampler", param))
return;
graphics->exports.gs_shader_set_next_sampler(param, sampler);
}
void gs_texture_destroy(gs_texture_t *tex) void gs_texture_destroy(gs_texture_t *tex)
{ {
graphics_t *graphics = thread_graphics; graphics_t *graphics = thread_graphics;

View file

@ -325,6 +325,8 @@ EXPORT void gs_shader_set_vec4(gs_sparam_t *param, const struct vec4 *val);
EXPORT void gs_shader_set_texture(gs_sparam_t *param, gs_texture_t *val); EXPORT void gs_shader_set_texture(gs_sparam_t *param, gs_texture_t *val);
EXPORT void gs_shader_set_val(gs_sparam_t *param, const void *val, size_t size); EXPORT void gs_shader_set_val(gs_sparam_t *param, const void *val, size_t size);
EXPORT void gs_shader_set_default(gs_sparam_t *param); EXPORT void gs_shader_set_default(gs_sparam_t *param);
EXPORT void gs_shader_set_next_sampler(gs_sparam_t *param,
gs_samplerstate_t *sampler);
/* --------------------------------------------------- /* ---------------------------------------------------
* effect functions * effect functions
@ -393,6 +395,8 @@ EXPORT void gs_effect_set_vec4(gs_eparam_t *param, const struct vec4 *val);
EXPORT void gs_effect_set_texture(gs_eparam_t *param, gs_texture_t *val); EXPORT void gs_effect_set_texture(gs_eparam_t *param, gs_texture_t *val);
EXPORT void gs_effect_set_val(gs_eparam_t *param, const void *val, size_t size); EXPORT void gs_effect_set_val(gs_eparam_t *param, const void *val, size_t size);
EXPORT void gs_effect_set_default(gs_eparam_t *param); EXPORT void gs_effect_set_default(gs_eparam_t *param);
EXPORT void gs_effect_set_next_sampler(gs_eparam_t *param,
gs_samplerstate_t *sampler);
/* --------------------------------------------------- /* ---------------------------------------------------
* texture render helper functions * texture render helper functions

View file

@ -318,9 +318,10 @@ void gs_image_file_update_texture(gs_image_file_t *image)
if (!image->is_animated_gif || !image->loaded) if (!image->is_animated_gif || !image->loaded)
return; return;
if (image->animation_frame_cache[image->cur_frame]) { if (!image->animation_frame_cache[image->cur_frame])
decode_new_frame(image, image->cur_frame);
gs_texture_set_image(image->texture, gs_texture_set_image(image->texture,
image->animation_frame_cache[image->cur_frame], image->animation_frame_cache[image->cur_frame],
image->gif.width * 4, false); image->gif.width * 4, false);
}
} }

View file

@ -231,7 +231,7 @@ void matrix4_scale_i(struct matrix4 *dst, const struct vec3 *v,
bool matrix4_inv(struct matrix4 *dst, const struct matrix4 *m) bool matrix4_inv(struct matrix4 *dst, const struct matrix4 *m)
{ {
struct vec4 *dstv = (struct vec4 *)dst; struct vec4 *dstv;
float det; float det;
float m3x3[9]; float m3x3[9];
int i, j, sign; int i, j, sign;
@ -261,25 +261,38 @@ bool matrix4_inv(struct matrix4 *dst, const struct matrix4 *m)
void matrix4_transpose(struct matrix4 *dst, const struct matrix4 *m) void matrix4_transpose(struct matrix4 *dst, const struct matrix4 *m)
{ {
struct matrix4 temp; if (dst == m) {
struct matrix4 temp = *m;
matrix4_transpose(dst, &temp);
return;
}
/* TODO: Add SSE */ #ifdef NO_INTRINSICS
temp.x.x = m->x.x; dst->x.x = m->x.x;
temp.x.y = m->y.x; dst->x.y = m->y.x;
temp.x.z = m->z.x; dst->x.z = m->z.x;
temp.x.w = m->t.x; dst->x.w = m->t.x;
temp.y.x = m->x.y; dst->y.x = m->x.y;
temp.y.y = m->y.y; dst->y.y = m->y.y;
temp.y.z = m->z.y; dst->y.z = m->z.y;
temp.y.w = m->t.y; dst->y.w = m->t.y;
temp.z.x = m->x.z; dst->z.x = m->x.z;
temp.z.y = m->y.z; dst->z.y = m->y.z;
temp.z.z = m->z.z; dst->z.z = m->z.z;
temp.z.w = m->t.z; dst->z.w = m->t.z;
temp.t.x = m->x.w; dst->t.x = m->x.w;
temp.t.y = m->y.w; dst->t.y = m->y.w;
temp.t.z = m->z.w; dst->t.z = m->z.w;
temp.t.w = m->t.w; dst->t.w = m->t.w;
#else
__m128 a0 = _mm_unpacklo_ps(m->x.m, m->z.m);
__m128 a1 = _mm_unpacklo_ps(m->y.m, m->t.m);
__m128 a2 = _mm_unpackhi_ps(m->x.m, m->z.m);
__m128 a3 = _mm_unpackhi_ps(m->y.m, m->t.m);
matrix4_copy(dst, &temp); dst->x.m = _mm_unpacklo_ps(a0, a1);
dst->y.m = _mm_unpackhi_ps(a0, a1);
dst->z.m = _mm_unpacklo_ps(a2, a3);
dst->t.m = _mm_unpackhi_ps(a2, a3);
#endif
} }

View file

@ -119,8 +119,7 @@ void shader_sampler_convert(struct shader_sampler *ss,
else if (astrcmpi(state, "MaxAnisotropy") == 0) else if (astrcmpi(state, "MaxAnisotropy") == 0)
info->max_anisotropy = (int)strtol(value, NULL, 10); info->max_anisotropy = (int)strtol(value, NULL, 10);
else if (astrcmpi(state, "BorderColor") == 0) else if (astrcmpi(state, "BorderColor") == 0)
info->border_color = (*value == '#') ? info->border_color = strtol(value + 1, NULL, 16);
strtol(value + 1, NULL, 16) : 0;
} }
} }
@ -138,7 +137,7 @@ static int sp_parse_sampler_state_item(struct shader_parser *sp,
ret = cf_next_token_should_be(&sp->cfp, "=", ";", NULL); ret = cf_next_token_should_be(&sp->cfp, "=", ";", NULL);
if (ret != PARSE_SUCCESS) goto fail; if (ret != PARSE_SUCCESS) goto fail;
ret = cf_next_name(&sp->cfp, &value, "value name", ";"); ret = cf_next_token_copy(&sp->cfp, &value);
if (ret != PARSE_SUCCESS) goto fail; if (ret != PARSE_SUCCESS) goto fail;
ret = cf_next_token_should_be(&sp->cfp, ";", ";", NULL); ret = cf_next_token_should_be(&sp->cfp, ";", ";", NULL);

View file

@ -395,10 +395,13 @@ static void volmeter_update_audio_settings(obs_volmeter_t *volmeter)
{ {
audio_t *audio = obs_get_audio(); audio_t *audio = obs_get_audio();
const unsigned int sr = audio_output_get_sample_rate(audio); const unsigned int sr = audio_output_get_sample_rate(audio);
uint32_t channels = (uint32_t)audio_output_get_channels(audio);
volmeter->channels = (uint32_t)audio_output_get_channels(audio); pthread_mutex_lock(&volmeter->mutex);
volmeter->channels = channels;
volmeter->update_frames = volmeter->update_ms * sr / 1000; volmeter->update_frames = volmeter->update_ms * sr / 1000;
volmeter->peakhold_frames = volmeter->peakhold_ms * sr / 1000; volmeter->peakhold_frames = volmeter->peakhold_ms * sr / 1000;
pthread_mutex_unlock(&volmeter->mutex);
} }
obs_fader_t *obs_fader_create(enum obs_fader_type type) obs_fader_t *obs_fader_create(enum obs_fader_type type)
@ -544,22 +547,24 @@ float obs_fader_get_mul(obs_fader_t *fader)
bool obs_fader_attach_source(obs_fader_t *fader, obs_source_t *source) bool obs_fader_attach_source(obs_fader_t *fader, obs_source_t *source)
{ {
signal_handler_t *sh; signal_handler_t *sh;
float vol;
if (!fader || !source) if (!fader || !source)
return false; return false;
obs_fader_detach_source(fader); obs_fader_detach_source(fader);
pthread_mutex_lock(&fader->mutex);
sh = obs_source_get_signal_handler(source); sh = obs_source_get_signal_handler(source);
signal_handler_connect(sh, "volume", signal_handler_connect(sh, "volume",
fader_source_volume_changed, fader); fader_source_volume_changed, fader);
signal_handler_connect(sh, "destroy", signal_handler_connect(sh, "destroy",
fader_source_destroyed, fader); fader_source_destroyed, fader);
vol = obs_source_get_volume(source);
pthread_mutex_lock(&fader->mutex);
fader->source = source; fader->source = source;
fader->cur_db = mul_to_db(obs_source_get_volume(source)); fader->cur_db = mul_to_db(vol);
pthread_mutex_unlock(&fader->mutex); pthread_mutex_unlock(&fader->mutex);
@ -569,25 +574,25 @@ bool obs_fader_attach_source(obs_fader_t *fader, obs_source_t *source)
void obs_fader_detach_source(obs_fader_t *fader) void obs_fader_detach_source(obs_fader_t *fader)
{ {
signal_handler_t *sh; signal_handler_t *sh;
obs_source_t *source;
if (!fader) if (!fader)
return; return;
pthread_mutex_lock(&fader->mutex); pthread_mutex_lock(&fader->mutex);
source = fader->source;
fader->source = NULL;
pthread_mutex_unlock(&fader->mutex);
if (!fader->source) if (!source)
goto exit; return;
sh = obs_source_get_signal_handler(fader->source); sh = obs_source_get_signal_handler(source);
signal_handler_disconnect(sh, "volume", signal_handler_disconnect(sh, "volume",
fader_source_volume_changed, fader); fader_source_volume_changed, fader);
signal_handler_disconnect(sh, "destroy", signal_handler_disconnect(sh, "destroy",
fader_source_destroyed, fader); fader_source_destroyed, fader);
fader->source = NULL;
exit:
pthread_mutex_unlock(&fader->mutex);
} }
void obs_fader_add_callback(obs_fader_t *fader, obs_fader_changed_t callback, void obs_fader_add_callback(obs_fader_t *fader, obs_fader_changed_t callback,
@ -674,14 +679,13 @@ void obs_volmeter_destroy(obs_volmeter_t *volmeter)
bool obs_volmeter_attach_source(obs_volmeter_t *volmeter, obs_source_t *source) bool obs_volmeter_attach_source(obs_volmeter_t *volmeter, obs_source_t *source)
{ {
signal_handler_t *sh; signal_handler_t *sh;
float vol;
if (!volmeter || !source) if (!volmeter || !source)
return false; return false;
obs_volmeter_detach_source(volmeter); obs_volmeter_detach_source(volmeter);
pthread_mutex_lock(&volmeter->mutex);
sh = obs_source_get_signal_handler(source); sh = obs_source_get_signal_handler(source);
signal_handler_connect(sh, "volume", signal_handler_connect(sh, "volume",
volmeter_source_volume_changed, volmeter); volmeter_source_volume_changed, volmeter);
@ -689,9 +693,12 @@ bool obs_volmeter_attach_source(obs_volmeter_t *volmeter, obs_source_t *source)
volmeter_source_destroyed, volmeter); volmeter_source_destroyed, volmeter);
obs_source_add_audio_capture_callback(source, obs_source_add_audio_capture_callback(source,
volmeter_source_data_received, volmeter); volmeter_source_data_received, volmeter);
vol = obs_source_get_volume(source);
pthread_mutex_lock(&volmeter->mutex);
volmeter->source = source; volmeter->source = source;
volmeter->cur_db = mul_to_db(obs_source_get_volume(source)); volmeter->cur_db = mul_to_db(vol);
pthread_mutex_unlock(&volmeter->mutex); pthread_mutex_unlock(&volmeter->mutex);
@ -701,27 +708,26 @@ bool obs_volmeter_attach_source(obs_volmeter_t *volmeter, obs_source_t *source)
void obs_volmeter_detach_source(obs_volmeter_t *volmeter) void obs_volmeter_detach_source(obs_volmeter_t *volmeter)
{ {
signal_handler_t *sh; signal_handler_t *sh;
obs_source_t *source;
if (!volmeter) if (!volmeter)
return; return;
pthread_mutex_lock(&volmeter->mutex); pthread_mutex_lock(&volmeter->mutex);
source = volmeter->source;
volmeter->source = NULL;
pthread_mutex_unlock(&volmeter->mutex);
if (!volmeter->source) if (!source)
goto exit; return;
sh = obs_source_get_signal_handler(volmeter->source); sh = obs_source_get_signal_handler(source);
signal_handler_disconnect(sh, "volume", signal_handler_disconnect(sh, "volume",
volmeter_source_volume_changed, volmeter); volmeter_source_volume_changed, volmeter);
signal_handler_disconnect(sh, "destroy", signal_handler_disconnect(sh, "destroy",
volmeter_source_destroyed, volmeter); volmeter_source_destroyed, volmeter);
obs_source_remove_audio_capture_callback(volmeter->source, obs_source_remove_audio_capture_callback(source,
volmeter_source_data_received, volmeter); volmeter_source_data_received, volmeter);
volmeter->source = NULL;
exit:
pthread_mutex_unlock(&volmeter->mutex);
} }
void obs_volmeter_set_update_interval(obs_volmeter_t *volmeter, void obs_volmeter_set_update_interval(obs_volmeter_t *volmeter,
@ -732,8 +738,9 @@ void obs_volmeter_set_update_interval(obs_volmeter_t *volmeter,
pthread_mutex_lock(&volmeter->mutex); pthread_mutex_lock(&volmeter->mutex);
volmeter->update_ms = ms; volmeter->update_ms = ms;
volmeter_update_audio_settings(volmeter);
pthread_mutex_unlock(&volmeter->mutex); pthread_mutex_unlock(&volmeter->mutex);
volmeter_update_audio_settings(volmeter);
} }
unsigned int obs_volmeter_get_update_interval(obs_volmeter_t *volmeter) unsigned int obs_volmeter_get_update_interval(obs_volmeter_t *volmeter)
@ -755,8 +762,9 @@ void obs_volmeter_set_peak_hold(obs_volmeter_t *volmeter, const unsigned int ms)
pthread_mutex_lock(&volmeter->mutex); pthread_mutex_lock(&volmeter->mutex);
volmeter->peakhold_ms = ms; volmeter->peakhold_ms = ms;
volmeter_update_audio_settings(volmeter);
pthread_mutex_unlock(&volmeter->mutex); pthread_mutex_unlock(&volmeter->mutex);
volmeter_update_audio_settings(volmeter);
} }
unsigned int obs_volmeter_get_peak_hold(obs_volmeter_t *volmeter) unsigned int obs_volmeter_get_peak_hold(obs_volmeter_t *volmeter)

View file

@ -34,14 +34,14 @@
* *
* Reset to zero each major version * Reset to zero each major version
*/ */
#define LIBOBS_API_MINOR_VER 14 #define LIBOBS_API_MINOR_VER 15
/* /*
* Increment if backward-compatible bug fix * Increment if backward-compatible bug fix
* *
* Reset to zero each major or minor version * Reset to zero each major or minor version
*/ */
#define LIBOBS_API_PATCH_VER 2 #define LIBOBS_API_PATCH_VER 4
#define MAKE_SEMANTIC_VERSION(major, minor, patch) \ #define MAKE_SEMANTIC_VERSION(major, minor, patch) \
((major << 24) | \ ((major << 24) | \

View file

@ -156,10 +156,13 @@ static inline obs_data_t *get_item_autoselect_obj(struct obs_data_item *item)
static inline obs_data_array_t *get_item_array(struct obs_data_item *item) static inline obs_data_array_t *get_item_array(struct obs_data_item *item)
{ {
obs_data_array_t **array;
if (!item) if (!item)
return NULL; return NULL;
return *(obs_data_array_t**)get_item_data(item); array = (obs_data_array_t**)get_item_data(item);
return array ? *array : NULL;
} }
static inline obs_data_array_t *get_item_default_array( static inline obs_data_array_t *get_item_default_array(
@ -1495,6 +1498,14 @@ enum obs_data_number_type obs_data_item_numtype(obs_data_item_t *item)
return num->type; return num->type;
} }
const char *obs_data_item_get_name(obs_data_item_t *item)
{
if (!item)
return NULL;
return get_item_name(item);
}
void obs_data_item_set_string(obs_data_item_t **item, const char *val) void obs_data_item_set_string(obs_data_item_t **item, const char *val)
{ {
obs_set_string(NULL, item, NULL, val, set_item); obs_set_string(NULL, item, NULL, val, set_item);

View file

@ -195,6 +195,7 @@ EXPORT void obs_data_item_remove(obs_data_item_t **item);
/* Gets Item type */ /* Gets Item type */
EXPORT enum obs_data_type obs_data_item_gettype(obs_data_item_t *item); EXPORT enum obs_data_type obs_data_item_gettype(obs_data_item_t *item);
EXPORT enum obs_data_number_type obs_data_item_numtype(obs_data_item_t *item); EXPORT enum obs_data_number_type obs_data_item_numtype(obs_data_item_t *item);
EXPORT const char *obs_data_item_get_name(obs_data_item_t *item);
/* Item set functions */ /* Item set functions */
EXPORT void obs_data_item_set_string(obs_data_item_t **item, const char *val); EXPORT void obs_data_item_set_string(obs_data_item_t **item, const char *val);

View file

@ -108,7 +108,7 @@ static struct obs_encoder *create_encoder(const char *id,
&obs->data.encoders_mutex, &obs->data.encoders_mutex,
&obs->data.first_encoder); &obs->data.first_encoder);
blog(LOG_INFO, "encoder '%s' (%s) created", name, id); blog(LOG_DEBUG, "encoder '%s' (%s) created", name, id);
return encoder; return encoder;
} }
@ -229,7 +229,7 @@ static void obs_encoder_actually_destroy(obs_encoder_t *encoder)
da_free(encoder->outputs); da_free(encoder->outputs);
pthread_mutex_unlock(&encoder->outputs_mutex); pthread_mutex_unlock(&encoder->outputs_mutex);
blog(LOG_INFO, "encoder '%s' destroyed", encoder->context.name); blog(LOG_DEBUG, "encoder '%s' destroyed", encoder->context.name);
free_audio_buffers(encoder); free_audio_buffers(encoder);
@ -809,6 +809,7 @@ static inline void do_encode(struct obs_encoder *encoder,
* you do not want to use relative timestamps here */ * you do not want to use relative timestamps here */
pkt.dts_usec = encoder->start_ts / 1000 + pkt.dts_usec = encoder->start_ts / 1000 +
packet_dts_usec(&pkt) - encoder->offset_usec; packet_dts_usec(&pkt) - encoder->offset_usec;
pkt.sys_dts_usec = pkt.dts_usec;
pthread_mutex_lock(&encoder->callbacks_mutex); pthread_mutex_lock(&encoder->callbacks_mutex);

View file

@ -58,6 +58,9 @@ struct encoder_packet {
/* DTS in microseconds */ /* DTS in microseconds */
int64_t dts_usec; int64_t dts_usec;
/* System DTS in microseconds */
int64_t sys_dts_usec;
/** /**
* Packet priority * Packet priority
* *

View file

@ -238,6 +238,7 @@ struct obs_core_video {
gs_effect_t *lanczos_effect; gs_effect_t *lanczos_effect;
gs_effect_t *bilinear_lowres_effect; gs_effect_t *bilinear_lowres_effect;
gs_effect_t *premultiplied_alpha_effect; gs_effect_t *premultiplied_alpha_effect;
gs_samplerstate_t *point_sampler;
gs_stagesurf_t *mapped_surface; gs_stagesurf_t *mapped_surface;
int cur_texture; int cur_texture;
@ -781,20 +782,25 @@ struct obs_output {
bool received_video; bool received_video;
bool received_audio; bool received_audio;
volatile bool data_active;
volatile bool end_data_capture_thread_active;
int64_t video_offset; int64_t video_offset;
int64_t audio_offsets[MAX_AUDIO_MIXES]; int64_t audio_offsets[MAX_AUDIO_MIXES];
int64_t highest_audio_ts; int64_t highest_audio_ts;
int64_t highest_video_ts; int64_t highest_video_ts;
pthread_t end_data_capture_thread;
os_event_t *stopping_event;
pthread_mutex_t interleaved_mutex; pthread_mutex_t interleaved_mutex;
DARRAY(struct encoder_packet) interleaved_packets; DARRAY(struct encoder_packet) interleaved_packets;
int stop_code;
int reconnect_retry_sec; int reconnect_retry_sec;
int reconnect_retry_max; int reconnect_retry_max;
int reconnect_retries; int reconnect_retries;
int reconnect_retry_cur_sec; int reconnect_retry_cur_sec;
bool reconnecting;
pthread_t reconnect_thread; pthread_t reconnect_thread;
os_event_t *reconnect_stop_event; os_event_t *reconnect_stop_event;
volatile bool reconnecting;
volatile bool reconnect_thread_active; volatile bool reconnect_thread_active;
uint32_t starting_drawn_count; uint32_t starting_drawn_count;
@ -804,8 +810,7 @@ struct obs_output {
int total_frames; int total_frames;
bool active; volatile bool active;
volatile bool stopped;
video_t *video; video_t *video;
audio_t *audio; audio_t *audio;
obs_encoder_t *video_encoder; obs_encoder_t *video_encoder;
@ -831,8 +836,8 @@ struct obs_output {
uint32_t delay_flags; uint32_t delay_flags;
uint32_t delay_cur_flags; uint32_t delay_cur_flags;
volatile long delay_restart_refs; volatile long delay_restart_refs;
bool delay_active; volatile bool delay_active;
bool delay_capturing; volatile bool delay_capturing;
}; };
static inline void do_output_signal(struct obs_output *output, static inline void do_output_signal(struct obs_output *output,
@ -849,7 +854,8 @@ extern void obs_output_cleanup_delay(obs_output_t *output);
extern bool obs_output_delay_start(obs_output_t *output); extern bool obs_output_delay_start(obs_output_t *output);
extern void obs_output_delay_stop(obs_output_t *output); extern void obs_output_delay_stop(obs_output_t *output);
extern bool obs_output_actual_start(obs_output_t *output); extern bool obs_output_actual_start(obs_output_t *output);
extern void obs_output_actual_stop(obs_output_t *output, bool force); extern void obs_output_actual_stop(obs_output_t *output, bool force,
uint64_t ts);
extern const struct obs_output_info *find_output(const char *id); extern const struct obs_output_info *find_output(const char *id);

View file

@ -84,7 +84,7 @@ int obs_open_module(obs_module_t **module, const char *path,
if (!module || !path || !obs) if (!module || !path || !obs)
return MODULE_ERROR; return MODULE_ERROR;
blog(LOG_INFO, "---------------------------------"); blog(LOG_DEBUG, "---------------------------------");
mod.module = os_dlopen(path); mod.module = os_dlopen(path);
if (!mod.module) { if (!mod.module) {
@ -104,7 +104,7 @@ int obs_open_module(obs_module_t **module, const char *path,
mod.next = obs->first_module; mod.next = obs->first_module;
if (mod.file) { if (mod.file) {
blog(LOG_INFO, "Loading module: %s", mod.file); blog(LOG_DEBUG, "Loading module: %s", mod.file);
} }
*module = bmemdup(&mod, sizeof(mod)); *module = bmemdup(&mod, sizeof(mod));
@ -138,6 +138,14 @@ bool obs_init_module(obs_module_t *module)
return module->loaded; return module->loaded;
} }
void obs_log_loaded_modules(void)
{
blog(LOG_INFO, " Loaded Modules:");
for (obs_module_t *mod = obs->first_module; !!mod; mod = mod->next)
blog(LOG_INFO, " %s", mod->file);
}
const char *obs_get_module_file_name(obs_module_t *module) const char *obs_get_module_file_name(obs_module_t *module)
{ {
return module ? module->file : NULL; return module ? module->file : NULL;

View file

@ -133,7 +133,7 @@ MODULE_EXTERN obs_module_t *obs_current_module(void);
/** /**
* Returns the location to a module data file associated with the current * Returns the location to a module data file associated with the current
* module. Free with bfree when complete. Equivalent to: * module. Free with bfree when complete. Equivalent to:
* obs_find_module_file(obs_current_modile(), file); * obs_find_module_file(obs_current_module(), file);
*/ */
#define obs_module_file(file) obs_find_module_file(obs_current_module(), file) #define obs_module_file(file) obs_find_module_file(obs_current_module(), file)
@ -141,7 +141,7 @@ MODULE_EXTERN obs_module_t *obs_current_module(void);
* Returns the location to a module config file associated with the current * Returns the location to a module config file associated with the current
* module. Free with bfree when complete. Will return NULL if configuration * module. Free with bfree when complete. Will return NULL if configuration
* directory is not set. Equivalent to: * directory is not set. Equivalent to:
* obs_module_get_config_path(obs_current_modile(), file); * obs_module_get_config_path(obs_current_module(), file);
*/ */
#define obs_module_config_path(file) \ #define obs_module_config_path(file) \
obs_module_get_config_path(obs_current_module(), file) obs_module_get_config_path(obs_current_module(), file)

View file

@ -18,6 +18,16 @@
#include <inttypes.h> #include <inttypes.h>
#include "obs-internal.h" #include "obs-internal.h"
static inline bool delay_active(const struct obs_output *output)
{
return os_atomic_load_bool(&output->delay_active);
}
static inline bool delay_capturing(const struct obs_output *output)
{
return os_atomic_load_bool(&output->delay_capturing);
}
static inline void push_packet(struct obs_output *output, static inline void push_packet(struct obs_output *output,
struct encoder_packet *packet, uint64_t t) struct encoder_packet *packet, uint64_t t)
{ {
@ -37,7 +47,7 @@ static inline void process_delay_data(struct obs_output *output,
{ {
switch (dd->msg) { switch (dd->msg) {
case DELAY_MSG_PACKET: case DELAY_MSG_PACKET:
if (!output->delay_active || !output->delay_capturing) if (!delay_active(output) || !delay_capturing(output))
obs_free_encoder_packet(&dd->packet); obs_free_encoder_packet(&dd->packet);
else else
output->delay_callback(output, &dd->packet); output->delay_callback(output, &dd->packet);
@ -46,7 +56,7 @@ static inline void process_delay_data(struct obs_output *output,
obs_output_actual_start(output); obs_output_actual_start(output);
break; break;
case DELAY_MSG_STOP: case DELAY_MSG_STOP:
obs_output_actual_stop(output, false); obs_output_actual_stop(output, false, dd->ts);
break; break;
} }
} }
@ -63,7 +73,7 @@ void obs_output_cleanup_delay(obs_output_t *output)
} }
output->active_delay_ns = 0; output->active_delay_ns = 0;
output->delay_restart_refs = 0; os_atomic_set_long(&output->delay_restart_refs, 0);
} }
static inline bool pop_packet(struct obs_output *output, uint64_t t) static inline bool pop_packet(struct obs_output *output, uint64_t t)
@ -129,7 +139,7 @@ bool obs_output_delay_start(obs_output_t *output)
.ts = os_gettime_ns(), .ts = os_gettime_ns(),
}; };
if (!output->delay_active) { if (!delay_active(output)) {
bool can_begin = obs_output_can_begin_data_capture(output, 0); bool can_begin = obs_output_can_begin_data_capture(output, 0);
if (!can_begin) if (!can_begin)
return false; return false;
@ -141,8 +151,9 @@ bool obs_output_delay_start(obs_output_t *output)
circlebuf_push_back(&output->delay_data, &dd, sizeof(dd)); circlebuf_push_back(&output->delay_data, &dd, sizeof(dd));
pthread_mutex_unlock(&output->delay_mutex); pthread_mutex_unlock(&output->delay_mutex);
if (output->delay_active) {
os_atomic_inc_long(&output->delay_restart_refs); os_atomic_inc_long(&output->delay_restart_refs);
if (delay_active(output)) {
do_output_signal(output, "starting"); do_output_signal(output, "starting");
return true; return true;
} }

View file

@ -20,7 +20,35 @@
#include "obs.h" #include "obs.h"
#include "obs-internal.h" #include "obs-internal.h"
static inline void signal_stop(struct obs_output *output, int code); static inline bool active(const struct obs_output *output)
{
return os_atomic_load_bool(&output->active);
}
static inline bool reconnecting(const struct obs_output *output)
{
return os_atomic_load_bool(&output->reconnecting);
}
static inline bool stopping(const struct obs_output *output)
{
return os_event_try(output->stopping_event) == EAGAIN;
}
static inline bool delay_active(const struct obs_output *output)
{
return os_atomic_load_bool(&output->delay_active);
}
static inline bool delay_capturing(const struct obs_output *output)
{
return os_atomic_load_bool(&output->delay_capturing);
}
static inline bool data_capture_ending(const struct obs_output *output)
{
return os_atomic_load_bool(&output->end_data_capture_thread_active);
}
const struct obs_output_info *find_output(const char *id) const struct obs_output_info *find_output(const char *id)
{ {
@ -76,9 +104,13 @@ obs_output_t *obs_output_create(const char *id, const char *name,
goto fail; goto fail;
if (pthread_mutex_init(&output->delay_mutex, NULL) != 0) if (pthread_mutex_init(&output->delay_mutex, NULL) != 0)
goto fail; goto fail;
if (os_event_init(&output->stopping_event, OS_EVENT_TYPE_MANUAL) != 0)
goto fail;
if (!init_output_handlers(output, name, settings, hotkey_data)) if (!init_output_handlers(output, name, settings, hotkey_data))
goto fail; goto fail;
os_event_signal(output->stopping_event);
if (!info) { if (!info) {
blog(LOG_ERROR, "Output ID '%s' not found", id); blog(LOG_ERROR, "Output ID '%s' not found", id);
@ -114,7 +146,7 @@ obs_output_t *obs_output_create(const char *id, const char *name,
&obs->data.outputs_mutex, &obs->data.outputs_mutex,
&obs->data.first_output); &obs->data.first_output);
blog(LOG_INFO, "output '%s' (%s) created", name, id); blog(LOG_DEBUG, "output '%s' (%s) created", name, id);
return output; return output;
fail: fail:
@ -134,18 +166,22 @@ void obs_output_destroy(obs_output_t *output)
if (output) { if (output) {
obs_context_data_remove(&output->context); obs_context_data_remove(&output->context);
blog(LOG_INFO, "output '%s' destroyed", output->context.name); blog(LOG_DEBUG, "output '%s' destroyed", output->context.name);
if (output->valid && active(output))
obs_output_actual_stop(output, true, 0);
os_event_wait(output->stopping_event);
if (data_capture_ending(output))
pthread_join(output->end_data_capture_thread, NULL);
if (output->valid && output->active)
obs_output_actual_stop(output, true);
if (output->service) if (output->service)
output->service->output = NULL; output->service->output = NULL;
free_packets(output);
if (output->context.data) if (output->context.data)
output->info.destroy(output->context.data); output->info.destroy(output->context.data);
free_packets(output);
if (output->video_encoder) { if (output->video_encoder) {
obs_encoder_remove_output(output->video_encoder, obs_encoder_remove_output(output->video_encoder,
output); output);
@ -159,6 +195,7 @@ void obs_output_destroy(obs_output_t *output)
} }
} }
os_event_destroy(output->stopping_event);
pthread_mutex_destroy(&output->interleaved_mutex); pthread_mutex_destroy(&output->interleaved_mutex);
pthread_mutex_destroy(&output->delay_mutex); pthread_mutex_destroy(&output->delay_mutex);
os_event_destroy(output->reconnect_stop_event); os_event_destroy(output->reconnect_stop_event);
@ -180,7 +217,8 @@ bool obs_output_actual_start(obs_output_t *output)
{ {
bool success = false; bool success = false;
output->stopped = false; os_event_wait(output->stopping_event);
output->stop_code = 0;
if (output->context.data) if (output->context.data)
success = output->info.start(output->context.data); success = output->info.start(output->context.data);
@ -194,7 +232,7 @@ bool obs_output_actual_start(obs_output_t *output)
output->starting_lagged_count = obs->video.lagged_frames; output->starting_lagged_count = obs->video.lagged_frames;
} }
if (output->delay_restart_refs) if (os_atomic_load_long(&output->delay_restart_refs))
os_atomic_dec_long(&output->delay_restart_refs); os_atomic_dec_long(&output->delay_restart_refs);
return success; return success;
@ -222,6 +260,11 @@ bool obs_output_start(obs_output_t *output)
} }
} }
static inline bool data_active(struct obs_output *output)
{
return os_atomic_load_bool(&output->data_active);
}
static void log_frame_info(struct obs_output *output) static void log_frame_info(struct obs_output *output)
{ {
struct obs_core_video *video = &obs->video; struct obs_core_video *video = &obs->video;
@ -272,27 +315,47 @@ static void log_frame_info(struct obs_output *output)
dropped, percentage_dropped); dropped, percentage_dropped);
} }
void obs_output_actual_stop(obs_output_t *output, bool force) static inline void signal_stop(struct obs_output *output);
{
output->stopped = true;
void obs_output_actual_stop(obs_output_t *output, bool force, uint64_t ts)
{
bool call_stop = true;
bool was_reconnecting = false;
if (stopping(output))
return;
os_event_reset(output->stopping_event);
was_reconnecting = reconnecting(output) && !delay_active(output);
if (reconnecting(output)) {
os_event_signal(output->reconnect_stop_event); os_event_signal(output->reconnect_stop_event);
if (output->reconnect_thread_active) if (output->reconnect_thread_active)
pthread_join(output->reconnect_thread, NULL); pthread_join(output->reconnect_thread, NULL);
if (output->context.data)
output->info.stop(output->context.data);
if (output->video)
log_frame_info(output);
if (output->delay_active && (force || !output->delay_restart_refs)) {
output->delay_active = false;
obs_output_end_data_capture(output);
} }
if (force || !output->delay_active) if (force) {
signal_stop(output, OBS_OUTPUT_SUCCESS); if (delay_active(output)) {
call_stop = delay_capturing(output);
os_atomic_set_bool(&output->delay_active, false);
os_atomic_set_bool(&output->delay_capturing, false);
output->stop_code = OBS_OUTPUT_SUCCESS;
obs_output_end_data_capture(output);
os_event_signal(output->stopping_event);
} else {
call_stop = data_active(output);
}
} else {
call_stop = data_active(output);
}
if (output->context.data && call_stop) {
output->info.stop(output->context.data, ts);
} else if (was_reconnecting) {
output->stop_code = OBS_OUTPUT_SUCCESS;
signal_stop(output);
os_event_signal(output->stopping_event);
}
} }
void obs_output_stop(obs_output_t *output) void obs_output_stop(obs_output_t *output)
@ -302,26 +365,40 @@ void obs_output_stop(obs_output_t *output)
return; return;
if (!output->context.data) if (!output->context.data)
return; return;
if (!active(output) && !reconnecting(output))
return;
if (reconnecting(output)) {
obs_output_force_stop(output);
return;
}
encoded = (output->info.flags & OBS_OUTPUT_ENCODED) != 0; encoded = (output->info.flags & OBS_OUTPUT_ENCODED) != 0;
if (encoded && output->active_delay_ns) { if (encoded && output->active_delay_ns) {
obs_output_delay_stop(output); obs_output_delay_stop(output);
} else {
obs_output_actual_stop(output, false); } else if (!stopping(output)) {
do_output_signal(output, "stopping"); do_output_signal(output, "stopping");
obs_output_actual_stop(output, false, os_gettime_ns());
} }
} }
void obs_output_force_stop(obs_output_t *output) void obs_output_force_stop(obs_output_t *output)
{ {
obs_output_actual_stop(output, true); if (!obs_output_valid(output, "obs_output_force_stop"))
return;
if (!stopping(output)) {
output->stop_code = 0;
do_output_signal(output, "stopping");
obs_output_actual_stop(output, true, 0);
}
} }
bool obs_output_active(const obs_output_t *output) bool obs_output_active(const obs_output_t *output)
{ {
return (output != NULL) ? return (output != NULL) ?
(output->active || output->reconnecting) : false; (active(output) || reconnecting(output)) : false;
} }
static inline obs_data_t *get_defaults(const struct obs_output_info *info) static inline obs_data_t *get_defaults(const struct obs_output_info *info)
@ -442,7 +519,7 @@ void obs_output_set_mixer(obs_output_t *output, size_t mixer_idx)
if (!obs_output_valid(output, "obs_output_set_mixer")) if (!obs_output_valid(output, "obs_output_set_mixer"))
return; return;
if (!output->active) if (!active(output))
output->mixer_idx = mixer_idx; output->mixer_idx = mixer_idx;
} }
@ -547,7 +624,7 @@ void obs_output_set_service(obs_output_t *output, obs_service_t *service)
{ {
if (!obs_output_valid(output, "obs_output_set_service")) if (!obs_output_valid(output, "obs_output_set_service"))
return; return;
if (output->active || !service || service->active) if (active(output) || !service || service->active)
return; return;
if (service->output) if (service->output)
@ -580,7 +657,7 @@ uint64_t obs_output_get_total_bytes(const obs_output_t *output)
if (!output->info.get_total_bytes) if (!output->info.get_total_bytes)
return 0; return 0;
if (output->delay_active && !output->delay_capturing) if (delay_active(output) && !delay_capturing(output))
return 0; return 0;
return output->info.get_total_bytes(output->context.data); return output->info.get_total_bytes(output->context.data);
@ -610,7 +687,7 @@ void obs_output_set_preferred_size(obs_output_t *output, uint32_t width,
if ((output->info.flags & OBS_OUTPUT_VIDEO) == 0) if ((output->info.flags & OBS_OUTPUT_VIDEO) == 0)
return; return;
if (output->active) { if (active(output)) {
blog(LOG_WARNING, "output '%s': Cannot set the preferred " blog(LOG_WARNING, "output '%s': Cannot set the preferred "
"resolution while the output is active", "resolution while the output is active",
obs_output_get_name(output)); obs_output_get_name(output));
@ -879,7 +956,6 @@ static inline void send_interleaved(struct obs_output *output)
output->total_frames++; output->total_frames++;
da_erase(output->interleaved_packets, 0); da_erase(output->interleaved_packets, 0);
if (!output->stopped)
output->info.encoded_packet(output->context.data, &out); output->info.encoded_packet(output->context.data, &out);
obs_free_encoder_packet(&out); obs_free_encoder_packet(&out);
} }
@ -940,7 +1016,7 @@ static int prune_premature_packets(struct obs_output *output)
int max_idx; int max_idx;
int64_t duration_usec; int64_t duration_usec;
int64_t max_diff = 0; int64_t max_diff = 0;
int64_t diff; int64_t diff = 0;
video_idx = find_first_packet_type_idx(output, OBS_ENCODER_VIDEO, 0); video_idx = find_first_packet_type_idx(output, OBS_ENCODER_VIDEO, 0);
if (video_idx == -1) { if (video_idx == -1) {
@ -1212,6 +1288,9 @@ static void interleave_packets(void *data, struct encoder_packet *packet)
struct encoder_packet out; struct encoder_packet out;
bool was_started; bool was_started;
if (!active(output))
return;
if (packet->type == OBS_ENCODER_AUDIO) if (packet->type == OBS_ENCODER_AUDIO)
packet->track_idx = get_track_index(output, packet); packet->track_idx = get_track_index(output, packet);
@ -1223,6 +1302,9 @@ static void interleave_packets(void *data, struct encoder_packet *packet)
!packet->keyframe) { !packet->keyframe) {
discard_unused_audio_packets(output, packet->dts_usec); discard_unused_audio_packets(output, packet->dts_usec);
pthread_mutex_unlock(&output->interleaved_mutex); pthread_mutex_unlock(&output->interleaved_mutex);
if (output->active_delay_ns)
obs_free_encoder_packet(packet);
return; return;
} }
@ -1263,22 +1345,24 @@ static void default_encoded_callback(void *param, struct encoder_packet *packet)
{ {
struct obs_output *output = param; struct obs_output *output = param;
if (data_active(output)) {
if (packet->type == OBS_ENCODER_AUDIO) if (packet->type == OBS_ENCODER_AUDIO)
packet->track_idx = get_track_index(output, packet); packet->track_idx = get_track_index(output, packet);
if (!output->stopped)
output->info.encoded_packet(output->context.data, packet); output->info.encoded_packet(output->context.data, packet);
if (output->active_delay_ns)
obs_free_encoder_packet(packet);
if (packet->type == OBS_ENCODER_VIDEO) if (packet->type == OBS_ENCODER_VIDEO)
output->total_frames++; output->total_frames++;
}
if (output->active_delay_ns)
obs_free_encoder_packet(packet);
} }
static void default_raw_video_callback(void *param, struct video_data *frame) static void default_raw_video_callback(void *param, struct video_data *frame)
{ {
struct obs_output *output = param; struct obs_output *output = param;
if (!output->stopped) if (data_active(output))
output->info.raw_video(output->context.data, frame); output->info.raw_video(output->context.data, frame);
output->total_frames++; output->total_frames++;
} }
@ -1287,7 +1371,9 @@ static void default_raw_audio_callback(void *param, size_t mix_idx,
struct audio_data *frames) struct audio_data *frames)
{ {
struct obs_output *output = param; struct obs_output *output = param;
if (!output->stopped) if (!data_active(output))
return;
output->info.raw_audio(output->context.data, frames); output->info.raw_audio(output->context.data, frames);
UNUSED_PARAMETER(mix_idx); UNUSED_PARAMETER(mix_idx);
@ -1342,7 +1428,7 @@ static void hook_data_capture(struct obs_output *output, bool encoded,
output->delay_cur_flags = output->delay_flags; output->delay_cur_flags = output->delay_flags;
output->delay_callback = encoded_callback; output->delay_callback = encoded_callback;
encoded_callback = process_delay; encoded_callback = process_delay;
output->delay_active = true; os_atomic_set_bool(&output->delay_active, true);
blog(LOG_INFO, "Output '%s': %"PRIu32" second delay " blog(LOG_INFO, "Output '%s': %"PRIu32" second delay "
"active, preserve on disconnect is %s", "active, preserve on disconnect is %s",
@ -1390,13 +1476,13 @@ static inline void signal_reconnect_success(struct obs_output *output)
do_output_signal(output, "reconnect_success"); do_output_signal(output, "reconnect_success");
} }
static inline void signal_stop(struct obs_output *output, int code) static inline void signal_stop(struct obs_output *output)
{ {
struct calldata params; struct calldata params;
uint8_t stack[128]; uint8_t stack[128];
calldata_init_fixed(&params, stack, sizeof(stack)); calldata_init_fixed(&params, stack, sizeof(stack));
calldata_set_int(&params, "code", code); calldata_set_int(&params, "code", output->stop_code);
calldata_set_ptr(&params, "output", output); calldata_set_ptr(&params, "output", output);
signal_handler_signal(output->context.signals, "stop", &params); signal_handler_signal(output->context.signals, "stop", &params);
} }
@ -1424,8 +1510,11 @@ bool obs_output_can_begin_data_capture(const obs_output_t *output,
if (!obs_output_valid(output, "obs_output_can_begin_data_capture")) if (!obs_output_valid(output, "obs_output_can_begin_data_capture"))
return false; return false;
if (output->delay_active) return true; if (delay_active(output)) return true;
if (output->active) return false; if (active(output)) return false;
if (data_capture_ending(output))
pthread_join(output->end_data_capture_thread, NULL);
convert_flags(output, flags, &encoded, &has_video, &has_audio, convert_flags(output, flags, &encoded, &has_video, &has_audio,
&has_service); &has_service);
@ -1492,7 +1581,7 @@ bool obs_output_initialize_encoders(obs_output_t *output, uint32_t flags)
if (!obs_output_valid(output, "obs_output_initialize_encoders")) if (!obs_output_valid(output, "obs_output_initialize_encoders"))
return false; return false;
if (output->active) return output->delay_active; if (active(output)) return delay_active(output);
convert_flags(output, flags, &encoded, &has_video, &has_audio, convert_flags(output, flags, &encoded, &has_video, &has_audio,
&has_service); &has_service);
@ -1514,17 +1603,17 @@ bool obs_output_initialize_encoders(obs_output_t *output, uint32_t flags)
static bool begin_delayed_capture(obs_output_t *output) static bool begin_delayed_capture(obs_output_t *output)
{ {
if (output->delay_capturing) if (delay_capturing(output))
return false; return false;
pthread_mutex_lock(&output->interleaved_mutex); pthread_mutex_lock(&output->interleaved_mutex);
reset_packet_data(output); reset_packet_data(output);
output->delay_capturing = true; os_atomic_set_bool(&output->delay_capturing, true);
pthread_mutex_unlock(&output->interleaved_mutex); pthread_mutex_unlock(&output->interleaved_mutex);
if (output->reconnecting) { if (reconnecting(output)) {
signal_reconnect_success(output); signal_reconnect_success(output);
output->reconnecting = false; os_atomic_set_bool(&output->reconnecting, false);
} else { } else {
signal_start(output); signal_start(output);
} }
@ -1539,8 +1628,8 @@ bool obs_output_begin_data_capture(obs_output_t *output, uint32_t flags)
if (!obs_output_valid(output, "obs_output_begin_data_capture")) if (!obs_output_valid(output, "obs_output_begin_data_capture"))
return false; return false;
if (output->delay_active) return begin_delayed_capture(output); if (delay_active(output)) return begin_delayed_capture(output);
if (output->active) return false; if (active(output)) return false;
output->total_frames = 0; output->total_frames = 0;
@ -1551,19 +1640,20 @@ bool obs_output_begin_data_capture(obs_output_t *output, uint32_t flags)
has_service)) has_service))
return false; return false;
os_atomic_set_bool(&output->data_active, true);
hook_data_capture(output, encoded, has_video, has_audio); hook_data_capture(output, encoded, has_video, has_audio);
if (has_service) if (has_service)
obs_service_activate(output->service); obs_service_activate(output->service);
do_output_signal(output, "activate"); do_output_signal(output, "activate");
output->active = true; os_atomic_set_bool(&output->active, true);
if (output->reconnecting) { if (reconnecting(output)) {
signal_reconnect_success(output); signal_reconnect_success(output);
output->reconnecting = false; os_atomic_set_bool(&output->reconnecting, false);
} else if (output->delay_active) { } else if (delay_active(output)) {
do_output_signal(output, "starting"); do_output_signal(output, "starting");
} else { } else {
@ -1584,20 +1674,11 @@ static inline void stop_audio_encoders(obs_output_t *output,
} }
} }
void obs_output_end_data_capture(obs_output_t *output) static void *end_data_capture_thread(void *data)
{ {
bool encoded, has_video, has_audio, has_service; bool encoded, has_video, has_audio, has_service;
encoded_callback_t encoded_callback; encoded_callback_t encoded_callback;
obs_output_t *output = data;
if (!obs_output_valid(output, "obs_output_end_data_capture"))
return;
if (output->delay_active) {
output->delay_capturing = false;
return;
}
if (!output->active) return;
convert_flags(output, 0, &encoded, &has_video, &has_audio, convert_flags(output, 0, &encoded, &has_video, &has_audio,
&has_service); &has_service);
@ -1631,7 +1712,66 @@ void obs_output_end_data_capture(obs_output_t *output)
obs_output_cleanup_delay(output); obs_output_cleanup_delay(output);
do_output_signal(output, "deactivate"); do_output_signal(output, "deactivate");
output->active = false; os_atomic_set_bool(&output->active, false);
os_event_signal(output->stopping_event);
os_atomic_set_bool(&output->end_data_capture_thread_active, false);
return NULL;
}
static void obs_output_end_data_capture_internal(obs_output_t *output,
bool signal)
{
int ret;
if (!obs_output_valid(output, "obs_output_end_data_capture"))
return;
if (!active(output) || !data_active(output)) {
if (signal) {
signal_stop(output);
output->stop_code = OBS_OUTPUT_SUCCESS;
}
return;
}
if (delay_active(output)) {
os_atomic_set_bool(&output->delay_capturing, false);
if (!os_atomic_load_long(&output->delay_restart_refs)) {
os_atomic_set_bool(&output->delay_active, false);
} else {
os_event_signal(output->stopping_event);
return;
}
}
os_atomic_set_bool(&output->data_active, false);
if (output->video)
log_frame_info(output);
if (data_capture_ending(output))
pthread_join(output->end_data_capture_thread, NULL);
os_atomic_set_bool(&output->end_data_capture_thread_active, true);
ret = pthread_create(&output->end_data_capture_thread, NULL,
end_data_capture_thread, output);
if (ret != 0) {
blog(LOG_WARNING, "Failed to create end_data_capture_thread "
"for output '%s'!", output->context.name);
end_data_capture_thread(output);
}
if (signal) {
signal_stop(output);
output->stop_code = OBS_OUTPUT_SUCCESS;
}
}
void obs_output_end_data_capture(obs_output_t *output)
{
obs_output_end_data_capture_internal(output, true);
} }
static void *reconnect_thread(void *param) static void *reconnect_thread(void *param)
@ -1647,48 +1787,51 @@ static void *reconnect_thread(void *param)
if (os_event_try(output->reconnect_stop_event) == EAGAIN) if (os_event_try(output->reconnect_stop_event) == EAGAIN)
pthread_detach(output->reconnect_thread); pthread_detach(output->reconnect_thread);
else else
output->reconnecting = false; os_atomic_set_bool(&output->reconnecting, false);
output->reconnect_thread_active = false; output->reconnect_thread_active = false;
return NULL; return NULL;
} }
#define MAX_RETRY_SEC (15 * 60)
static void output_reconnect(struct obs_output *output) static void output_reconnect(struct obs_output *output)
{ {
int ret; int ret;
if (!output->reconnecting) { if (!reconnecting(output)) {
output->reconnect_retry_cur_sec = output->reconnect_retry_sec; output->reconnect_retry_cur_sec = output->reconnect_retry_sec;
output->reconnect_retries = 0; output->reconnect_retries = 0;
} }
if (output->reconnect_retries >= output->reconnect_retry_max) { if (output->reconnect_retries >= output->reconnect_retry_max) {
output->reconnecting = false; output->stop_code = OBS_OUTPUT_DISCONNECTED;
if (output->delay_active) { os_atomic_set_bool(&output->reconnecting, false);
output->delay_active = false; if (delay_active(output))
os_atomic_set_bool(&output->delay_active, false);
obs_output_end_data_capture(output); obs_output_end_data_capture(output);
}
signal_stop(output, OBS_OUTPUT_DISCONNECTED);
return; return;
} }
if (!output->reconnecting) { if (!reconnecting(output)) {
output->reconnecting = true; os_atomic_set_bool(&output->reconnecting, true);
os_event_reset(output->reconnect_stop_event); os_event_reset(output->reconnect_stop_event);
} }
if (output->reconnect_retries) { if (output->reconnect_retries) {
output->reconnect_retry_cur_sec *= 2; output->reconnect_retry_cur_sec *= 2;
if (output->reconnect_retry_cur_sec > MAX_RETRY_SEC)
output->reconnect_retry_cur_sec = MAX_RETRY_SEC;
} }
output->reconnect_retries++; output->reconnect_retries++;
output->stop_code = OBS_OUTPUT_DISCONNECTED;
ret = pthread_create(&output->reconnect_thread, NULL, ret = pthread_create(&output->reconnect_thread, NULL,
&reconnect_thread, output); &reconnect_thread, output);
if (ret < 0) { if (ret < 0) {
blog(LOG_WARNING, "Failed to create reconnect thread"); blog(LOG_WARNING, "Failed to create reconnect thread");
output->reconnecting = false; os_atomic_set_bool(&output->reconnecting, false);
signal_stop(output, OBS_OUTPUT_DISCONNECTED);
} else { } else {
blog(LOG_INFO, "Output '%s': Reconnecting in %d seconds..", blog(LOG_INFO, "Output '%s': Reconnecting in %d seconds..",
output->context.name, output->context.name,
@ -1698,23 +1841,31 @@ static void output_reconnect(struct obs_output *output)
} }
} }
static inline bool can_reconnect(const obs_output_t *output, int code)
{
bool reconnect_active = output->reconnect_retry_max != 0;
return (reconnecting(output) && code != OBS_OUTPUT_SUCCESS) ||
(reconnect_active && code == OBS_OUTPUT_DISCONNECTED);
}
void obs_output_signal_stop(obs_output_t *output, int code) void obs_output_signal_stop(obs_output_t *output, int code)
{ {
if (!obs_output_valid(output, "obs_output_signal_stop")) if (!obs_output_valid(output, "obs_output_signal_stop"))
return; return;
obs_output_end_data_capture(output); output->stop_code = code;
if ((output->reconnecting && code != OBS_OUTPUT_SUCCESS) || if (can_reconnect(output, code)) {
code == OBS_OUTPUT_DISCONNECTED) { if (delay_active(output))
os_atomic_inc_long(&output->delay_restart_refs);
obs_output_end_data_capture_internal(output, false);
output_reconnect(output); output_reconnect(output);
} else { } else {
if (output->delay_active) { if (delay_active(output))
output->delay_active = false; os_atomic_set_bool(&output->delay_active, false);
obs_output_end_data_capture(output); obs_output_end_data_capture(output);
} }
signal_stop(output, code);
}
} }
void obs_output_addref(obs_output_t *output) void obs_output_addref(obs_output_t *output)

View file

@ -42,7 +42,7 @@ struct obs_output_info {
void (*destroy)(void *data); void (*destroy)(void *data);
bool (*start)(void *data); bool (*start)(void *data);
void (*stop)(void *data); void (*stop)(void *data, uint64_t ts);
void (*raw_video)(void *data, struct video_data *frame); void (*raw_video)(void *data, struct video_data *frame);
void (*raw_audio)(void *data, struct audio_data *frames); void (*raw_audio)(void *data, struct audio_data *frames);

View file

@ -62,7 +62,7 @@ struct list_data {
}; };
struct editable_list_data { struct editable_list_data {
bool allow_files; enum obs_editable_list_type type;
char *filter; char *filter;
char *default_path; char *default_path;
}; };
@ -145,6 +145,7 @@ struct obs_properties;
struct obs_property { struct obs_property {
const char *name; const char *name;
const char *desc; const char *desc;
const char *long_desc;
enum obs_property_type type; enum obs_property_type type;
bool visible; bool visible;
bool enabled; bool enabled;
@ -503,7 +504,7 @@ obs_property_t *obs_properties_add_font(obs_properties_t *props,
obs_property_t *obs_properties_add_editable_list(obs_properties_t *props, obs_property_t *obs_properties_add_editable_list(obs_properties_t *props,
const char *name, const char *desc, const char *name, const char *desc,
bool allow_files, const char *filter, enum obs_editable_list_type type, const char *filter,
const char *default_path) const char *default_path)
{ {
if (!props || has_prop(props, name)) return NULL; if (!props || has_prop(props, name)) return NULL;
@ -511,7 +512,7 @@ obs_property_t *obs_properties_add_editable_list(obs_properties_t *props,
OBS_PROPERTY_EDITABLE_LIST); OBS_PROPERTY_EDITABLE_LIST);
struct editable_list_data *data = get_property_data(p); struct editable_list_data *data = get_property_data(p);
data->allow_files = allow_files; data->type = type;
data->filter = bstrdup(filter); data->filter = bstrdup(filter);
data->default_path = bstrdup(default_path); data->default_path = bstrdup(default_path);
return p; return p;
@ -584,7 +585,8 @@ bool obs_property_button_clicked(obs_property_t *p, void *obj)
struct button_data *data = get_type_data(p, struct button_data *data = get_type_data(p,
OBS_PROPERTY_BUTTON); OBS_PROPERTY_BUTTON);
if (data && data->callback) if (data && data->callback)
return data->callback(p->parent, p, context->data); return data->callback(p->parent, p,
(context ? context->data : NULL));
} }
return false; return false;
@ -605,6 +607,11 @@ void obs_property_set_description(obs_property_t *p, const char *description)
if (p) p->desc = description; if (p) p->desc = description;
} }
void obs_property_set_long_description(obs_property_t *p, const char *long_desc)
{
if (p) p->long_desc = long_desc;
}
const char *obs_property_name(obs_property_t *p) const char *obs_property_name(obs_property_t *p)
{ {
return p ? p->name : NULL; return p ? p->name : NULL;
@ -615,6 +622,11 @@ const char *obs_property_description(obs_property_t *p)
return p ? p->desc : NULL; return p ? p->desc : NULL;
} }
const char *obs_property_long_description(obs_property_t *p)
{
return p ? p->long_desc : NULL;
}
enum obs_property_type obs_property_get_type(obs_property_t *p) enum obs_property_type obs_property_get_type(obs_property_t *p)
{ {
return p ? p->type : OBS_PROPERTY_INVALID; return p ? p->type : OBS_PROPERTY_INVALID;
@ -863,11 +875,11 @@ double obs_property_list_item_float(obs_property_t *p, size_t idx)
data->items.array[idx].d : 0.0; data->items.array[idx].d : 0.0;
} }
bool obs_property_editable_list_allow_files(obs_property_t *p) enum obs_editable_list_type obs_property_editable_list_type(obs_property_t *p)
{ {
struct editable_list_data *data = get_type_data(p, struct editable_list_data *data = get_type_data(p,
OBS_PROPERTY_EDITABLE_LIST); OBS_PROPERTY_EDITABLE_LIST);
return data ? data->allow_files : false; return data ? data->type : OBS_EDITABLE_LIST_TYPE_STRINGS;
} }
const char *obs_property_editable_list_filter(obs_property_t *p) const char *obs_property_editable_list_filter(obs_property_t *p)

View file

@ -70,6 +70,12 @@ enum obs_combo_type {
OBS_COMBO_TYPE_LIST, OBS_COMBO_TYPE_LIST,
}; };
enum obs_editable_list_type {
OBS_EDITABLE_LIST_TYPE_STRINGS,
OBS_EDITABLE_LIST_TYPE_FILES,
OBS_EDITABLE_LIST_TYPE_FILES_AND_URLS
};
enum obs_path_type { enum obs_path_type {
OBS_PATH_FILE, OBS_PATH_FILE,
OBS_PATH_FILE_SAVE, OBS_PATH_FILE_SAVE,
@ -202,7 +208,7 @@ EXPORT obs_property_t *obs_properties_add_font(obs_properties_t *props,
EXPORT obs_property_t *obs_properties_add_editable_list(obs_properties_t *props, EXPORT obs_property_t *obs_properties_add_editable_list(obs_properties_t *props,
const char *name, const char *description, const char *name, const char *description,
bool allow_files, const char *filter, enum obs_editable_list_type type, const char *filter,
const char *default_path); const char *default_path);
EXPORT obs_property_t *obs_properties_add_frame_rate(obs_properties_t *props, EXPORT obs_property_t *obs_properties_add_frame_rate(obs_properties_t *props,
@ -229,9 +235,12 @@ EXPORT void obs_property_set_enabled(obs_property_t *p, bool enabled);
EXPORT void obs_property_set_description(obs_property_t *p, EXPORT void obs_property_set_description(obs_property_t *p,
const char *description); const char *description);
EXPORT void obs_property_set_long_description(obs_property_t *p,
const char *long_description);
EXPORT const char * obs_property_name(obs_property_t *p); EXPORT const char * obs_property_name(obs_property_t *p);
EXPORT const char * obs_property_description(obs_property_t *p); EXPORT const char * obs_property_description(obs_property_t *p);
EXPORT const char * obs_property_long_description(obs_property_t *p);
EXPORT enum obs_property_type obs_property_get_type(obs_property_t *p); EXPORT enum obs_property_type obs_property_get_type(obs_property_t *p);
EXPORT bool obs_property_enabled(obs_property_t *p); EXPORT bool obs_property_enabled(obs_property_t *p);
EXPORT bool obs_property_visible(obs_property_t *p); EXPORT bool obs_property_visible(obs_property_t *p);
@ -281,7 +290,7 @@ EXPORT const char *obs_property_list_item_string(obs_property_t *p, size_t idx);
EXPORT long long obs_property_list_item_int(obs_property_t *p, size_t idx); EXPORT long long obs_property_list_item_int(obs_property_t *p, size_t idx);
EXPORT double obs_property_list_item_float(obs_property_t *p, size_t idx); EXPORT double obs_property_list_item_float(obs_property_t *p, size_t idx);
EXPORT bool obs_property_editable_list_allow_files(obs_property_t *p); EXPORT enum obs_editable_list_type obs_property_editable_list_type(obs_property_t *p);
EXPORT const char *obs_property_editable_list_filter(obs_property_t *p); EXPORT const char *obs_property_editable_list_filter(obs_property_t *p);
EXPORT const char *obs_property_editable_list_default_path(obs_property_t *p); EXPORT const char *obs_property_editable_list_default_path(obs_property_t *p);

View file

@ -337,6 +337,8 @@ static void update_item_transform(struct obs_scene_item *item)
matrix4_translate3f(&item->draw_transform, &item->draw_transform, matrix4_translate3f(&item->draw_transform, &item->draw_transform,
item->pos.x, item->pos.y, 0.0f); item->pos.x, item->pos.y, 0.0f);
item->output_scale = scale;
/* ----------------------- */ /* ----------------------- */
if (item->bounds_type != OBS_BOUNDS_NONE) { if (item->bounds_type != OBS_BOUNDS_NONE) {
@ -383,15 +385,76 @@ static inline bool crop_enabled(const struct obs_sceneitem_crop *crop)
return crop->left || crop->right || crop->top || crop->bottom; return crop->left || crop->right || crop->top || crop->bottom;
} }
static inline bool scale_filter_enabled(const struct obs_scene_item *item)
{
return item->scale_filter != OBS_SCALE_DISABLE;
}
static inline bool item_is_scene(const struct obs_scene_item *item)
{
return item->source && item->source->info.type == OBS_SOURCE_TYPE_SCENE;
}
static inline bool item_texture_enabled(const struct obs_scene_item *item)
{
return crop_enabled(&item->crop) || scale_filter_enabled(item) ||
item_is_scene(item);
}
static void render_item_texture(struct obs_scene_item *item)
{
gs_texture_t *tex = gs_texrender_get_texture(item->item_render);
gs_effect_t *effect = obs->video.default_effect;
enum obs_scale_type type = item->scale_filter;
uint32_t cx = gs_texture_get_width(tex);
uint32_t cy = gs_texture_get_height(tex);
if (type != OBS_SCALE_DISABLE) {
if (type == OBS_SCALE_POINT) {
gs_eparam_t *image = gs_effect_get_param_by_name(
effect, "image");
gs_effect_set_next_sampler(image,
obs->video.point_sampler);
} else if (!close_float(item->output_scale.x, 1.0f, EPSILON) ||
!close_float(item->output_scale.y, 1.0f, EPSILON)) {
gs_eparam_t *scale_param;
if (item->output_scale.x < 0.5f ||
item->output_scale.y < 0.5f) {
effect = obs->video.bilinear_lowres_effect;
} else if (type == OBS_SCALE_BICUBIC) {
effect = obs->video.bicubic_effect;
} else if (type == OBS_SCALE_LANCZOS) {
effect = obs->video.lanczos_effect;
}
scale_param = gs_effect_get_param_by_name(effect,
"base_dimension_i");
if (scale_param) {
struct vec2 base_res_i = {
1.0f / (float)cx,
1.0f / (float)cy
};
gs_effect_set_vec2(scale_param, &base_res_i);
}
}
}
while (gs_effect_loop(effect, "Draw"))
obs_source_draw(tex, 0, 0, 0, 0, 0);
}
static inline void render_item(struct obs_scene_item *item) static inline void render_item(struct obs_scene_item *item)
{ {
if (item->crop_render) { if (item->item_render) {
uint32_t width = obs_source_get_width(item->source); uint32_t width = obs_source_get_width(item->source);
uint32_t height = obs_source_get_height(item->source); uint32_t height = obs_source_get_height(item->source);
uint32_t cx = calc_cx(item, width); uint32_t cx = calc_cx(item, width);
uint32_t cy = calc_cy(item, height); uint32_t cy = calc_cy(item, height);
if (cx && cy && gs_texrender_begin(item->crop_render, cx, cy)) { if (cx && cy && gs_texrender_begin(item->item_render, cx, cy)) {
float cx_scale = (float)width / (float)cx; float cx_scale = (float)width / (float)cx;
float cy_scale = (float)height / (float)cy; float cy_scale = (float)height / (float)cy;
struct vec4 clear_color; struct vec4 clear_color;
@ -408,17 +471,14 @@ static inline void render_item(struct obs_scene_item *item)
0.0f); 0.0f);
obs_source_video_render(item->source); obs_source_video_render(item->source);
gs_texrender_end(item->crop_render); gs_texrender_end(item->item_render);
} }
} }
gs_matrix_push(); gs_matrix_push();
gs_matrix_mul(&item->draw_transform); gs_matrix_mul(&item->draw_transform);
if (item->crop_render) { if (item->item_render) {
gs_texture_t *tex = gs_texrender_get_texture(item->crop_render); render_item_texture(item);
while (gs_effect_loop(obs->video.default_effect, "Draw"))
obs_source_draw(tex, 0, 0, 0, 0, 0);
} else { } else {
obs_source_video_render(item->source); obs_source_video_render(item->source);
} }
@ -433,8 +493,8 @@ static void scene_video_tick(void *data, float seconds)
video_lock(scene); video_lock(scene);
item = scene->first_item; item = scene->first_item;
while (item) { while (item) {
if (item->crop_render) if (item->item_render)
gs_texrender_reset(item->crop_render); gs_texrender_reset(item->item_render);
item = item->next; item = item->next;
} }
video_unlock(scene); video_unlock(scene);
@ -511,6 +571,7 @@ static void scene_load_item(struct obs_scene *scene, obs_data_t *item_data)
{ {
const char *name = obs_data_get_string(item_data, "name"); const char *name = obs_data_get_string(item_data, "name");
obs_source_t *source = obs_get_source_by_name(name); obs_source_t *source = obs_get_source_by_name(name);
const char *scale_filter_str;
struct obs_scene_item *item; struct obs_scene_item *item;
bool visible; bool visible;
@ -553,15 +614,29 @@ static void scene_load_item(struct obs_scene *scene, obs_data_t *item_data)
item->crop.right = (uint32_t)obs_data_get_int(item_data, "crop_right"); item->crop.right = (uint32_t)obs_data_get_int(item_data, "crop_right");
item->crop.bottom = (uint32_t)obs_data_get_int(item_data, "crop_bottom"); item->crop.bottom = (uint32_t)obs_data_get_int(item_data, "crop_bottom");
if (item->crop_render && !crop_enabled(&item->crop)) { scale_filter_str = obs_data_get_string(item_data, "scale_filter");
item->scale_filter = OBS_SCALE_DISABLE;
if (scale_filter_str) {
if (astrcmpi(scale_filter_str, "point") == 0)
item->scale_filter = OBS_SCALE_POINT;
else if (astrcmpi(scale_filter_str, "bilinear") == 0)
item->scale_filter = OBS_SCALE_BILINEAR;
else if (astrcmpi(scale_filter_str, "bicubic") == 0)
item->scale_filter = OBS_SCALE_BICUBIC;
else if (astrcmpi(scale_filter_str, "lanczos") == 0)
item->scale_filter = OBS_SCALE_LANCZOS;
}
if (item->item_render && !item_texture_enabled(item)) {
obs_enter_graphics(); obs_enter_graphics();
gs_texrender_destroy(item->crop_render); gs_texrender_destroy(item->item_render);
item->crop_render = NULL; item->item_render = NULL;
obs_leave_graphics(); obs_leave_graphics();
} else if (!item->crop_render && crop_enabled(&item->crop)) { } else if (!item->item_render && item_texture_enabled(item)) {
obs_enter_graphics(); obs_enter_graphics();
item->crop_render = gs_texrender_create(GS_RGBA, GS_ZS_NONE); item->item_render = gs_texrender_create(GS_RGBA, GS_ZS_NONE);
obs_leave_graphics(); obs_leave_graphics();
} }
@ -595,6 +670,7 @@ static void scene_save_item(obs_data_array_t *array,
{ {
obs_data_t *item_data = obs_data_create(); obs_data_t *item_data = obs_data_create();
const char *name = obs_source_get_name(item->source); const char *name = obs_source_get_name(item->source);
const char *scale_filter;
obs_data_set_string(item_data, "name", name); obs_data_set_string(item_data, "name", name);
obs_data_set_bool (item_data, "visible", item->user_visible); obs_data_set_bool (item_data, "visible", item->user_visible);
@ -610,6 +686,19 @@ static void scene_save_item(obs_data_array_t *array,
obs_data_set_int (item_data, "crop_right", (int)item->crop.right); obs_data_set_int (item_data, "crop_right", (int)item->crop.right);
obs_data_set_int (item_data, "crop_bottom", (int)item->crop.bottom); obs_data_set_int (item_data, "crop_bottom", (int)item->crop.bottom);
if (item->scale_filter == OBS_SCALE_POINT)
scale_filter = "point";
else if (item->scale_filter == OBS_SCALE_BILINEAR)
scale_filter = "bilinear";
else if (item->scale_filter == OBS_SCALE_BICUBIC)
scale_filter = "bicubic";
else if (item->scale_filter == OBS_SCALE_LANCZOS)
scale_filter = "lanczos";
else
scale_filter = "disable";
obs_data_set_string(item_data, "scale_filter", scale_filter);
obs_data_array_push_back(array, item_data); obs_data_array_push_back(array, item_data);
obs_data_release(item_data); obs_data_release(item_data);
} }
@ -1197,6 +1286,12 @@ obs_sceneitem_t *obs_scene_add(obs_scene_t *scene, obs_source_t *source)
item->visible = true; item->visible = true;
} }
if (item_texture_enabled(item)) {
obs_enter_graphics();
item->item_render = gs_texrender_create(GS_RGBA, GS_ZS_NONE);
obs_leave_graphics();
}
full_lock(scene); full_lock(scene);
last = scene->first_item; last = scene->first_item;
@ -1227,9 +1322,9 @@ obs_sceneitem_t *obs_scene_add(obs_scene_t *scene, obs_source_t *source)
static void obs_sceneitem_destroy(obs_sceneitem_t *item) static void obs_sceneitem_destroy(obs_sceneitem_t *item)
{ {
if (item) { if (item) {
if (item->crop_render) { if (item->item_render) {
obs_enter_graphics(); obs_enter_graphics();
gs_texrender_destroy(item->crop_render); gs_texrender_destroy(item->item_render);
obs_leave_graphics(); obs_leave_graphics();
} }
obs_hotkey_pair_unregister(item->toggle_visibility); obs_hotkey_pair_unregister(item->toggle_visibility);
@ -1305,7 +1400,7 @@ void obs_sceneitem_select(obs_sceneitem_t *item, bool select)
uint8_t stack[128]; uint8_t stack[128];
const char *command = select ? "item_select" : "item_deselect"; const char *command = select ? "item_select" : "item_deselect";
if (!item || item->selected == select) if (!item || item->selected == select || !item->parent)
return; return;
item->selected = select; item->selected = select;
@ -1695,7 +1790,7 @@ static inline bool crop_equal(const struct obs_sceneitem_crop *crop1,
void obs_sceneitem_set_crop(obs_sceneitem_t *item, void obs_sceneitem_set_crop(obs_sceneitem_t *item,
const struct obs_sceneitem_crop *crop) const struct obs_sceneitem_crop *crop)
{ {
bool now_enabled; bool item_tex_now_enabled;
if (!obs_ptr_valid(item, "obs_sceneitem_set_crop")) if (!obs_ptr_valid(item, "obs_sceneitem_set_crop"))
return; return;
@ -1704,16 +1799,17 @@ void obs_sceneitem_set_crop(obs_sceneitem_t *item,
if (crop_equal(crop, &item->crop)) if (crop_equal(crop, &item->crop))
return; return;
now_enabled = crop_enabled(crop); item_tex_now_enabled = crop_enabled(crop) ||
scale_filter_enabled(item) || item_is_scene(item);
obs_enter_graphics(); obs_enter_graphics();
if (!now_enabled) { if (!item_tex_now_enabled) {
gs_texrender_destroy(item->crop_render); gs_texrender_destroy(item->item_render);
item->crop_render = NULL; item->item_render = NULL;
} else if (!item->crop_render) { } else if (!item->item_render) {
item->crop_render = gs_texrender_create(GS_RGBA, GS_ZS_NONE); item->item_render = gs_texrender_create(GS_RGBA, GS_ZS_NONE);
} }
memcpy(&item->crop, crop, sizeof(*crop)); memcpy(&item->crop, crop, sizeof(*crop));
@ -1738,6 +1834,36 @@ void obs_sceneitem_get_crop(const obs_sceneitem_t *item,
memcpy(crop, &item->crop, sizeof(*crop)); memcpy(crop, &item->crop, sizeof(*crop));
} }
void obs_sceneitem_set_scale_filter(obs_sceneitem_t *item,
enum obs_scale_type filter)
{
if (!obs_ptr_valid(item, "obs_sceneitem_set_scale_filter"))
return;
item->scale_filter = filter;
obs_enter_graphics();
if (!item_texture_enabled(item)) {
gs_texrender_destroy(item->item_render);
item->item_render = NULL;
} else if (!item->item_render) {
item->item_render = gs_texrender_create(GS_RGBA, GS_ZS_NONE);
}
obs_leave_graphics();
update_item_transform(item);
}
enum obs_scale_type obs_sceneitem_get_scale_filter(
obs_sceneitem_t *item)
{
return obs_ptr_valid(item, "obs_sceneitem_get_scale_filter") ?
item->scale_filter : OBS_SCALE_DISABLE;
}
void obs_sceneitem_defer_update_begin(obs_sceneitem_t *item) void obs_sceneitem_defer_update_begin(obs_sceneitem_t *item)
{ {
if (!obs_ptr_valid(item, "obs_sceneitem_defer_update_begin")) if (!obs_ptr_valid(item, "obs_sceneitem_defer_update_begin"))

View file

@ -40,7 +40,7 @@ struct obs_scene_item {
bool visible; bool visible;
bool selected; bool selected;
gs_texrender_t *crop_render; gs_texrender_t *item_render;
struct obs_sceneitem_crop crop; struct obs_sceneitem_crop crop;
struct vec2 pos; struct vec2 pos;
@ -53,6 +53,9 @@ struct obs_scene_item {
uint32_t last_width; uint32_t last_width;
uint32_t last_height; uint32_t last_height;
struct vec2 output_scale;
enum obs_scale_type scale_filter;
struct matrix4 box_transform; struct matrix4 box_transform;
struct matrix4 draw_transform; struct matrix4 draw_transform;

View file

@ -66,8 +66,7 @@ static obs_service_t *obs_service_create_internal(const char *id,
&obs->data.services_mutex, &obs->data.services_mutex,
&obs->data.first_service); &obs->data.first_service);
blog(private ? LOG_DEBUG : LOG_INFO, "service '%s' (%s) created", blog(LOG_DEBUG, "service '%s' (%s) created", name, id);
name, id);
return service; return service;
} }
@ -92,8 +91,7 @@ static void actually_destroy_service(struct obs_service *service)
if (service->output) if (service->output)
service->output->service = NULL; service->output->service = NULL;
blog(service->context.private ? LOG_DEBUG : LOG_INFO, blog(LOG_DEBUG, "service '%s' destroyed", service->context.name);
"service '%s' destroyed", service->context.name);
obs_context_data_free(&service->context); obs_context_data_free(&service->context);
if (service->owns_info_id) if (service->owns_info_id)

View file

@ -99,14 +99,26 @@ void obs_transition_clear(obs_source_t *transition)
void add_alignment(struct vec2 *v, uint32_t align, int cx, int cy); void add_alignment(struct vec2 *v, uint32_t align, int cx, int cy);
static inline uint32_t get_cx(obs_source_t *tr)
{
return tr->transition_cx ?
tr->transition_cx : tr->transition_actual_cx;
}
static inline uint32_t get_cy(obs_source_t *tr)
{
return tr->transition_cy ?
tr->transition_cy : tr->transition_actual_cy;
}
static void recalculate_transition_matrix(obs_source_t *tr, size_t idx) static void recalculate_transition_matrix(obs_source_t *tr, size_t idx)
{ {
obs_source_t *child; obs_source_t *child;
struct matrix4 mat; struct matrix4 mat;
struct vec2 pos; struct vec2 pos;
struct vec2 scale; struct vec2 scale;
float tr_cx = (float)tr->transition_actual_cx; float tr_cx = (float)get_cx(tr);
float tr_cy = (float)tr->transition_actual_cy; float tr_cy = (float)get_cy(tr);
float source_cx; float source_cx;
float source_cy; float source_cy;
float tr_aspect = tr_cx / tr_cy; float tr_aspect = tr_cx / tr_cy;
@ -368,6 +380,9 @@ bool obs_transition_start(obs_source_t *transition,
obs_source_dosignal(transition, "source_transition_start", obs_source_dosignal(transition, "source_transition_start",
"transition_start"); "transition_start");
recalculate_transition_size(transition);
recalculate_transition_matrices(transition);
/* TODO: Add mode */ /* TODO: Add mode */
UNUSED_PARAMETER(mode); UNUSED_PARAMETER(mode);
return true; return true;
@ -596,8 +611,8 @@ void obs_transition_enum_sources(obs_source_t *transition,
static inline void render_child(obs_source_t *transition, static inline void render_child(obs_source_t *transition,
obs_source_t *child, size_t idx) obs_source_t *child, size_t idx)
{ {
uint32_t cx = transition->transition_actual_cx; uint32_t cx = get_cx(transition);
uint32_t cy = transition->transition_actual_cy; uint32_t cy = get_cy(transition);
struct vec4 blank; struct vec4 blank;
if (!child) if (!child)
return; return;
@ -605,6 +620,7 @@ static inline void render_child(obs_source_t *transition,
if (gs_texrender_begin(transition->transition_texrender[idx], cx, cy)) { if (gs_texrender_begin(transition->transition_texrender[idx], cx, cy)) {
vec4_zero(&blank); vec4_zero(&blank);
gs_clear(GS_CLEAR_COLOR, &blank, 0.0f, 0); gs_clear(GS_CLEAR_COLOR, &blank, 0.0f, 0);
gs_ortho(0.0f, (float)cx, 0.0f, (float)cy, -100.0f, 100.0f);
gs_matrix_push(); gs_matrix_push();
gs_matrix_mul(&transition->transition_matrices[idx]); gs_matrix_mul(&transition->transition_matrices[idx]);
@ -633,6 +649,7 @@ void obs_transition_video_render(obs_source_t *transition,
obs_transition_video_render_callback_t callback) obs_transition_video_render_callback_t callback)
{ {
struct transition_state state; struct transition_state state;
struct matrix4 matrices[2];
bool locked = false; bool locked = false;
bool stopped = false; bool stopped = false;
bool video_stopped = false; bool video_stopped = false;
@ -655,6 +672,8 @@ void obs_transition_video_render(obs_source_t *transition,
} }
} }
copy_transition_state(transition, &state); copy_transition_state(transition, &state);
matrices[0] = transition->transition_matrices[0];
matrices[1] = transition->transition_matrices[1];
unlock_transition(transition); unlock_transition(transition);
@ -663,6 +682,8 @@ void obs_transition_video_render(obs_source_t *transition,
if (state.transitioning_video && locked && callback) { if (state.transitioning_video && locked && callback) {
gs_texture_t *tex[2]; gs_texture_t *tex[2];
uint32_t cx;
uint32_t cy;
for (size_t i = 0; i < 2; i++) { for (size_t i = 0; i < 2; i++) {
if (state.s[i]) { if (state.s[i]) {
@ -675,17 +696,26 @@ void obs_transition_video_render(obs_source_t *transition,
} }
} }
cx = get_cx(transition);
cy = get_cy(transition);
if (cx && cy)
callback(transition->context.data, tex[0], tex[1], t, callback(transition->context.data, tex[0], tex[1], t,
transition->transition_actual_cx, cx, cy);
transition->transition_actual_cy);
} else if (state.transitioning_audio) { } else if (state.transitioning_audio) {
if (state.s[1]) if (state.s[1]) {
gs_matrix_push();
gs_matrix_mul(&matrices[1]);
obs_source_video_render(state.s[1]); obs_source_video_render(state.s[1]);
gs_matrix_pop();
}
} else { } else {
if (state.s[0]) if (state.s[0]) {
gs_matrix_push();
gs_matrix_mul(&matrices[0]);
obs_source_video_render(state.s[0]); obs_source_video_render(state.s[0]);
gs_matrix_pop();
}
} }
if (locked) if (locked)

View file

@ -338,7 +338,7 @@ static obs_source_t *obs_source_create_internal(const char *id,
if (!source->context.data) if (!source->context.data)
blog(LOG_ERROR, "Failed to create source '%s'!", name); blog(LOG_ERROR, "Failed to create source '%s'!", name);
blog(private ? LOG_DEBUG : LOG_INFO, "%ssource '%s' (%s) created", blog(LOG_DEBUG, "%ssource '%s' (%s) created",
private ? "private " : "", name, id); private ? "private " : "", name, id);
obs_source_dosignal(source, "source_create", NULL); obs_source_dosignal(source, "source_create", NULL);
@ -405,6 +405,14 @@ obs_source_t *obs_source_duplicate(obs_source_t *source,
return source; return source;
} }
if (source->info.type == OBS_SOURCE_TYPE_SCENE) {
obs_scene_t *scene = obs_scene_from_source(source);
obs_scene_t *new_scene = obs_scene_duplicate(scene, new_name,
create_private ? OBS_SCENE_DUP_PRIVATE_COPY :
OBS_SCENE_DUP_COPY);
return obs_scene_get_source(new_scene);
}
settings = obs_data_create(); settings = obs_data_create();
obs_data_apply(settings, source->context.settings); obs_data_apply(settings, source->context.settings);
@ -482,8 +490,7 @@ void obs_source_destroy(struct obs_source *source)
obs_context_data_remove(&source->context); obs_context_data_remove(&source->context);
blog(source->context.private ? LOG_DEBUG : LOG_INFO, blog(LOG_DEBUG, "%ssource '%s' destroyed",
"%ssource '%s' destroyed",
source->context.private ? "private " : "", source->context.private ? "private " : "",
source->context.name); source->context.name);
@ -882,15 +889,12 @@ void obs_source_activate(obs_source_t *source, enum view_type type)
if (!obs_source_valid(source, "obs_source_activate")) if (!obs_source_valid(source, "obs_source_activate"))
return; return;
if (os_atomic_inc_long(&source->show_refs) == 1) { os_atomic_inc_long(&source->show_refs);
obs_source_enum_active_tree(source, show_tree, NULL); obs_source_enum_active_tree(source, show_tree, NULL);
}
if (type == MAIN_VIEW) { if (type == MAIN_VIEW) {
if (os_atomic_inc_long(&source->activate_refs) == 1) { os_atomic_inc_long(&source->activate_refs);
obs_source_enum_active_tree(source, activate_tree, obs_source_enum_active_tree(source, activate_tree, NULL);
NULL);
}
} }
} }
@ -899,12 +903,14 @@ void obs_source_deactivate(obs_source_t *source, enum view_type type)
if (!obs_source_valid(source, "obs_source_deactivate")) if (!obs_source_valid(source, "obs_source_deactivate"))
return; return;
if (os_atomic_dec_long(&source->show_refs) == 0) { if (os_atomic_load_long(&source->show_refs) > 0) {
os_atomic_dec_long(&source->show_refs);
obs_source_enum_active_tree(source, hide_tree, NULL); obs_source_enum_active_tree(source, hide_tree, NULL);
} }
if (type == MAIN_VIEW) { if (type == MAIN_VIEW) {
if (os_atomic_dec_long(&source->activate_refs) == 0) { if (os_atomic_load_long(&source->activate_refs) > 0) {
os_atomic_dec_long(&source->activate_refs);
obs_source_enum_active_tree(source, deactivate_tree, obs_source_enum_active_tree(source, deactivate_tree,
NULL); NULL);
} }
@ -1268,7 +1274,7 @@ static inline bool set_planar420_sizes(struct obs_source *source,
size += size/2; size += size/2;
source->async_convert_width = frame->width; source->async_convert_width = frame->width;
source->async_convert_height = (size / frame->width + 1) & 0xFFFFFFFE; source->async_convert_height = size / frame->width;
source->async_texture_format = GS_R8; source->async_texture_format = GS_R8;
source->async_plane_offset[0] = (int)(frame->data[1] - frame->data[0]); source->async_plane_offset[0] = (int)(frame->data[1] - frame->data[0]);
source->async_plane_offset[1] = (int)(frame->data[2] - frame->data[0]); source->async_plane_offset[1] = (int)(frame->data[2] - frame->data[0]);
@ -1282,7 +1288,7 @@ static inline bool set_nv12_sizes(struct obs_source *source,
size += size/2; size += size/2;
source->async_convert_width = frame->width; source->async_convert_width = frame->width;
source->async_convert_height = (size / frame->width + 1) & 0xFFFFFFFE; source->async_convert_height = size / frame->width;
source->async_texture_format = GS_R8; source->async_texture_format = GS_R8;
source->async_plane_offset[0] = (int)(frame->data[1] - frame->data[0]); source->async_plane_offset[0] = (int)(frame->data[1] - frame->data[0]);
return true; return true;
@ -1857,8 +1863,7 @@ void obs_source_filter_add(obs_source_t *source, obs_source_t *filter)
signal_handler_signal(source->context.signals, "filter_add", &cd); signal_handler_signal(source->context.signals, "filter_add", &cd);
if (source && filter) if (source && filter)
blog(source->context.private ? LOG_DEBUG : LOG_INFO, blog(LOG_DEBUG, "- filter '%s' (%s) added to source '%s'",
"- filter '%s' (%s) added to source '%s'",
filter->context.name, filter->info.id, filter->context.name, filter->info.id,
source->context.name); source->context.name);
} }
@ -1894,8 +1899,7 @@ static bool obs_source_filter_remove_refless(obs_source_t *source,
signal_handler_signal(source->context.signals, "filter_remove", &cd); signal_handler_signal(source->context.signals, "filter_remove", &cd);
if (source && filter) if (source && filter)
blog(source->context.private ? LOG_DEBUG : LOG_INFO, blog(LOG_DEBUG, "- filter '%s' (%s) removed from source '%s'",
"- filter '%s' (%s) removed from source '%s'",
filter->context.name, filter->info.id, filter->context.name, filter->info.id,
source->context.name); source->context.name);
@ -2599,7 +2603,8 @@ void obs_source_set_name(obs_source_t *source, const char *name)
if (!obs_source_valid(source, "obs_source_set_name")) if (!obs_source_valid(source, "obs_source_set_name"))
return; return;
if (!name || !*name || strcmp(name, source->context.name) != 0) { if (!name || !*name || !source->context.name ||
strcmp(name, source->context.name) != 0) {
struct calldata data; struct calldata data;
char *prev_name = bstrdup(source->context.name); char *prev_name = bstrdup(source->context.name);
obs_context_data_setname(&source->context, name); obs_context_data_setname(&source->context, name);
@ -2677,7 +2682,7 @@ bool obs_source_process_filter_begin(obs_source_t *filter,
enum obs_allow_direct_render allow_direct) enum obs_allow_direct_render allow_direct)
{ {
obs_source_t *target, *parent; obs_source_t *target, *parent;
uint32_t target_flags, parent_flags; uint32_t parent_flags;
int cx, cy; int cx, cy;
if (!obs_ptr_valid(filter, "obs_source_process_filter_begin")) if (!obs_ptr_valid(filter, "obs_source_process_filter_begin"))
@ -2697,7 +2702,6 @@ bool obs_source_process_filter_begin(obs_source_t *filter,
return false; return false;
} }
target_flags = target->info.output_flags;
parent_flags = parent->info.output_flags; parent_flags = parent->info.output_flags;
cx = get_base_width(target); cx = get_base_width(target);
cy = get_base_height(target); cy = get_base_height(target);
@ -2750,7 +2754,7 @@ void obs_source_process_filter_tech_end(obs_source_t *filter, gs_effect_t *effec
{ {
obs_source_t *target, *parent; obs_source_t *target, *parent;
gs_texture_t *texture; gs_texture_t *texture;
uint32_t target_flags, parent_flags; uint32_t parent_flags;
if (!filter) return; if (!filter) return;
@ -2760,7 +2764,6 @@ void obs_source_process_filter_tech_end(obs_source_t *filter, gs_effect_t *effec
if (!target || !parent) if (!target || !parent)
return; return;
target_flags = target->info.output_flags;
parent_flags = parent->info.output_flags; parent_flags = parent->info.output_flags;
const char *tech = tech_name ? tech_name : "Draw"; const char *tech = tech_name ? tech_name : "Draw";
@ -2779,14 +2782,13 @@ void obs_source_process_filter_end(obs_source_t *filter, gs_effect_t *effect,
{ {
obs_source_t *target, *parent; obs_source_t *target, *parent;
gs_texture_t *texture; gs_texture_t *texture;
uint32_t target_flags, parent_flags; uint32_t parent_flags;
if (!obs_ptr_valid(filter, "obs_source_process_filter_end")) if (!obs_ptr_valid(filter, "obs_source_process_filter_end"))
return; return;
target = obs_filter_get_target(filter); target = obs_filter_get_target(filter);
parent = obs_filter_get_parent(filter); parent = obs_filter_get_parent(filter);
target_flags = target->info.output_flags;
parent_flags = parent->info.output_flags; parent_flags = parent->info.output_flags;
if (can_bypass(target, parent, parent_flags, filter->allow_direct)) { if (can_bypass(target, parent, parent_flags, filter->allow_direct)) {
@ -2910,7 +2912,11 @@ static void enum_source_tree_callback(obs_source_t *parent, obs_source_t *child,
void *param) void *param)
{ {
struct source_enum_data *data = param; struct source_enum_data *data = param;
bool is_transition = child->info.type == OBS_SOURCE_TYPE_TRANSITION;
if (is_transition)
obs_transition_enum_sources(child,
enum_source_tree_callback, param);
if (child->info.enum_active_sources) { if (child->info.enum_active_sources) {
if (child->context.data) { if (child->context.data) {
child->info.enum_active_sources(child->context.data, child->info.enum_active_sources(child->context.data,

View file

@ -126,7 +126,8 @@ static inline gs_effect_t *get_scale_effect_internal(
switch (video->scale_type) { switch (video->scale_type) {
case OBS_SCALE_BILINEAR: return video->default_effect; case OBS_SCALE_BILINEAR: return video->default_effect;
case OBS_SCALE_LANCZOS: return video->lanczos_effect; case OBS_SCALE_LANCZOS: return video->lanczos_effect;
case OBS_SCALE_BICUBIC:; case OBS_SCALE_BICUBIC:
default:;
} }
return video->bicubic_effect; return video->bicubic_effect;

View file

@ -163,7 +163,7 @@ static void log_available_memory(void)
#ifdef _WIN64 #ifdef _WIN64
const char *note = ""; const char *note = "";
#else #else
const char *note = " (NOTE: 4 gigs max is normal for 32bit programs)"; const char *note = " (NOTE: 2 or 4 gigs max is normal for 32bit programs)";
#endif #endif
blog(LOG_INFO, "Physical Memory: %luMB Total, %luMB Free%s", blog(LOG_INFO, "Physical Memory: %luMB Total, %luMB Free%s",
@ -181,6 +181,25 @@ static void log_windows_version(void)
ver.major, ver.minor, ver.build, ver.revis); ver.major, ver.minor, ver.build, ver.revis);
} }
static void log_admin_status(void)
{
SID_IDENTIFIER_AUTHORITY auth = SECURITY_NT_AUTHORITY;
PSID admin_group;
BOOL success;
success = AllocateAndInitializeSid(&auth, 2,
SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0, &admin_group);
if (success) {
if (!CheckTokenMembership(NULL, admin_group, &success))
success = false;
FreeSid(admin_group);
}
blog(LOG_INFO, "Running as administrator: %s",
success ? "true" : "false");
}
typedef HRESULT (WINAPI *dwm_is_composition_enabled_t)(BOOL*); typedef HRESULT (WINAPI *dwm_is_composition_enabled_t)(BOOL*);
static void log_aero(void) static void log_aero(void)
@ -219,6 +238,7 @@ void log_system_info(void)
log_processor_cores(); log_processor_cores();
log_available_memory(); log_available_memory();
log_windows_version(); log_windows_version();
log_admin_status();
log_aero(); log_aero();
} }

View file

@ -231,6 +231,7 @@ static int obs_init_graphics(struct obs_video_info *ovi)
struct obs_core_video *video = &obs->video; struct obs_core_video *video = &obs->video;
uint8_t transparent_tex_data[2*2*4] = {0}; uint8_t transparent_tex_data[2*2*4] = {0};
const uint8_t *transparent_tex = transparent_tex_data; const uint8_t *transparent_tex = transparent_tex_data;
struct gs_sampler_info point_sampler = {0};
bool success = true; bool success = true;
int errorcode; int errorcode;
@ -296,6 +297,8 @@ static int obs_init_graphics(struct obs_video_info *ovi)
NULL); NULL);
bfree(filename); bfree(filename);
video->point_sampler = gs_samplerstate_create(&point_sampler);
obs->video.transparent_texture = gs_texture_create(2, 2, GS_RGBA, 1, obs->video.transparent_texture = gs_texture_create(2, 2, GS_RGBA, 1,
&transparent_tex, 0); &transparent_tex, 0);
@ -315,6 +318,8 @@ static int obs_init_graphics(struct obs_video_info *ovi)
success = false; success = false;
if (!video->transparent_texture) if (!video->transparent_texture)
success = false; success = false;
if (!video->point_sampler)
success = false;
gs_leave_context(); gs_leave_context();
return success ? OBS_VIDEO_SUCCESS : OBS_VIDEO_FAIL; return success ? OBS_VIDEO_SUCCESS : OBS_VIDEO_FAIL;
@ -459,6 +464,8 @@ static void obs_free_graphics(void)
gs_texture_destroy(video->transparent_texture); gs_texture_destroy(video->transparent_texture);
gs_samplerstate_destroy(video->point_sampler);
gs_effect_destroy(video->default_effect); gs_effect_destroy(video->default_effect);
gs_effect_destroy(video->default_rect_effect); gs_effect_destroy(video->default_rect_effect);
gs_effect_destroy(video->opaque_effect); gs_effect_destroy(video->opaque_effect);

View file

@ -112,6 +112,8 @@ enum obs_allow_direct_render {
}; };
enum obs_scale_type { enum obs_scale_type {
OBS_SCALE_DISABLE,
OBS_SCALE_POINT,
OBS_SCALE_BICUBIC, OBS_SCALE_BICUBIC,
OBS_SCALE_BILINEAR, OBS_SCALE_BILINEAR,
OBS_SCALE_LANCZOS OBS_SCALE_LANCZOS
@ -338,6 +340,9 @@ EXPORT int obs_open_module(obs_module_t **module, const char *path,
*/ */
EXPORT bool obs_init_module(obs_module_t *module); EXPORT bool obs_init_module(obs_module_t *module);
/** Logs loaded modules */
EXPORT void obs_log_loaded_modules(void);
/** Returns the module file name */ /** Returns the module file name */
EXPORT const char *obs_get_module_file_name(obs_module_t *module); EXPORT const char *obs_get_module_file_name(obs_module_t *module);
@ -1253,6 +1258,11 @@ EXPORT void obs_sceneitem_set_crop(obs_sceneitem_t *item,
EXPORT void obs_sceneitem_get_crop(const obs_sceneitem_t *item, EXPORT void obs_sceneitem_get_crop(const obs_sceneitem_t *item,
struct obs_sceneitem_crop *crop); struct obs_sceneitem_crop *crop);
EXPORT void obs_sceneitem_set_scale_filter(obs_sceneitem_t *item,
enum obs_scale_type filter);
EXPORT enum obs_scale_type obs_sceneitem_get_scale_filter(
obs_sceneitem_t *item);
EXPORT void obs_sceneitem_defer_update_begin(obs_sceneitem_t *item); EXPORT void obs_sceneitem_defer_update_begin(obs_sceneitem_t *item);
EXPORT void obs_sceneitem_defer_update_end(obs_sceneitem_t *item); EXPORT void obs_sceneitem_defer_update_end(obs_sceneitem_t *item);

View file

@ -264,6 +264,15 @@ static inline int cf_next_name(struct cf_parser *p, char **dst,
return cf_get_name(p, dst, name, goto_token); return cf_get_name(p, dst, name, goto_token);
} }
static inline int cf_next_token_copy(struct cf_parser *p, char **dst)
{
if (!cf_next_valid_token(p))
return PARSE_EOF;
cf_copy_token(p, dst);
return PARSE_SUCCESS;
}
static inline int cf_get_name_ref(struct cf_parser *p, struct strref *dst, static inline int cf_get_name_ref(struct cf_parser *p, struct strref *dst,
const char *name, const char *goto_token) const char *name, const char *goto_token)
{ {

View file

@ -237,9 +237,11 @@ static inline void dstr_copy_dstr(struct dstr *dst, const struct dstr *src)
if (dst->array) if (dst->array)
dstr_free(dst); dstr_free(dst);
if (src->len) {
dstr_ensure_capacity(dst, src->len + 1); dstr_ensure_capacity(dst, src->len + 1);
memcpy(dst->array, src->array, src->len + 1); memcpy(dst->array, src->array, src->len + 1);
dst->len = src->len; dst->len = src->len;
}
} }
static inline void dstr_reserve(struct dstr *dst, const size_t capacity) static inline void dstr_reserve(struct dstr *dst, const size_t capacity)

View file

@ -69,11 +69,12 @@ uint64_t os_gettime_ns(void)
return f(); return f();
} }
/* gets the location ~/Library/Application Support/[name] */ /* gets the location [domain mask]/Library/Application Support/[name] */
int os_get_config_path(char *dst, size_t size, const char *name) static int os_get_path_internal(char *dst, size_t size, const char *name,
NSSearchPathDomainMask domainMask)
{ {
NSArray *paths = NSSearchPathForDirectoriesInDomains( NSArray *paths = NSSearchPathForDirectoriesInDomains(
NSApplicationSupportDirectory, NSUserDomainMask, YES); NSApplicationSupportDirectory, domainMask, YES);
if([paths count] == 0) if([paths count] == 0)
bcrash("Could not get home directory (platform-cocoa)"); bcrash("Could not get home directory (platform-cocoa)");
@ -87,10 +88,11 @@ int os_get_config_path(char *dst, size_t size, const char *name)
return snprintf(dst, size, "%s/%s", base_path, name); return snprintf(dst, size, "%s/%s", base_path, name);
} }
char *os_get_config_path_ptr(const char *name) static char *os_get_path_ptr_internal(const char *name,
NSSearchPathDomainMask domainMask)
{ {
NSArray *paths = NSSearchPathForDirectoriesInDomains( NSArray *paths = NSSearchPathForDirectoriesInDomains(
NSApplicationSupportDirectory, NSUserDomainMask, YES); NSApplicationSupportDirectory, domainMask, YES);
if([paths count] == 0) if([paths count] == 0)
bcrash("Could not get home directory (platform-cocoa)"); bcrash("Could not get home directory (platform-cocoa)");
@ -113,6 +115,26 @@ char *os_get_config_path_ptr(const char *name)
return path.array; return path.array;
} }
int os_get_config_path(char *dst, size_t size, const char *name)
{
return os_get_path_internal(dst, size, name, NSUserDomainMask);
}
char *os_get_config_path_ptr(const char *name)
{
return os_get_path_ptr_internal(name, NSUserDomainMask);
}
int os_get_program_data_path(char *dst, size_t size, const char *name)
{
return os_get_path_internal(dst, size, name, NSLocalDomainMask);
}
char *os_get_program_data_path_ptr(const char *name)
{
return os_get_path_ptr_internal(name, NSLocalDomainMask);
}
struct os_cpu_usage_info { struct os_cpu_usage_info {
int64_t last_cpu_time; int64_t last_cpu_time;
int64_t last_sys_time; int64_t last_sys_time;

View file

@ -49,7 +49,11 @@ void *os_dlopen(const char *path)
return NULL; return NULL;
dstr_init_copy(&dylib_name, path); dstr_init_copy(&dylib_name, path);
#ifdef __APPLE__
if (!dstr_find(&dylib_name, ".so") && !dstr_find(&dylib_name, ".dylib"))
#else
if (!dstr_find(&dylib_name, ".so")) if (!dstr_find(&dylib_name, ".so"))
#endif
dstr_cat(&dylib_name, ".so"); dstr_cat(&dylib_name, ".so");
void *res = dlopen(dylib_name.array, RTLD_LAZY); void *res = dlopen(dylib_name.array, RTLD_LAZY);
@ -68,6 +72,7 @@ void *os_dlsym(void *module, const char *func)
void os_dlclose(void *module) void os_dlclose(void *module)
{ {
if (module)
dlclose(module); dlclose(module);
} }
@ -236,6 +241,20 @@ char *os_get_config_path_ptr(const char *name)
#endif #endif
} }
int os_get_program_data_path(char *dst, size_t size, const char *name)
{
return snprintf(dst, size, "/usr/local/share/%s", !!name ? name : "");
}
char *os_get_program_data_path_ptr(const char *name)
{
size_t len = snprintf(NULL, 0, "/usr/local/share/%s", !!name ? name : "");
char *str = bmalloc(len + 1);
snprintf(str, len + 1, "/usr/local/share/%s", !!name ? name : "");
str[len] = 0;
return str;
}
#endif #endif
bool os_file_exists(const char *path) bool os_file_exists(const char *path)

View file

@ -208,12 +208,13 @@ uint64_t os_gettime_ns(void)
return (uint64_t)time_val; return (uint64_t)time_val;
} }
/* returns %appdata%\[name] on windows */ /* returns [folder]\[name] on windows */
int os_get_config_path(char *dst, size_t size, const char *name) static int os_get_path_internal(char *dst, size_t size, const char *name,
int folder)
{ {
wchar_t path_utf16[MAX_PATH]; wchar_t path_utf16[MAX_PATH];
SHGetFolderPathW(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, SHGetFolderPathW(NULL, folder, NULL, SHGFP_TYPE_CURRENT,
path_utf16); path_utf16);
if (os_wcs_to_utf8(path_utf16, 0, dst, size) != 0) { if (os_wcs_to_utf8(path_utf16, 0, dst, size) != 0) {
@ -231,13 +232,13 @@ int os_get_config_path(char *dst, size_t size, const char *name)
return -1; return -1;
} }
char *os_get_config_path_ptr(const char *name) static char *os_get_path_ptr_internal(const char *name, int folder)
{ {
char *ptr; char *ptr;
wchar_t path_utf16[MAX_PATH]; wchar_t path_utf16[MAX_PATH];
struct dstr path; struct dstr path;
SHGetFolderPathW(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, SHGetFolderPathW(NULL, folder, NULL, SHGFP_TYPE_CURRENT,
path_utf16); path_utf16);
os_wcs_to_utf8_ptr(path_utf16, 0, &ptr); os_wcs_to_utf8_ptr(path_utf16, 0, &ptr);
@ -247,6 +248,26 @@ char *os_get_config_path_ptr(const char *name)
return path.array; return path.array;
} }
int os_get_config_path(char *dst, size_t size, const char *name)
{
return os_get_path_internal(dst, size, name, CSIDL_APPDATA);
}
char *os_get_config_path_ptr(const char *name)
{
return os_get_path_ptr_internal(name, CSIDL_APPDATA);
}
int os_get_program_data_path(char *dst, size_t size, const char *name)
{
return os_get_path_internal(dst, size, name, CSIDL_COMMON_APPDATA);
}
char *os_get_program_data_path_ptr(const char *name)
{
return os_get_path_ptr_internal(name, CSIDL_COMMON_APPDATA);
}
bool os_file_exists(const char *path) bool os_file_exists(const char *path)
{ {
WIN32_FIND_DATAW wfd; WIN32_FIND_DATAW wfd;

View file

@ -633,3 +633,26 @@ int os_mkdirs(const char *dir)
dstr_free(&dir_str); dstr_free(&dir_str);
return ret; return ret;
} }
const char *os_get_path_extension(const char *path)
{
struct dstr temp;
size_t pos = 0;
char *period;
char *slash;
dstr_init_copy(&temp, path);
dstr_replace(&temp, "\\", "/");
slash = strrchr(temp.array, '/');
period = strrchr(temp.array, '.');
if (period)
pos = (size_t)(period - temp.array);
dstr_free(&temp);
if (!period || slash > period)
return NULL;
return path + pos;
}

View file

@ -108,11 +108,16 @@ EXPORT uint64_t os_gettime_ns(void);
EXPORT int os_get_config_path(char *dst, size_t size, const char *name); EXPORT int os_get_config_path(char *dst, size_t size, const char *name);
EXPORT char *os_get_config_path_ptr(const char *name); EXPORT char *os_get_config_path_ptr(const char *name);
EXPORT int os_get_program_data_path(char *dst, size_t size, const char *name);
EXPORT char *os_get_program_data_path_ptr(const char *name);
EXPORT bool os_file_exists(const char *path); EXPORT bool os_file_exists(const char *path);
EXPORT size_t os_get_abs_path(const char *path, char *abspath, size_t size); EXPORT size_t os_get_abs_path(const char *path, char *abspath, size_t size);
EXPORT char *os_get_abs_path_ptr(const char *path); EXPORT char *os_get_abs_path_ptr(const char *path);
EXPORT const char *os_get_path_extension(const char *path);
struct os_dir; struct os_dir;
typedef struct os_dir os_dir_t; typedef struct os_dir os_dir_t;

View file

@ -228,7 +228,7 @@ install_obs_core(obs)
install_obs_data(obs data obs-studio) install_obs_data(obs data obs-studio)
if (UNIX AND UNIX_STRUCTURE AND NOT APPLE) if (UNIX AND UNIX_STRUCTURE AND NOT APPLE)
install(FILES dist/obs.desktop DESTINATION share/applications) install(FILES dist/obs.desktop DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications)
install(FILES forms/images/obs.png install(FILES forms/images/obs.png
DESTINATION share/icons/hicolor/256x256/apps) DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/icons/hicolor/256x256/apps)
endif() endif()

View file

@ -189,7 +189,7 @@ static void PopulateBitrateMap()
<< " kbit/s: '" << EncoderName(entry.second) << "' (" << " kbit/s: '" << EncoderName(entry.second) << "' ("
<< entry.second << ')'; << entry.second << ')';
blog(LOG_INFO, "AAC encoder bitrate mapping:%s", blog(LOG_DEBUG, "AAC encoder bitrate mapping:%s",
ss.str().c_str()); ss.str().c_str());
}); });
} }

View file

@ -117,3 +117,6 @@ Name=தமிழ்
[lt-LT] [lt-LT]
Name=Lietuvių kalba Name=Lietuvių kalba
[et-EE]
Name=eesti keel

View file

@ -1,6 +1,6 @@
Language="العربية" Language="العربية"
Region="جامعة الدول العربية" Region="الوطن العربي"
OK="موافق" OK="موافق"
Apply="تطبيق" Apply="تطبيق"
@ -91,7 +91,9 @@ Output.ConnectFail.Error="حدث خطأ غير متوقع عند محاولة ا
Output.ConnectFail.Disconnected="تم قطع الاتصال من السيرفر." Output.ConnectFail.Disconnected="تم قطع الاتصال من السيرفر."
Output.RecordFail.Title="فشل في بدء التسجيل" Output.RecordFail.Title="فشل في بدء التسجيل"
Output.RecordNoSpace.Msg="لا توجد مساحة كافية على القرص لمتابعة التسجيل."
Output.RecordError.Title="خطأ في التسجيل" Output.RecordError.Title="خطأ في التسجيل"
Output.RecordError.Msg="حدث خطأ غير محدد أثناء التسجيل."
Output.BadPath.Title="مسار الملف غير صحيح" Output.BadPath.Title="مسار الملف غير صحيح"
Output.BadPath.Text="مسار الإخراج ملف تكوين غير صالح. الرجاء التحقق من الإعدادات الخاصة بك للتأكد من أنه تم تعيين مسار ملف صحيح." Output.BadPath.Text="مسار الإخراج ملف تكوين غير صالح. الرجاء التحقق من الإعدادات الخاصة بك للتأكد من أنه تم تعيين مسار ملف صحيح."
@ -109,6 +111,10 @@ LicenseAgreement.Exit="خروج"
Remux.SourceFile="تسجيل OBS" Remux.SourceFile="تسجيل OBS"
Remux.TargetFile="الملف الهدف" Remux.TargetFile="الملف الهدف"
Remux.OBSRecording="تسجيل OBS" Remux.OBSRecording="تسجيل OBS"
Remux.SelectRecording="إختر تسجيل OBS …"
Remux.SelectTarget="إختر الملف الهدف …"
Remux.FileExistsTitle="الملف الهدف موجود"
Remux.FileExists="الملف الهدف موجود، هل تريد استبداله؟"
UpdateAvailable="تحديث جديد متوفر" UpdateAvailable="تحديث جديد متوفر"
UpdateAvailable.Text="الإصدار %1.%2.%3 متوفر الآن. <a href='%4'>انقر هنا للتتحميل</a>" UpdateAvailable.Text="الإصدار %1.%2.%3 متوفر الآن. <a href='%4'>انقر هنا للتتحميل</a>"
@ -125,6 +131,7 @@ Basic.DisplayCapture="التقاط الشاشة"
Basic.Main.PreviewConextMenu.Enable="تمكين المعاينة" Basic.Main.PreviewConextMenu.Enable="تمكين المعاينة"
Deinterlacing.Discard="تجاهل" Deinterlacing.Discard="تجاهل"
Basic.Main.AddSceneDlg.Title="أضف المشهد" Basic.Main.AddSceneDlg.Title="أضف المشهد"
@ -230,6 +237,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="التحرك &للقمة"
Basic.MainMenu.Edit.Order.MoveToBottom="التحرك &للقاع" Basic.MainMenu.Edit.Order.MoveToBottom="التحرك &للقاع"
Basic.MainMenu.Edit.AdvAudio="&خصائص الصوت المتقدمة" Basic.MainMenu.Edit.AdvAudio="&خصائص الصوت المتقدمة"
Basic.MainMenu.SceneCollection="&مجموعة المشاهد" Basic.MainMenu.SceneCollection="&مجموعة المشاهد"
Basic.MainMenu.Profile="&الملف الشخصي" Basic.MainMenu.Profile="&الملف الشخصي"
@ -247,6 +255,10 @@ Basic.Settings.Confirm="لديك تغييرات غير محفوظة. هل تري
Basic.Settings.General="عام" Basic.Settings.General="عام"
Basic.Settings.General.Theme="السمة" Basic.Settings.General.Theme="السمة"
Basic.Settings.General.Language="اللغة" Basic.Settings.General.Language="اللغة"
Basic.Settings.General.ScreenSnapping="جذب المصادر لحافة الشاشة"
Basic.Settings.General.CenterSnapping="جذب المصادر للمركز العمودي والأفقي"
Basic.Settings.General.SourceSnapping="جذب المصادر للمصادر الأخرى"
Basic.Settings.General.SnapDistance="حساسية الجذب"
Basic.Settings.Stream="بث" Basic.Settings.Stream="بث"
Basic.Settings.Stream.StreamType="نوع البث" Basic.Settings.Stream.StreamType="نوع البث"
@ -254,9 +266,22 @@ Basic.Settings.Stream.StreamType="نوع البث"
Basic.Settings.Output="المخرج" Basic.Settings.Output="المخرج"
Basic.Settings.Output.Format="صيغة التسجيل" Basic.Settings.Output.Format="صيغة التسجيل"
Basic.Settings.Output.Encoder="مرمّز" Basic.Settings.Output.Encoder="مرمّز"
Basic.Settings.Output.SelectDirectory="حدد دليل التسجيل"
Basic.Settings.Output.SelectFile="حدد ملف التسجيل"
Basic.Settings.Output.Mode="نوع المخرج" Basic.Settings.Output.Mode="نوع المخرج"
Basic.Settings.Output.Mode.Simple="بسيط" Basic.Settings.Output.Mode.Simple="بسيط"
Basic.Settings.Output.Mode.Adv="متقدم" Basic.Settings.Output.Mode.Adv="متقدم"
Basic.Settings.Output.Mode.FFmpeg="مخرج FFmpeg"
Basic.Settings.Output.Simple.SavePath="مسار التسجيل"
Basic.Settings.Output.Simple.RecordingQuality="جودة التسجيل"
Basic.Settings.Output.Simple.RecordingQuality.Small="جودة عالية، حجم ملف متوسط"
Basic.Settings.Output.Simple.RecordingQuality.HQ="جودة لا تُميز، حجم ملف كبير"
Basic.Settings.Output.Simple.RecordingQuality.Lossless="جودة غير فقودة، حجم ملف كبير بشكل هائل"
Basic.Settings.Output.Simple.Warn.Lossless.Msg="هل أنت متأكد أنك تريد استخدام الجودة الغير فقودة؟"
Basic.Settings.Output.Simple.Warn.Lossless.Title="تحذير الجودة الغير فقودة!"
Basic.Settings.Output.Simple.Encoder.Software="برمجية (x264)"
Basic.Settings.Output.Simple.Encoder.Hardware.QSV="عتاد (QSV)"
Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="عتاد (NVENC)"
Basic.Settings.Output.VideoBitrate="معدل البت للفيديو" Basic.Settings.Output.VideoBitrate="معدل البت للفيديو"
Basic.Settings.Output.AudioBitrate="معدل البت للصوت" Basic.Settings.Output.AudioBitrate="معدل البت للصوت"
Basic.Settings.Output.Reconnect="إعادة الاتصال تلقائياً" Basic.Settings.Output.Reconnect="إعادة الاتصال تلقائياً"
@ -264,6 +289,7 @@ Basic.Settings.Output.RetryDelay="إعادة محاولة تأخير (ثوان)"
Basic.Settings.Output.MaxRetries="أقصى عدد للمحاولات" Basic.Settings.Output.MaxRetries="أقصى عدد للمحاولات"
Basic.Settings.Output.Adv.Recording.Type.Standard="قياسي"
Basic.Settings.Output.Adv.FFmpeg.SaveFilter.All="‮كل الملفات" Basic.Settings.Output.Adv.FFmpeg.SaveFilter.All="‮كل الملفات"
Basic.Settings.Output.Adv.FFmpeg.Format="صيغة الحاوية" Basic.Settings.Output.Adv.FFmpeg.Format="صيغة الحاوية"

View file

@ -111,6 +111,7 @@ Basic.DisplayCapture="Заснемане на екрана"
Basic.Main.PreviewConextMenu.Enable="Разреши преглед" Basic.Main.PreviewConextMenu.Enable="Разреши преглед"
Basic.Main.AddSceneDlg.Title="Добави сцена" Basic.Main.AddSceneDlg.Title="Добави сцена"
Basic.Main.AddSceneDlg.Text="Моля, въведете името на сцената" Basic.Main.AddSceneDlg.Text="Моля, въведете името на сцената"
@ -222,6 +223,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="Премести &най-отгоре"
Basic.MainMenu.Edit.Order.MoveToBottom="Премести най-о&тдолу" Basic.MainMenu.Edit.Order.MoveToBottom="Премести най-о&тдолу"
Basic.MainMenu.Help="&Помощ" Basic.MainMenu.Help="&Помощ"
Basic.MainMenu.Help.Logs="\"Log\" &файлове" Basic.MainMenu.Help.Logs="\"Log\" &файлове"
Basic.MainMenu.Help.Logs.UploadCurrentLog="Качи &текущия \"Log\" файл" Basic.MainMenu.Help.Logs.UploadCurrentLog="Качи &текущия \"Log\" файл"

View file

@ -87,6 +87,7 @@ ConfirmExit.Text="OBS és actualment actiu. Tots els directes/gravacions s'atur
ConfirmRemove.Title="Confirmeu la supressió" ConfirmRemove.Title="Confirmeu la supressió"
ConfirmRemove.Text="Esteu segur que voleu suprimir «$1»?" ConfirmRemove.Text="Esteu segur que voleu suprimir «$1»?"
ConfirmRemove.TextMultiple="¿Segur que vols esborrar %1 elements?"
Output.ConnectFail.Title="Error en connectar" Output.ConnectFail.Title="Error en connectar"
Output.ConnectFail.BadPath="Ruta o adreça URL no vàlida. Si us plau, comproveu la configuració per confirmar que són vàlids." Output.ConnectFail.BadPath="Ruta o adreça URL no vàlida. Si us plau, comproveu la configuració per confirmar que són vàlids."
@ -144,6 +145,12 @@ Basic.DisplayCapture="Captura de pantalla"
Basic.Main.PreviewConextMenu.Enable="Habilita la visualització prèvia" Basic.Main.PreviewConextMenu.Enable="Habilita la visualització prèvia"
ScaleFiltering="Escala de filtratge"
ScaleFiltering.Point="Punt"
ScaleFiltering.Bilinear="Bilineal"
ScaleFiltering.Bicubic="Bicúbic"
ScaleFiltering.Lanczos="Lanczos"
Deinterlacing="Desentrellaçar" Deinterlacing="Desentrellaçar"
Deinterlacing.Discard="Descarta" Deinterlacing.Discard="Descarta"
Deinterlacing.Retro="Retro" Deinterlacing.Retro="Retro"
@ -186,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="Configuració canviada"
Basic.PropertiesWindow.Confirm="Hi ha canvis no desats. Voleu mantenir-los?" Basic.PropertiesWindow.Confirm="Hi ha canvis no desats. Voleu mantenir-los?"
Basic.PropertiesWindow.NoProperties="No hi ha propietats disponibles" Basic.PropertiesWindow.NoProperties="No hi ha propietats disponibles"
Basic.PropertiesWindow.AddFiles="Afegeix fitxers" Basic.PropertiesWindow.AddFiles="Afegeix fitxers"
Basic.PropertiesWindow.AddDir="Afegir directori"
Basic.PropertiesWindow.AddURL="Afegeix el camí o l'URL" Basic.PropertiesWindow.AddURL="Afegeix el camí o l'URL"
Basic.PropertiesWindow.AddEditableListDir="Afegir directori a '%1'"
Basic.PropertiesWindow.AddEditableListFiles="Afegeix fitxers a '%1'" Basic.PropertiesWindow.AddEditableListFiles="Afegeix fitxers a '%1'"
Basic.PropertiesWindow.AddEditableListEntry="Afegeix una entrada a '%1'" Basic.PropertiesWindow.AddEditableListEntry="Afegeix una entrada a '%1'"
Basic.PropertiesWindow.EditEditableListEntry="Edita l'entrada de '%1'" Basic.PropertiesWindow.EditEditableListEntry="Edita l'entrada de '%1'"
@ -250,7 +259,9 @@ Basic.Main.Connecting="S'està connectant..."
Basic.Main.StartRecording="Inicia l'enregistrament" Basic.Main.StartRecording="Inicia l'enregistrament"
Basic.Main.StartStreaming="Inicia l'enregistrament" Basic.Main.StartStreaming="Inicia l'enregistrament"
Basic.Main.StopRecording="Atura l'enregistrament" Basic.Main.StopRecording="Atura l'enregistrament"
Basic.Main.StoppingRecording="Aturant l'enregistrament..."
Basic.Main.StopStreaming="Atura l'enregistrament" Basic.Main.StopStreaming="Atura l'enregistrament"
Basic.Main.StoppingStreaming="Aturant la transmissió..."
Basic.Main.ForceStopStreaming="Atura l'enregistrament (descarta el retard)" Basic.Main.ForceStopStreaming="Atura l'enregistrament (descarta el retard)"
Basic.MainMenu.File="&Fitxer" Basic.MainMenu.File="&Fitxer"
@ -287,6 +298,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="Mou a la part &superior"
Basic.MainMenu.Edit.Order.MoveToBottom="Mou a la part &inferior" Basic.MainMenu.Edit.Order.MoveToBottom="Mou a la part &inferior"
Basic.MainMenu.Edit.AdvAudio="&Propietats avançades d'àudio" Basic.MainMenu.Edit.AdvAudio="&Propietats avançades d'àudio"
Basic.MainMenu.View="Veure"
Basic.MainMenu.View.Toolbars="Barres d'eines"
Basic.MainMenu.View.Toolbars.Listboxes="Quadre de Llista"
Basic.MainMenu.View.SceneTransitions="Transicions d'escena"
Basic.MainMenu.View.StatusBar="Barra d'estat"
Basic.MainMenu.SceneCollection="&Col·lecció d'escenes" Basic.MainMenu.SceneCollection="&Col·lecció d'escenes"
Basic.MainMenu.Profile="&Perfil" Basic.MainMenu.Profile="&Perfil"
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="Tema"
Basic.Settings.General.Language="Llengua" Basic.Settings.General.Language="Llengua"
Basic.Settings.General.WarnBeforeStartingStream="Mostra diàleg de confirmació quan s'iniciï una transmissió" Basic.Settings.General.WarnBeforeStartingStream="Mostra diàleg de confirmació quan s'iniciï una transmissió"
Basic.Settings.General.WarnBeforeStoppingStream="Mostra diàleg de confirmació quan s'aturi una transmissió" Basic.Settings.General.WarnBeforeStoppingStream="Mostra diàleg de confirmació quan s'aturi una transmissió"
Basic.Settings.General.HideProjectorCursor="Amaga el cursor sobre projectors"
Basic.Settings.General.Snapping="Ajustament d'alineació de la font" Basic.Settings.General.Snapping="Ajustament d'alineació de la font"
Basic.Settings.General.ScreenSnapping="Ajustar les fonts a la vora de la pantalla" Basic.Settings.General.ScreenSnapping="Ajustar les fonts a la vora de la pantalla"
Basic.Settings.General.CenterSnapping="Ajustar les fonts al centre horitzontal i vertical" Basic.Settings.General.CenterSnapping="Ajustar les fonts al centre horitzontal i vertical"
Basic.Settings.General.SourceSnapping="Ajustar les fonts a altres fonts" Basic.Settings.General.SourceSnapping="Ajustar les fonts a altres fonts"
Basic.Settings.General.SnapDistance="Ajusta la sensibilitat" Basic.Settings.General.SnapDistance="Ajusta la sensibilitat"
Basic.Settings.General.RecordWhenStreaming="Enregistra automàticament quan es transmet"
Basic.Settings.General.KeepRecordingWhenStreamStops="Mantenir l'enregistrament quan s'atura la transmissió"
Basic.Settings.Stream="Directe" Basic.Settings.Stream="Directe"
Basic.Settings.Stream.StreamType="Tipus de directe" Basic.Settings.Stream.StreamType="Tipus de directe"
@ -431,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="Retard de \"prémer-per-parlar\""
Basic.Settings.Audio.UnknownAudioDevice="[Dispositiu no connectat o no disponible]" Basic.Settings.Audio.UnknownAudioDevice="[Dispositiu no connectat o no disponible]"
Basic.Settings.Advanced="Avançat" Basic.Settings.Advanced="Avançat"
Basic.Settings.Advanced.General.ProcessPriority="Prioritat del procés"
Basic.Settings.Advanced.General.ProcessPriority.High="Alta"
Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="Per sobre del normal"
Basic.Settings.Advanced.General.ProcessPriority.Normal="Normal"
Basic.Settings.Advanced.General.ProcessPriority.Idle="Inactiva"
Basic.Settings.Advanced.FormatWarning="Advertiment: Els formats de color diferents de NV12 estan destinats principalment per a la gravació i no són recomanables quan es fa un directe. Fer un directe pot comportar un major ús de CPU a causa de la conversió de format de color." Basic.Settings.Advanced.FormatWarning="Advertiment: Els formats de color diferents de NV12 estan destinats principalment per a la gravació i no són recomanables quan es fa un directe. Fer un directe pot comportar un major ús de CPU a causa de la conversió de format de color."
Basic.Settings.Advanced.Audio.BufferingTime="Temps de buffer d'àudio" Basic.Settings.Advanced.Audio.BufferingTime="Temps de buffer d'àudio"
Basic.Settings.Advanced.Video.ColorFormat="Format del color" Basic.Settings.Advanced.Video.ColorFormat="Format del color"

View file

@ -87,6 +87,7 @@ ConfirmExit.Text="Ukončením budou všechna vysílání/záznamy zastavena. Jst
ConfirmRemove.Title="Potvrzení odebrání" ConfirmRemove.Title="Potvrzení odebrání"
ConfirmRemove.Text="Opravdu si přejete odebrat '$1'?" ConfirmRemove.Text="Opravdu si přejete odebrat '$1'?"
ConfirmRemove.TextMultiple="Opravdu si přejete odebrat %1 položky ?"
Output.ConnectFail.Title="Spojení se nezdařilo" Output.ConnectFail.Title="Spojení se nezdařilo"
Output.ConnectFail.BadPath="Chybná cesta nebo adresa připojení. Zkontrolujte, prosím, správnost svých nastavení." Output.ConnectFail.BadPath="Chybná cesta nebo adresa připojení. Zkontrolujte, prosím, správnost svých nastavení."
@ -144,6 +145,12 @@ Basic.DisplayCapture="Záznam obrazovky"
Basic.Main.PreviewConextMenu.Enable="Povolit náhled" Basic.Main.PreviewConextMenu.Enable="Povolit náhled"
ScaleFiltering="Filtrování rozsahu"
ScaleFiltering.Point="Bod"
ScaleFiltering.Bilinear="Bilineární"
ScaleFiltering.Bicubic="Bikubický"
ScaleFiltering.Lanczos="Lanczos"
Deinterlacing="Odstranění prokladu" Deinterlacing="Odstranění prokladu"
Deinterlacing.Discard="Zahození" Deinterlacing.Discard="Zahození"
Deinterlacing.Retro="Retro" Deinterlacing.Retro="Retro"
@ -186,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="Nastavení upraveno"
Basic.PropertiesWindow.Confirm="Chcete ponechat neuložená nastavení ?" Basic.PropertiesWindow.Confirm="Chcete ponechat neuložená nastavení ?"
Basic.PropertiesWindow.NoProperties="Nejsou k dispozici žádné vlatnosti" Basic.PropertiesWindow.NoProperties="Nejsou k dispozici žádné vlatnosti"
Basic.PropertiesWindow.AddFiles="Přidat soubory" Basic.PropertiesWindow.AddFiles="Přidat soubory"
Basic.PropertiesWindow.AddDir="Přidat složku"
Basic.PropertiesWindow.AddURL="Přidat cestu/URL" Basic.PropertiesWindow.AddURL="Přidat cestu/URL"
Basic.PropertiesWindow.AddEditableListDir="Přidat složku do '%1'"
Basic.PropertiesWindow.AddEditableListFiles="Přidat soubory do '%1'" Basic.PropertiesWindow.AddEditableListFiles="Přidat soubory do '%1'"
Basic.PropertiesWindow.AddEditableListEntry="Přidat položku do '%1'" Basic.PropertiesWindow.AddEditableListEntry="Přidat položku do '%1'"
Basic.PropertiesWindow.EditEditableListEntry="Upravit položku z '%1'" Basic.PropertiesWindow.EditEditableListEntry="Upravit položku z '%1'"
@ -250,7 +259,9 @@ Basic.Main.Connecting="Připojování..."
Basic.Main.StartRecording="Začít nahrávat" Basic.Main.StartRecording="Začít nahrávat"
Basic.Main.StartStreaming="Začít vysílat" Basic.Main.StartStreaming="Začít vysílat"
Basic.Main.StopRecording="Zastavit nahrávání" Basic.Main.StopRecording="Zastavit nahrávání"
Basic.Main.StoppingRecording="Zastavuji nahrávání..."
Basic.Main.StopStreaming="Zastavit vysílání" Basic.Main.StopStreaming="Zastavit vysílání"
Basic.Main.StoppingStreaming="Zastavuji vysílání..."
Basic.Main.ForceStopStreaming="Zastavit vysání (bez zpoždění)" Basic.Main.ForceStopStreaming="Zastavit vysání (bez zpoždění)"
Basic.MainMenu.File="Soubor (&F)" Basic.MainMenu.File="Soubor (&F)"
@ -287,6 +298,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="Posunout na vršek (&T)"
Basic.MainMenu.Edit.Order.MoveToBottom="Posunout na spodek (&B)" Basic.MainMenu.Edit.Order.MoveToBottom="Posunout na spodek (&B)"
Basic.MainMenu.Edit.AdvAudio="Rozšířené vl&astnosti zvuku" Basic.MainMenu.Edit.AdvAudio="Rozšířené vl&astnosti zvuku"
Basic.MainMenu.View="Zobrazit (&V)"
Basic.MainMenu.View.Toolbars="Liš&ty nástrojů"
Basic.MainMenu.View.Toolbars.Listboxes="Seznamy (&L)"
Basic.MainMenu.View.SceneTransitions="Pře&chody scény"
Basic.MainMenu.View.StatusBar="&Stavový řádek"
Basic.MainMenu.SceneCollection="Kolekce &scén" Basic.MainMenu.SceneCollection="Kolekce &scén"
Basic.MainMenu.Profile="&Profil" Basic.MainMenu.Profile="&Profil"
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="Vzhled"
Basic.Settings.General.Language="Jazyk" Basic.Settings.General.Language="Jazyk"
Basic.Settings.General.WarnBeforeStartingStream="Vyžadovat potvrzení pro spuštění vysílání" Basic.Settings.General.WarnBeforeStartingStream="Vyžadovat potvrzení pro spuštění vysílání"
Basic.Settings.General.WarnBeforeStoppingStream="Vyžadovat potvrzení pro ukončení vysílání" Basic.Settings.General.WarnBeforeStoppingStream="Vyžadovat potvrzení pro ukončení vysílání"
Basic.Settings.General.HideProjectorCursor="Skrýt kurzor přes projektor"
Basic.Settings.General.Snapping="Přichycování zdrojů" Basic.Settings.General.Snapping="Přichycování zdrojů"
Basic.Settings.General.ScreenSnapping="Přichytávat zdroje k okraji obrazovky" Basic.Settings.General.ScreenSnapping="Přichytávat zdroje k okraji obrazovky"
Basic.Settings.General.CenterSnapping="Přichytávat zdroje k vertikálnímu a horizontálnímu středu" Basic.Settings.General.CenterSnapping="Přichytávat zdroje k vertikálnímu a horizontálnímu středu"
Basic.Settings.General.SourceSnapping="Přichytávat zdroje k ostatním zdrojům" Basic.Settings.General.SourceSnapping="Přichytávat zdroje k ostatním zdrojům"
Basic.Settings.General.SnapDistance="Citlivost přichycení" Basic.Settings.General.SnapDistance="Citlivost přichycení"
Basic.Settings.General.RecordWhenStreaming="Automaticky nahrávat při vysílání"
Basic.Settings.General.KeepRecordingWhenStreamStops="Pokračovat v nahrávání i po zastavení vysílání"
Basic.Settings.Stream="Vysílání" Basic.Settings.Stream="Vysílání"
Basic.Settings.Stream.StreamType="Typ vysílání" Basic.Settings.Stream.StreamType="Typ vysílání"
@ -431,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="Zpoždění"
Basic.Settings.Audio.UnknownAudioDevice="[Zařízení není připojeno nebo není k dispozici]" Basic.Settings.Audio.UnknownAudioDevice="[Zařízení není připojeno nebo není k dispozici]"
Basic.Settings.Advanced="Rozšířené" Basic.Settings.Advanced="Rozšířené"
Basic.Settings.Advanced.General.ProcessPriority="Priorita procesu"
Basic.Settings.Advanced.General.ProcessPriority.High="Vysoká"
Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="Vyšší než normální"
Basic.Settings.Advanced.General.ProcessPriority.Normal="Normální"
Basic.Settings.Advanced.General.ProcessPriority.Idle="Nečinný"
Basic.Settings.Advanced.FormatWarning="Varování: Jiné formáty barev než je NV12 jsou primárně určeny pro nahrávání a neměly by být použity pro vysílání. Použití při vysílání zvýší využití CPU." Basic.Settings.Advanced.FormatWarning="Varování: Jiné formáty barev než je NV12 jsou primárně určeny pro nahrávání a neměly by být použity pro vysílání. Použití při vysílání zvýší využití CPU."
Basic.Settings.Advanced.Audio.BufferingTime="Čas vyrovnávací paměti zvuku" Basic.Settings.Advanced.Audio.BufferingTime="Čas vyrovnávací paměti zvuku"
Basic.Settings.Advanced.Video.ColorFormat="Formát barev" Basic.Settings.Advanced.Video.ColorFormat="Formát barev"

View file

@ -140,6 +140,7 @@ Basic.DisplayCapture="Indfang display"
Basic.Main.PreviewConextMenu.Enable="Aktiver visning" Basic.Main.PreviewConextMenu.Enable="Aktiver visning"
Deinterlacing="Deinterlacing" Deinterlacing="Deinterlacing"
Deinterlacing.Discard="Kassér" Deinterlacing.Discard="Kassér"
Deinterlacing.Retro="Retro" Deinterlacing.Retro="Retro"
@ -277,6 +278,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="Flyt til &Toppen"
Basic.MainMenu.Edit.Order.MoveToBottom="Flyt til &Bunden" Basic.MainMenu.Edit.Order.MoveToBottom="Flyt til &Bunden"
Basic.MainMenu.Edit.AdvAudio="&Avancerede lydegenskaber" Basic.MainMenu.Edit.AdvAudio="&Avancerede lydegenskaber"
Basic.MainMenu.SceneCollection="&Scenesamling" Basic.MainMenu.SceneCollection="&Scenesamling"
Basic.MainMenu.Profile="&Profil" Basic.MainMenu.Profile="&Profil"

View file

@ -87,6 +87,7 @@ ConfirmExit.Text="OBS ist derzeit aktiv. Alle Streams/Aufnahmen werden beendet.
ConfirmRemove.Title="Entfernen bestätigen" ConfirmRemove.Title="Entfernen bestätigen"
ConfirmRemove.Text="Sind Sie sicher, dass Sie '$1' entfernen möchten?" ConfirmRemove.Text="Sind Sie sicher, dass Sie '$1' entfernen möchten?"
ConfirmRemove.TextMultiple="Sind Sie sicher, dass Sie %1 Elemente löschen möchten?"
Output.ConnectFail.Title="Verbindung fehlgeschlagen" Output.ConnectFail.Title="Verbindung fehlgeschlagen"
Output.ConnectFail.BadPath="Ungültiger Pfad oder Verbindungs-URL. Bitte überprüfen Sie Ihre Einstellungen und stellen Sie sicher, dass diese korrekt sind." Output.ConnectFail.BadPath="Ungültiger Pfad oder Verbindungs-URL. Bitte überprüfen Sie Ihre Einstellungen und stellen Sie sicher, dass diese korrekt sind."
@ -144,6 +145,12 @@ Basic.DisplayCapture="Monitoraufnahme"
Basic.Main.PreviewConextMenu.Enable="Vorschau aktivieren" Basic.Main.PreviewConextMenu.Enable="Vorschau aktivieren"
ScaleFiltering="Skalierungsfilterung"
ScaleFiltering.Point="Point"
ScaleFiltering.Bilinear="Bilinear"
ScaleFiltering.Bicubic="Bicubic"
ScaleFiltering.Lanczos="Lanczos"
Deinterlacing="Zeilenentflechtung (Deinterlacing)" Deinterlacing="Zeilenentflechtung (Deinterlacing)"
Deinterlacing.Discard="Verwerfen" Deinterlacing.Discard="Verwerfen"
Deinterlacing.Retro="Retro" Deinterlacing.Retro="Retro"
@ -186,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="Einstellungen geändert"
Basic.PropertiesWindow.Confirm="Es gibt ungesicherte Änderungen. Möchten Sie diese behalten?" Basic.PropertiesWindow.Confirm="Es gibt ungesicherte Änderungen. Möchten Sie diese behalten?"
Basic.PropertiesWindow.NoProperties="Keine Eigenschaften verfügbar" Basic.PropertiesWindow.NoProperties="Keine Eigenschaften verfügbar"
Basic.PropertiesWindow.AddFiles="Dateien hinzufügen" Basic.PropertiesWindow.AddFiles="Dateien hinzufügen"
Basic.PropertiesWindow.AddDir="Verzeichnis hinzufügen"
Basic.PropertiesWindow.AddURL="Pfad/URL hinzufügen" Basic.PropertiesWindow.AddURL="Pfad/URL hinzufügen"
Basic.PropertiesWindow.AddEditableListDir="Verzeichnis zu '%1' hinzufügen"
Basic.PropertiesWindow.AddEditableListFiles="Dateien zu '%1' hinzufügen" Basic.PropertiesWindow.AddEditableListFiles="Dateien zu '%1' hinzufügen"
Basic.PropertiesWindow.AddEditableListEntry="Eintrag zu '%1' hinzufügen" Basic.PropertiesWindow.AddEditableListEntry="Eintrag zu '%1' hinzufügen"
Basic.PropertiesWindow.EditEditableListEntry="Eintrag aus '%1' bearbeiten" Basic.PropertiesWindow.EditEditableListEntry="Eintrag aus '%1' bearbeiten"
@ -250,7 +259,9 @@ Basic.Main.Connecting="Verbinden..."
Basic.Main.StartRecording="Aufnahme starten" Basic.Main.StartRecording="Aufnahme starten"
Basic.Main.StartStreaming="Streaming starten" Basic.Main.StartStreaming="Streaming starten"
Basic.Main.StopRecording="Aufnahme stoppen" Basic.Main.StopRecording="Aufnahme stoppen"
Basic.Main.StoppingRecording="Stoppe Aufnahme..."
Basic.Main.StopStreaming="Streaming stoppen" Basic.Main.StopStreaming="Streaming stoppen"
Basic.Main.StoppingStreaming="Stoppe Stream..."
Basic.Main.ForceStopStreaming="Streaming stoppen (Verzögerung verwerfen)" Basic.Main.ForceStopStreaming="Streaming stoppen (Verzögerung verwerfen)"
Basic.MainMenu.File="Datei (&F)" Basic.MainMenu.File="Datei (&F)"
@ -287,6 +298,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="Ganz nach oben bewegen (&T)"
Basic.MainMenu.Edit.Order.MoveToBottom="Ganz nach unten &bewegen" Basic.MainMenu.Edit.Order.MoveToBottom="Ganz nach unten &bewegen"
Basic.MainMenu.Edit.AdvAudio="Erweiterte &Audioeigenschaften" Basic.MainMenu.Edit.AdvAudio="Erweiterte &Audioeigenschaften"
Basic.MainMenu.View="Ansicht (&V)"
Basic.MainMenu.View.Toolbars="Werkzeugleisten (&T)"
Basic.MainMenu.View.Toolbars.Listboxes="&Listenfelder"
Basic.MainMenu.View.SceneTransitions="Szenenübergänge (&c)"
Basic.MainMenu.View.StatusBar="&Statusleiste"
Basic.MainMenu.SceneCollection="&Szenen-Sammlung" Basic.MainMenu.SceneCollection="&Szenen-Sammlung"
Basic.MainMenu.Profile="&Profil" Basic.MainMenu.Profile="&Profil"
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="Motiv"
Basic.Settings.General.Language="Sprache" Basic.Settings.General.Language="Sprache"
Basic.Settings.General.WarnBeforeStartingStream="Bestätigungsdialog beim Streamstart anzeigen" Basic.Settings.General.WarnBeforeStartingStream="Bestätigungsdialog beim Streamstart anzeigen"
Basic.Settings.General.WarnBeforeStoppingStream="Bestätigungsdialog beim Streamstop anzeigen" Basic.Settings.General.WarnBeforeStoppingStream="Bestätigungsdialog beim Streamstop anzeigen"
Basic.Settings.General.HideProjectorCursor="Mauszeiger über Projektoren verstecken"
Basic.Settings.General.Snapping="Quellenausrichtung" Basic.Settings.General.Snapping="Quellenausrichtung"
Basic.Settings.General.ScreenSnapping="Quellen am Bildschirmrand ausrichten" Basic.Settings.General.ScreenSnapping="Quellen am Bildschirmrand ausrichten"
Basic.Settings.General.CenterSnapping="Quellen zur horizontalen und vertikalen Mitte ausrichten" Basic.Settings.General.CenterSnapping="Quellen zur horizontalen und vertikalen Mitte ausrichten"
Basic.Settings.General.SourceSnapping="Quellen an anderen Quellen ausrichten" Basic.Settings.General.SourceSnapping="Quellen an anderen Quellen ausrichten"
Basic.Settings.General.SnapDistance="Ausrichtungsempfindlichkeit" Basic.Settings.General.SnapDistance="Ausrichtungsempfindlichkeit"
Basic.Settings.General.RecordWhenStreaming="Stream automatisch aufnehmen"
Basic.Settings.General.KeepRecordingWhenStreamStops="Weiter aufnehmen, wenn der Livestream stoppt"
Basic.Settings.Stream="Stream" Basic.Settings.Stream="Stream"
Basic.Settings.Stream.StreamType="Stream Typ" Basic.Settings.Stream.StreamType="Stream Typ"
@ -431,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="Push-To-Talk Verzögerung"
Basic.Settings.Audio.UnknownAudioDevice="[Gerät nicht angeschlossen oder nicht verfügbar]" Basic.Settings.Audio.UnknownAudioDevice="[Gerät nicht angeschlossen oder nicht verfügbar]"
Basic.Settings.Advanced="Erweitert" Basic.Settings.Advanced="Erweitert"
Basic.Settings.Advanced.General.ProcessPriority="Prozesspriorität"
Basic.Settings.Advanced.General.ProcessPriority.High="Hoch"
Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="Höher als normal"
Basic.Settings.Advanced.General.ProcessPriority.Normal="Normal"
Basic.Settings.Advanced.General.ProcessPriority.Idle="Niedrig"
Basic.Settings.Advanced.FormatWarning="Warnung: Andere Farbformate als NV12 sind in erster Linie für die Aufnahme bestimmt und sind für Streaming nicht zu empfehlen. Die erforderliche Farbformatkonvertierung kann eine erhöhte CPU-Auslastung hervorrufen." Basic.Settings.Advanced.FormatWarning="Warnung: Andere Farbformate als NV12 sind in erster Linie für die Aufnahme bestimmt und sind für Streaming nicht zu empfehlen. Die erforderliche Farbformatkonvertierung kann eine erhöhte CPU-Auslastung hervorrufen."
Basic.Settings.Advanced.Audio.BufferingTime="Audio Pufferungszeit" Basic.Settings.Advanced.Audio.BufferingTime="Audio Pufferungszeit"
Basic.Settings.Advanced.Video.ColorFormat="Farbformat" Basic.Settings.Advanced.Video.ColorFormat="Farbformat"

View file

@ -112,6 +112,7 @@ Basic.DisplayCapture="Σύλληψη Οθόνης"
Basic.Main.PreviewConextMenu.Enable="Ενεργοποίηση Προεπισκόπησης" Basic.Main.PreviewConextMenu.Enable="Ενεργοποίηση Προεπισκόπησης"
Basic.Main.AddSceneDlg.Title="Προσθήκη Σκηνής" Basic.Main.AddSceneDlg.Title="Προσθήκη Σκηνής"
Basic.Main.AddSceneDlg.Text="Παρακαλώ εισάγετε το όνομα της σκηνής" Basic.Main.AddSceneDlg.Text="Παρακαλώ εισάγετε το όνομα της σκηνής"
@ -231,6 +232,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="Μετακίνηση στην Κορυφή(
Basic.MainMenu.Edit.Order.MoveToBottom="Μετακίνηση τελέιως Κάτω(&B)" Basic.MainMenu.Edit.Order.MoveToBottom="Μετακίνηση τελέιως Κάτω(&B)"
Basic.MainMenu.Edit.AdvAudio="Ιδιότητες(&A) Ήχου για Προχωρημένους" Basic.MainMenu.Edit.AdvAudio="Ιδιότητες(&A) Ήχου για Προχωρημένους"
Basic.MainMenu.SceneCollection="&Συλλογή Σκηνών" Basic.MainMenu.SceneCollection="&Συλλογή Σκηνών"
Basic.MainMenu.Profile="&Προφίλ" Basic.MainMenu.Profile="&Προφίλ"

View file

@ -101,6 +101,7 @@ ConfirmExit.Text="OBS is currently active. All streams/recordings will be shut
# confirm delete dialog box # confirm delete dialog box
ConfirmRemove.Title="Confirm Remove" ConfirmRemove.Title="Confirm Remove"
ConfirmRemove.Text="Are you sure you wish to remove '$1'?" ConfirmRemove.Text="Are you sure you wish to remove '$1'?"
ConfirmRemove.TextMultiple="Are you sure you wish to remove %1 items?"
# output connect messages # output connect messages
Output.ConnectFail.Title="Failed to connect" Output.ConnectFail.Title="Failed to connect"
@ -168,6 +169,13 @@ Basic.DisplayCapture="Display Capture"
# display context menu # display context menu
Basic.Main.PreviewConextMenu.Enable="Enable Preview" Basic.Main.PreviewConextMenu.Enable="Enable Preview"
# scale filtering
ScaleFiltering="Scale Filtering"
ScaleFiltering.Point="Point"
ScaleFiltering.Bilinear="Bilinear"
ScaleFiltering.Bicubic="Bicubic"
ScaleFiltering.Lanczos="Lanczos"
# deinterlacing # deinterlacing
Deinterlacing="Deinterlacing" Deinterlacing="Deinterlacing"
Deinterlacing.Discard="Discard" Deinterlacing.Discard="Discard"
@ -220,7 +228,9 @@ Basic.PropertiesWindow.ConfirmTitle="Settings Changed"
Basic.PropertiesWindow.Confirm="There are unsaved changes. Do you want to keep them?" Basic.PropertiesWindow.Confirm="There are unsaved changes. Do you want to keep them?"
Basic.PropertiesWindow.NoProperties="No properties available" Basic.PropertiesWindow.NoProperties="No properties available"
Basic.PropertiesWindow.AddFiles="Add Files" Basic.PropertiesWindow.AddFiles="Add Files"
Basic.PropertiesWindow.AddDir="Add Directory"
Basic.PropertiesWindow.AddURL="Add Path/URL" Basic.PropertiesWindow.AddURL="Add Path/URL"
Basic.PropertiesWindow.AddEditableListDir="Add directory to '%1'"
Basic.PropertiesWindow.AddEditableListFiles="Add files to '%1'" Basic.PropertiesWindow.AddEditableListFiles="Add files to '%1'"
Basic.PropertiesWindow.AddEditableListEntry="Add entry to '%1'" Basic.PropertiesWindow.AddEditableListEntry="Add entry to '%1'"
Basic.PropertiesWindow.EditEditableListEntry="Edit entry from '%1'" Basic.PropertiesWindow.EditEditableListEntry="Edit entry from '%1'"
@ -291,7 +301,9 @@ Basic.Main.Connecting="Connecting..."
Basic.Main.StartRecording="Start Recording" Basic.Main.StartRecording="Start Recording"
Basic.Main.StartStreaming="Start Streaming" Basic.Main.StartStreaming="Start Streaming"
Basic.Main.StopRecording="Stop Recording" Basic.Main.StopRecording="Stop Recording"
Basic.Main.StoppingRecording="Stopping Recording..."
Basic.Main.StopStreaming="Stop Streaming" Basic.Main.StopStreaming="Stop Streaming"
Basic.Main.StoppingStreaming="Stopping Stream..."
Basic.Main.ForceStopStreaming="Stop Streaming (discard delay)" Basic.Main.ForceStopStreaming="Stop Streaming (discard delay)"
# basic mode file menu # basic mode file menu
@ -312,6 +324,7 @@ Basic.MainMenu.Edit.Undo="&Undo"
Basic.MainMenu.Edit.Redo="&Redo" Basic.MainMenu.Edit.Redo="&Redo"
Basic.MainMenu.Edit.UndoAction="&Undo $1" Basic.MainMenu.Edit.UndoAction="&Undo $1"
Basic.MainMenu.Edit.RedoAction="&Redo $1" Basic.MainMenu.Edit.RedoAction="&Redo $1"
Basic.MainMenu.Edit.LockPreview="&Lock Preview"
Basic.MainMenu.Edit.Transform="&Transform" Basic.MainMenu.Edit.Transform="&Transform"
Basic.MainMenu.Edit.Transform.EditTransform="&Edit Transform..." Basic.MainMenu.Edit.Transform.EditTransform="&Edit Transform..."
Basic.MainMenu.Edit.Transform.ResetTransform="&Reset Transform" Basic.MainMenu.Edit.Transform.ResetTransform="&Reset Transform"
@ -330,6 +343,13 @@ Basic.MainMenu.Edit.Order.MoveToTop="Move to &Top"
Basic.MainMenu.Edit.Order.MoveToBottom="Move to &Bottom" Basic.MainMenu.Edit.Order.MoveToBottom="Move to &Bottom"
Basic.MainMenu.Edit.AdvAudio="&Advanced Audio Properties" Basic.MainMenu.Edit.AdvAudio="&Advanced Audio Properties"
# basic mode view menu
Basic.MainMenu.View="&View"
Basic.MainMenu.View.Toolbars="&Toolbars"
Basic.MainMenu.View.Toolbars.Listboxes="&Listboxes"
Basic.MainMenu.View.SceneTransitions="S&cene Transitions"
Basic.MainMenu.View.StatusBar="&Status Bar"
# basic mode profile/scene collection menus # basic mode profile/scene collection menus
Basic.MainMenu.SceneCollection="&Scene Collection" Basic.MainMenu.SceneCollection="&Scene Collection"
Basic.MainMenu.Profile="&Profile" Basic.MainMenu.Profile="&Profile"
@ -355,11 +375,14 @@ Basic.Settings.General.Theme="Theme"
Basic.Settings.General.Language="Language" Basic.Settings.General.Language="Language"
Basic.Settings.General.WarnBeforeStartingStream="Show confirmation dialog when starting streams" Basic.Settings.General.WarnBeforeStartingStream="Show confirmation dialog when starting streams"
Basic.Settings.General.WarnBeforeStoppingStream="Show confirmation dialog when stopping streams" Basic.Settings.General.WarnBeforeStoppingStream="Show confirmation dialog when stopping streams"
Basic.Settings.General.HideProjectorCursor="Hide cursor over projectors"
Basic.Settings.General.Snapping="Source Alignment Snapping" Basic.Settings.General.Snapping="Source Alignment Snapping"
Basic.Settings.General.ScreenSnapping="Snap Sources to edge of screen" Basic.Settings.General.ScreenSnapping="Snap Sources to edge of screen"
Basic.Settings.General.CenterSnapping="Snap Sources to horizontal and vertical center" Basic.Settings.General.CenterSnapping="Snap Sources to horizontal and vertical center"
Basic.Settings.General.SourceSnapping="Snap Sources to other sources" Basic.Settings.General.SourceSnapping="Snap Sources to other sources"
Basic.Settings.General.SnapDistance="Snap Sensitivity" Basic.Settings.General.SnapDistance="Snap Sensitivity"
Basic.Settings.General.RecordWhenStreaming="Automatically record when streaming"
Basic.Settings.General.KeepRecordingWhenStreamStops="Keep recording when stream stops"
# basic mode 'stream' settings # basic mode 'stream' settings
Basic.Settings.Stream="Stream" Basic.Settings.Stream="Stream"
@ -488,6 +511,11 @@ Basic.Settings.Audio.UnknownAudioDevice="[Device not connected or not available]
# basic mode 'advanced' settings # basic mode 'advanced' settings
Basic.Settings.Advanced="Advanced" Basic.Settings.Advanced="Advanced"
Basic.Settings.Advanced.General.ProcessPriority="Process Priority"
Basic.Settings.Advanced.General.ProcessPriority.High="High"
Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="Above Normal"
Basic.Settings.Advanced.General.ProcessPriority.Normal="Normal"
Basic.Settings.Advanced.General.ProcessPriority.Idle="Idle"
Basic.Settings.Advanced.FormatWarning="Warning: Color formats other than NV12 are primarily intended for recording, and are not recommended when streaming. Streaming may incur increased CPU usage due to color format conversion." Basic.Settings.Advanced.FormatWarning="Warning: Color formats other than NV12 are primarily intended for recording, and are not recommended when streaming. Streaming may incur increased CPU usage due to color format conversion."
Basic.Settings.Advanced.Audio.BufferingTime="Audio Buffering Time" Basic.Settings.Advanced.Audio.BufferingTime="Audio Buffering Time"
Basic.Settings.Advanced.Video.ColorFormat="Color Format" Basic.Settings.Advanced.Video.ColorFormat="Color Format"
@ -499,6 +527,8 @@ Basic.Settings.Advanced.StreamDelay="Stream Delay"
Basic.Settings.Advanced.StreamDelay.Duration="Duration (seconds)" Basic.Settings.Advanced.StreamDelay.Duration="Duration (seconds)"
Basic.Settings.Advanced.StreamDelay.Preserve="Preserve cutoff point (increase delay) when reconnecting" Basic.Settings.Advanced.StreamDelay.Preserve="Preserve cutoff point (increase delay) when reconnecting"
Basic.Settings.Advanced.StreamDelay.MemoryUsage="Estimated Memory Usage: %1 MB" Basic.Settings.Advanced.StreamDelay.MemoryUsage="Estimated Memory Usage: %1 MB"
Basic.Settings.Advanced.Network="Network"
Basic.Settings.Advanced.Network.BindToIP="Bind to IP"
# advanced audio properties # advanced audio properties
Basic.AdvAudio="Advanced Audio Properties" Basic.AdvAudio="Advanced Audio Properties"

View file

@ -87,6 +87,7 @@ ConfirmExit.Text="OBS esta siendo usado. Todas las transmisiones/grabaciones ser
ConfirmRemove.Title="Confirmar borrado" ConfirmRemove.Title="Confirmar borrado"
ConfirmRemove.Text="¿Seguro que desea eliminar '$1'?" ConfirmRemove.Text="¿Seguro que desea eliminar '$1'?"
ConfirmRemove.TextMultiple="¿Seguro que quieres eliminar %1 elementos?"
Output.ConnectFail.Title="Error al conectarse" Output.ConnectFail.Title="Error al conectarse"
Output.ConnectFail.BadPath="URL ruta de acceso o conexión no válida. Por favor, compruebe su configuración para confirmar que está correcta." Output.ConnectFail.BadPath="URL ruta de acceso o conexión no válida. Por favor, compruebe su configuración para confirmar que está correcta."
@ -144,6 +145,12 @@ Basic.DisplayCapture="Captura de pantalla"
Basic.Main.PreviewConextMenu.Enable="Habilitar previsualización" Basic.Main.PreviewConextMenu.Enable="Habilitar previsualización"
ScaleFiltering="Escala de filtrado"
ScaleFiltering.Point="Punto"
ScaleFiltering.Bilinear="Bilineal"
ScaleFiltering.Bicubic="Bicúbico"
ScaleFiltering.Lanczos="Lanczos"
Deinterlacing="Desentrelazado" Deinterlacing="Desentrelazado"
Deinterlacing.Discard="Descartar" Deinterlacing.Discard="Descartar"
Deinterlacing.Retro="Retro" Deinterlacing.Retro="Retro"
@ -186,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="Configuración cambiada"
Basic.PropertiesWindow.Confirm="Hay cambios sin guardar. ¿Deseas conservarlos?" Basic.PropertiesWindow.Confirm="Hay cambios sin guardar. ¿Deseas conservarlos?"
Basic.PropertiesWindow.NoProperties="No hay propiedades disponibles" Basic.PropertiesWindow.NoProperties="No hay propiedades disponibles"
Basic.PropertiesWindow.AddFiles="Agregar archivos" Basic.PropertiesWindow.AddFiles="Agregar archivos"
Basic.PropertiesWindow.AddDir="Añadir Carpeta"
Basic.PropertiesWindow.AddURL="Añadir ruta/URL" Basic.PropertiesWindow.AddURL="Añadir ruta/URL"
Basic.PropertiesWindow.AddEditableListDir="Añadir Carpeta a '%1'"
Basic.PropertiesWindow.AddEditableListFiles="Añadir archivos a '%1'" Basic.PropertiesWindow.AddEditableListFiles="Añadir archivos a '%1'"
Basic.PropertiesWindow.AddEditableListEntry="Agregar entrada a '%1'" Basic.PropertiesWindow.AddEditableListEntry="Agregar entrada a '%1'"
Basic.PropertiesWindow.EditEditableListEntry="Editar entrada de '%1'" Basic.PropertiesWindow.EditEditableListEntry="Editar entrada de '%1'"
@ -250,7 +259,9 @@ Basic.Main.Connecting="Conectando..."
Basic.Main.StartRecording="Iniciar grabación" Basic.Main.StartRecording="Iniciar grabación"
Basic.Main.StartStreaming="Iniciar Transmisión" Basic.Main.StartStreaming="Iniciar Transmisión"
Basic.Main.StopRecording="Detener grabación" Basic.Main.StopRecording="Detener grabación"
Basic.Main.StoppingRecording="Deteniendo la grabación..."
Basic.Main.StopStreaming="Detener Transmisión" Basic.Main.StopStreaming="Detener Transmisión"
Basic.Main.StoppingStreaming="Deteniendo la trasmisión..."
Basic.Main.ForceStopStreaming="Parar Transmisión (descartar retraso)" Basic.Main.ForceStopStreaming="Parar Transmisión (descartar retraso)"
Basic.MainMenu.File="&Archivo" Basic.MainMenu.File="&Archivo"
@ -287,6 +298,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="Mover a la &cima"
Basic.MainMenu.Edit.Order.MoveToBottom="Mover al &fondo" Basic.MainMenu.Edit.Order.MoveToBottom="Mover al &fondo"
Basic.MainMenu.Edit.AdvAudio="Propiedades de &Audio avanzadas" Basic.MainMenu.Edit.AdvAudio="Propiedades de &Audio avanzadas"
Basic.MainMenu.View="Vista"
Basic.MainMenu.View.Toolbars="&Barra de Herramientas"
Basic.MainMenu.View.Toolbars.Listboxes="&Cuadro de Lista"
Basic.MainMenu.View.SceneTransitions="&Transición de Escenas"
Basic.MainMenu.View.StatusBar="&Barra de Estado"
Basic.MainMenu.SceneCollection="&Colección de Escenas" Basic.MainMenu.SceneCollection="&Colección de Escenas"
Basic.MainMenu.Profile="&Perfil" Basic.MainMenu.Profile="&Perfil"
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="Tema"
Basic.Settings.General.Language="Idioma" Basic.Settings.General.Language="Idioma"
Basic.Settings.General.WarnBeforeStartingStream="Mostrar diálogo de confirmación cuando se inicia una transmisión" Basic.Settings.General.WarnBeforeStartingStream="Mostrar diálogo de confirmación cuando se inicia una transmisión"
Basic.Settings.General.WarnBeforeStoppingStream="Mostrar diálogo de confirmación cuando se para una transmisión" Basic.Settings.General.WarnBeforeStoppingStream="Mostrar diálogo de confirmación cuando se para una transmisión"
Basic.Settings.General.HideProjectorCursor="Ocultar el cursor sobre proyectores"
Basic.Settings.General.Snapping="Ajuste de alineación de la fuente" Basic.Settings.General.Snapping="Ajuste de alineación de la fuente"
Basic.Settings.General.ScreenSnapping="Ajustar las fuentes al borde de la pantalla" Basic.Settings.General.ScreenSnapping="Ajustar las fuentes al borde de la pantalla"
Basic.Settings.General.CenterSnapping="Ajustar las fuentes al centro horizontal y vertical" Basic.Settings.General.CenterSnapping="Ajustar las fuentes al centro horizontal y vertical"
Basic.Settings.General.SourceSnapping="Ajustar las fuentes a otras fuentes" Basic.Settings.General.SourceSnapping="Ajustar las fuentes a otras fuentes"
Basic.Settings.General.SnapDistance="Ajustar la sensibilidad" Basic.Settings.General.SnapDistance="Ajustar la sensibilidad"
Basic.Settings.General.RecordWhenStreaming="Grabar automáticamente cuando se transmite"
Basic.Settings.General.KeepRecordingWhenStreamStops="Mantener la grabación cuando se detiene la trasmision"
Basic.Settings.Stream="Emision" Basic.Settings.Stream="Emision"
Basic.Settings.Stream.StreamType="Tipo de Emision" Basic.Settings.Stream.StreamType="Tipo de Emision"
@ -431,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="Retraso de Pulsar para Hablar"
Basic.Settings.Audio.UnknownAudioDevice="[Dispositivo no conectado o no está disponible]" Basic.Settings.Audio.UnknownAudioDevice="[Dispositivo no conectado o no está disponible]"
Basic.Settings.Advanced="Avanzado" Basic.Settings.Advanced="Avanzado"
Basic.Settings.Advanced.General.ProcessPriority="Proceso prioritario"
Basic.Settings.Advanced.General.ProcessPriority.High="Alta"
Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="Mayor a Normal"
Basic.Settings.Advanced.General.ProcessPriority.Normal="Normal"
Basic.Settings.Advanced.General.ProcessPriority.Idle="Inactiva"
Basic.Settings.Advanced.FormatWarning="ADVERTENCIA: Formatos de Color que no sean NV12 están diseñados principalmente para la grabación y no se recomiendan al retransmitir. La retransmisión puede incurrir en mayor uso de la CPU debido a la conversión de formato de color." Basic.Settings.Advanced.FormatWarning="ADVERTENCIA: Formatos de Color que no sean NV12 están diseñados principalmente para la grabación y no se recomiendan al retransmitir. La retransmisión puede incurrir en mayor uso de la CPU debido a la conversión de formato de color."
Basic.Settings.Advanced.Audio.BufferingTime="Tiempo de búfer de audio" Basic.Settings.Advanced.Audio.BufferingTime="Tiempo de búfer de audio"
Basic.Settings.Advanced.Video.ColorFormat="Formato de color" Basic.Settings.Advanced.Video.ColorFormat="Formato de color"

255
obs/data/locale/et-EE.ini Normal file
View file

@ -0,0 +1,255 @@
Language="Eesti"
Region="Eesti"
OK="Olgu"
Apply="Rakenda"
Cancel="Loobu"
Close="Sulge"
Save="Salvesta"
Discard="Loobu muudatustest"
Disable="Välja lülitatud"
Yes="Jah"
No="Ei"
Add="Lisa"
Remove="Eemalda"
Rename="Nimeta ümber"
Interact="Kasuta"
Filters="Filtrid"
Properties="Omadused"
MoveUp="Liiguta üles"
MoveDown="Liiguta alla"
Settings="Sätted"
Display="Kuva"
Name="Nimi"
Exit="Välju"
Mixer="Mikser"
Browse="Sirvi"
Mono="Mono"
Stereo="Stereo"
DroppedFrames="Vahele jäetud kaadreid %1 (%2%)"
PreviewProjector="Projektor täisekraanil (eelvaade)"
SceneProjector="Projektor täisekraanil (stseen)"
SourceProjector="Projektor täisekraanil (allikas)"
Clear="Eemalda"
Revert="Tühista"
Show="Näita"
Hide="Peida"
Untitled="Nimetu"
New="Uus"
Duplicate="Tee koopia"
Enable="Sisse lülitatud"
DisableOSXVSync="Lülita OSX V-Sync välja"
ResetOSXVSyncOnExit="Lähtesta OSX V-Sync väljumisel"
HighResourceUsage="Kodeering on ülekoormatud! Proovi kasutada madalamaid videosätteid või kiiremaid kodeerimissätteid."
Transition="Üleminek"
QuickTransitions="Valitud üleminekud"
Left="Vasakult"
Right="Paremalt"
Top="Ülalt"
Bottom="Alt"
QuickTransitions.SwapScenes="Vaheta üleminekul eelvaade ja väljund"
QuickTransitions.SwapScenesTT="Vahetab pärast üleminekut eelvaate ja väljundi stseenid (kui väljundi esialgne stseen on veel olemas).\nEsialgsele stseenile tehtud muudatusi ei pöörata tagasi."
QuickTransitions.DuplicateScene="Tee stseenist koopia"
QuickTransitions.HotkeyName="Valitud üleminek: %1"
Basic.AddTransition="Lisa seadistatav üleminek"
Basic.RemoveTransition="Eemalda seadistatav üleminek"
Basic.TransitionProperties="Ülemineku omadused"
Basic.SceneTransitions="Stseeni üleminekud"
Basic.TransitionDuration="Kestus"
Basic.TogglePreviewProgramMode="Stuudiorežiim"
TransitionNameDlg.Text="Sisesta ülemineku nimi"
TransitionNameDlg.Title="Ülemineku nimi"
TitleBar.Profile="Profiil"
TitleBar.Scenes="Stseenid"
NameExists.Title="Nimi on juba kasutusel"
NameExists.Text="See nimi on juba kasutuses."
NoNameEntered.Title="Palun sisesta sobiv nimi"
NoNameEntered.Text="Tühja nime ei saa kasutada."
ConfirmStart.Title="Alustada voogedastusega?"
ConfirmStart.Text="Kas soovid kindlasti voogedastust alustada?"
ConfirmStop.Title="Lõpetada voogedastus?"
ConfirmStop.Text="Kas soovid kindlasti voogedastust lõpetada?"
ConfirmExit.Title="Kas väljuda OBS-ist?"
ConfirmExit.Text="OBS on hetkel aktiivne. Kõik voogedastused ja salvestused peatatakse. Kas soovid kindlasti väljuda?"
ConfirmRemove.Title="Ümbernimetamise kinnitamine"
ConfirmRemove.Text="Kas soovid kindlasti eemaldada '$1'?"
Output.ConnectFail.Title="Ühendamine ei õnnestunud"
Output.ConnectFail.BadPath="Vigane rada või ühenduse URL. Palun veendu, et valitud sätted on õiged."
Output.ConnectFail.ConnectFailed="Serveriga ühendamine ebaõnnestus"
LicenseAgreement.Exit="Välju"
Remux.SourceFile="OBS-i salvestus"
Remux.TargetFile="Sihtfail"
Remux.Remux="Konverteeri"
Remux.OBSRecording="OBS-i salvestus"
Remux.FinishedTitle="Konverteerimine valmis"
Remux.Finished="Salvestus on ümber kodeeritud"
Remux.FinishedError="Salvestus on ümber kodeeritud, aga fail võib olla poolik"
Remux.SelectRecording="Vali OBS-i salvestus…"
Remux.SelectTarget="Vali sihtfail…"
Remux.FileExistsTitle="Sihtfail on olemas"
Remux.FileExists="Sihtfail on juba olemas, kas soovid selle asendada?"
Remux.ExitUnfinishedTitle="Kodeerimine on pooleli"
Remux.ExitUnfinished="Kodeerimine ei ole veel lõpetatud. Kui kodeerimine peatada, siis võib sihtfail olla kasutuskõlbmatu.\nKas soovid kindlasti kodeerimise peatada?"
UpdateAvailable="Värskendus on saadaval"
UpdateAvailable.Text="Saadaval on version %1.%2.%3. <a href='%4'>Allalaadimiseks vajuta siia</a>"
Basic.DesktopDevice1="Töölaua heli"
Basic.DesktopDevice2="Töölaua heli 2"
Basic.Scene="Stseen"
Basic.Main.PreviewConextMenu.Enable="Lülita eelvaade sisse"
Basic.Main.AddSceneDlg.Title="Stseeni lisamine"
Basic.Main.AddSceneDlg.Text="Sisesta stseeni nimi"
Basic.Main.DefaultSceneName.Text="Stseen %1"
AddProfile.Title="Profiili lisamine"
AddProfile.Text="Sisesta uue profiili nimi"
RenameProfile.Title="Profiili ümbernimetamine"
Basic.Main.PreviewDisabled="Eelvaade on hetkel välja lülitatud"
Basic.SourceSelect="Loo/vali allikas"
Basic.SourceSelect.CreateNew="Loo uus"
Basic.SourceSelect.AddExisting="Lisa olemasolev"
Basic.SourceSelect.AddVisible="Tee allikas nähtavaks"
Basic.PropertiesWindow="'%1' omadused"
Basic.Filters="Filtrid"
Basic.Filters.AudioFilters="Helifiltrid"
Basic.Filters.AddFilter.Title="Filtri nimi"
Basic.TransformWindow.Rotation="Pööramine"
Basic.TransformWindow.Size="Suurus"
Basic.TransformWindow.Alignment="Joondamine"
Basic.TransformWindow.Crop="Kärbi"
Basic.TransformWindow.Alignment.TopLeft="Ülale vasakule"
Basic.TransformWindow.Alignment.TopCenter="Ülale keskele"
Basic.TransformWindow.Alignment.TopRight="Ülale paremale"
Basic.TransformWindow.Alignment.CenterLeft="Keskele vasakule"
Basic.TransformWindow.Alignment.Center="Keskele"
Basic.TransformWindow.Alignment.CenterRight="Keskele paremale"
Basic.TransformWindow.Alignment.BottomLeft="Alla vasakule"
Basic.TransformWindow.Alignment.BottomCenter="Alla keskele"
Basic.TransformWindow.Alignment.BottomRight="Alla paremale"
Basic.Main.AddSourceHelp.Title="Allikat ei saa lisada"
Basic.Main.AddSourceHelp.Text="Allika lisamiseks peab olema vähemalt üks stseen."
Basic.Main.Scenes="Stseenid"
Basic.Main.Sources="Allikad"
Basic.Main.Connecting="Ühendamine..."
Basic.Main.StartRecording="Alusta salvestamist"
Basic.Main.StartStreaming="Alusta voogedastust"
Basic.Main.StopRecording="Lõpeta salvestamine"
Basic.Main.StopStreaming="Lõpeta voogedastus"
Basic.MainMenu.File="&Fail"
Basic.MainMenu.File.Export="&Ekspordi"
Basic.MainMenu.File.Import="&Impordi"
Basic.MainMenu.File.ShowRecordings="Ava salvestuste kaust (&R)"
Basic.MainMenu.File.Settings="&Sätted"
Basic.MainMenu.File.ShowSettingsFolder="Ava sätete kaust"
Basic.MainMenu.File.ShowProfileFolder="Ava profiilide kaust"
Basic.MainMenu.AlwaysOnTop="&Alati pealmine"
Basic.MainMenu.File.Exit="Välju (&X)"
Basic.MainMenu.Edit="Muuda (&E)"
Basic.MainMenu.Edit.Undo="Võta tagasi (&U)"
Basic.MainMenu.Help.Logs="&Logifailid"
Basic.MainMenu.Help.CheckForUpdates="Otsi värskendusi"
Basic.Settings.General.Language="Keel"
Basic.Settings.Stream="Voogedastus"
Basic.Settings.Stream.StreamType="Voogedastuse tüüp"
Basic.Settings.Output="Väljund"
Basic.Settings.Output.Format="Salvestusvorming"
Basic.Settings.Output.SelectDirectory="Vali salvestuskaust"
Basic.Settings.Output.Mode="Väljundrežiim"
Basic.Settings.Output.Mode.Simple="Lihtne"
Basic.Settings.Output.Mode.Adv="Täpsemad seaded"
Basic.Settings.Output.Simple.Encoder.Software="Tarkvara (x264)"
Basic.Settings.Output.Simple.Encoder.Hardware.QSV="Riistvara (QSV)"
Basic.Settings.Output.Adv.AudioTrack="Helirada"
Basic.Settings.Output.Adv.Streaming="Voogedastus"
Basic.Settings.Output.Adv.Audio.Track1="Rada 1"
Basic.Settings.Output.Adv.Audio.Track2="Rada 2"
Basic.Settings.Output.Adv.Audio.Track3="Rada 3"
Basic.Settings.Output.Adv.Audio.Track4="Rada 4"
Basic.Settings.Output.Adv.Recording="Salvestus"
Basic.Settings.Output.Adv.Recording.Type="Tüüp"
Basic.Settings.Output.Adv.Recording.Filename="Failinime vorming"
Basic.Settings.Output.Adv.Recording.OverwriteIfExists="Kirjuta üle, kui fail on olemas"
Basic.Settings.Output.Adv.FFmpeg.Type="FFmpeg väljundi tüüp"
Basic.Settings.Output.Adv.FFmpeg.Type.URL="Kirjuta URL-ile"
Basic.Settings.Output.Adv.FFmpeg.Type.RecordToFile="Kirjuta faili"
Basic.Settings.Output.Adv.FFmpeg.SaveFilter.All="Kõik failid"
Basic.Settings.Output.Adv.FFmpeg.SavePathURL="Faili rada või URL"
Basic.Settings.Output.Adv.FFmpeg.FormatAudio="Heli"
Basic.Settings.Output.Adv.FFmpeg.FormatVideo="Video"
Basic.Settings.Output.Adv.FFmpeg.FormatDefault="Vaikevorming"
Basic.Settings.Video="Video"
Basic.Settings.Video.Adapter="Kuvaadapter:"
Basic.Settings.Video.Numerator="Lugeja:"
Basic.Settings.Video.Denominator="Nimetaja:"
Basic.Settings.Video.InvalidResolution="Eraldusvõime ei sobi. See peab olema kujul [width]x[height] (nt 1920x1080)"
Basic.Settings.Advanced.Video.ColorRange.Partial="Osaline"
Basic.Settings.Advanced.Video.ColorRange.Full="Täielik"
Basic.AdvAudio.Name="Nimi"
Basic.AdvAudio.Volume="Helitugevus (%)"
Basic.AdvAudio.AudioTracks="Rajad"
Hotkeys.Insert="Sisesta"
Hotkeys.Delete="Kustuta"

View file

@ -87,6 +87,7 @@ ConfirmExit.Text="OBS jardunean dago. Transmisio/grabazio guztiak itzaliko dira.
ConfirmRemove.Title="Baieztatu kentzea" ConfirmRemove.Title="Baieztatu kentzea"
ConfirmRemove.Text="Ziur zaude '$1' kendu nahi duzula?" ConfirmRemove.Text="Ziur zaude '$1' kendu nahi duzula?"
ConfirmRemove.TextMultiple="Seguru zaude %1 elementuak ezabatu nahi dituzula?"
Output.ConnectFail.Title="Huts egin du konektatzean" Output.ConnectFail.Title="Huts egin du konektatzean"
Output.ConnectFail.BadPath="Helburu edo konexio-URL okerra. Egiaztatu zure ezarpenak baliozkoak direla baieztatzeko." Output.ConnectFail.BadPath="Helburu edo konexio-URL okerra. Egiaztatu zure ezarpenak baliozkoak direla baieztatzeko."
@ -117,8 +118,8 @@ LicenseAgreement.Exit="Irten"
Remux.SourceFile="OBS Grabazioa" Remux.SourceFile="OBS Grabazioa"
Remux.TargetFile="Helburu-fitxategia" Remux.TargetFile="Helburu-fitxategia"
Remux.Remux="Bermultiplexatu" Remux.Remux="Multiplexatu"
Remux.OBSRecording="OBS Grabazioa" Remux.OBSRecording="OBS grabazioa"
Remux.FinishedTitle="Bihurketa amaituta" Remux.FinishedTitle="Bihurketa amaituta"
Remux.Finished="Grabazioa bihurtuta" Remux.Finished="Grabazioa bihurtuta"
Remux.FinishedError="Grabazioa bihurtua, baina fitxategia osatu gabe egon daiteke" Remux.FinishedError="Grabazioa bihurtua, baina fitxategia osatu gabe egon daiteke"
@ -126,7 +127,7 @@ Remux.SelectRecording="Hautatu OBS grabazioa…"
Remux.SelectTarget="Hautatu helburu-fitxategia…" Remux.SelectTarget="Hautatu helburu-fitxategia…"
Remux.FileExistsTitle="Helburu-fitxategia badago" Remux.FileExistsTitle="Helburu-fitxategia badago"
Remux.FileExists="Helburu-fitxategia badago, ordeztea nahi duzu?" Remux.FileExists="Helburu-fitxategia badago, ordeztea nahi duzu?"
Remux.ExitUnfinishedTitle="Bermultiplexaketa garatzen" Remux.ExitUnfinishedTitle="Multiplexazioa martxan"
Remux.ExitUnfinished="Bihurketa ez da amaitu, orain gelditzeak fitxategi-helburua erabiltezin bihur dezake.\nZiur zaude bihurtzea gelditu nahi duzula?" Remux.ExitUnfinished="Bihurketa ez da amaitu, orain gelditzeak fitxategi-helburua erabiltezin bihur dezake.\nZiur zaude bihurtzea gelditu nahi duzula?"
UpdateAvailable="Eguneraketa eskuragarria" UpdateAvailable="Eguneraketa eskuragarria"
@ -134,16 +135,22 @@ UpdateAvailable.Text="%1.%2.%3 bertsioa eskuragarri dago. <a href='%4'>Klikatu
Basic.DesktopDevice1="Mahaigaineko audioa" Basic.DesktopDevice1="Mahaigaineko audioa"
Basic.DesktopDevice2="Mahaigaineko audioa 2" Basic.DesktopDevice2="Mahaigaineko audioa 2"
Basic.AuxDevice1="Mik/Osag" Basic.AuxDevice1="Mikro/Osag"
Basic.AuxDevice2="Mik/Osag 2" Basic.AuxDevice2="Mikro/Osag 2"
Basic.AuxDevice3="Mik/Osag 3" Basic.AuxDevice3="Mik/Osag 3"
Basic.AuxDevice4="Mik/Osag 4" Basic.AuxDevice4="Mikro/Osag 4"
Basic.Scene="Eszena" Basic.Scene="Eszena"
Basic.DisplayCapture="Pantaila-kaptura" Basic.DisplayCapture="Pantaila-kaptura"
Basic.Main.PreviewConextMenu.Enable="Gaitu aurrebista" Basic.Main.PreviewConextMenu.Enable="Gaitu aurrebista"
ScaleFiltering="Eskalaren iragazketa"
ScaleFiltering.Point="Puntua"
ScaleFiltering.Bilinear="Bilineala"
ScaleFiltering.Bicubic="Bikubikoa"
ScaleFiltering.Lanczos="Lanczos"
Deinterlacing="Desgurutzelarkatzea" Deinterlacing="Desgurutzelarkatzea"
Deinterlacing.Discard="Baztertu" Deinterlacing.Discard="Baztertu"
Deinterlacing.Retro="Retro" Deinterlacing.Retro="Retro"
@ -186,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="Ezarpenak aldatuta"
Basic.PropertiesWindow.Confirm="Gorde gabeko aldaketak daude. Nahi duzu dagoena mantentzea?" Basic.PropertiesWindow.Confirm="Gorde gabeko aldaketak daude. Nahi duzu dagoena mantentzea?"
Basic.PropertiesWindow.NoProperties="Ezaugarriak ez daude eskuragarri" Basic.PropertiesWindow.NoProperties="Ezaugarriak ez daude eskuragarri"
Basic.PropertiesWindow.AddFiles="Gehitu fitxategiak" Basic.PropertiesWindow.AddFiles="Gehitu fitxategiak"
Basic.PropertiesWindow.AddDir="Gehitu direktorioa"
Basic.PropertiesWindow.AddURL="Gehitu bidea/URL-a" Basic.PropertiesWindow.AddURL="Gehitu bidea/URL-a"
Basic.PropertiesWindow.AddEditableListDir="Gehitu direktorioa '%1'-ra"
Basic.PropertiesWindow.AddEditableListFiles="Gehitu fitxategiak '%1'-ra" Basic.PropertiesWindow.AddEditableListFiles="Gehitu fitxategiak '%1'-ra"
Basic.PropertiesWindow.AddEditableListEntry="Gehitu sarrera '%1'-ra" Basic.PropertiesWindow.AddEditableListEntry="Gehitu sarrera '%1'-ra"
Basic.PropertiesWindow.EditEditableListEntry="Editatu sarrera '%1'-tik" Basic.PropertiesWindow.EditEditableListEntry="Editatu sarrera '%1'-tik"
@ -250,14 +259,16 @@ Basic.Main.Connecting="Konektatzen..."
Basic.Main.StartRecording="Hasi grabazioa" Basic.Main.StartRecording="Hasi grabazioa"
Basic.Main.StartStreaming="Hasi transmisioa" Basic.Main.StartStreaming="Hasi transmisioa"
Basic.Main.StopRecording="Gelditu grabazioa" Basic.Main.StopRecording="Gelditu grabazioa"
Basic.Main.StoppingRecording="Grabazioa gelditzen..."
Basic.Main.StopStreaming="Gelditu transmisioa" Basic.Main.StopStreaming="Gelditu transmisioa"
Basic.Main.StoppingStreaming="Transmisioa gelditzen..."
Basic.Main.ForceStopStreaming="Gelditu transmisioa (baztertu atzerapena)" Basic.Main.ForceStopStreaming="Gelditu transmisioa (baztertu atzerapena)"
Basic.MainMenu.File="&Fitxategia" Basic.MainMenu.File="&Fitxategia"
Basic.MainMenu.File.Export="&Esportatu" Basic.MainMenu.File.Export="&Esportatu"
Basic.MainMenu.File.Import="&Inportatu" Basic.MainMenu.File.Import="&Inportatu"
Basic.MainMenu.File.ShowRecordings="Erakutsi &Grabazioak" Basic.MainMenu.File.ShowRecordings="Erakutsi &grabazioak"
Basic.MainMenu.File.Remux="&Bermultiplexaketa Grabaketak" Basic.MainMenu.File.Remux="Multiplexatu grabazioak"
Basic.MainMenu.File.Settings="&Ezarpenak" Basic.MainMenu.File.Settings="&Ezarpenak"
Basic.MainMenu.File.ShowSettingsFolder="Erakutsi ezarpenen karpeta" Basic.MainMenu.File.ShowSettingsFolder="Erakutsi ezarpenen karpeta"
Basic.MainMenu.File.ShowProfileFolder="Erakutsi profilaren karpeta" Basic.MainMenu.File.ShowProfileFolder="Erakutsi profilaren karpeta"
@ -270,10 +281,10 @@ Basic.MainMenu.Edit.Redo="&Berregin"
Basic.MainMenu.Edit.UndoAction="&Desegin $1" Basic.MainMenu.Edit.UndoAction="&Desegin $1"
Basic.MainMenu.Edit.RedoAction="&Berregin $1" Basic.MainMenu.Edit.RedoAction="&Berregin $1"
Basic.MainMenu.Edit.Transform="&Eraldatu" Basic.MainMenu.Edit.Transform="&Eraldatu"
Basic.MainMenu.Edit.Transform.EditTransform="E&ditatu Eraldaketa..." Basic.MainMenu.Edit.Transform.EditTransform="E&ditatu eraldaketa..."
Basic.MainMenu.Edit.Transform.ResetTransform="&Berrezarri Eraldaketa" Basic.MainMenu.Edit.Transform.ResetTransform="&Berrezarri eraldaketa"
Basic.MainMenu.Edit.Transform.Rotate90CW="Biratu 90 gradu erlojuaren norabidean" Basic.MainMenu.Edit.Transform.Rotate90CW="Biratu 90 gradu erlojuaren norabidean"
Basic.MainMenu.Edit.Transform.Rotate90CCW="Itzulikatu 90 gradu erlojuaren kontrako norabidean" Basic.MainMenu.Edit.Transform.Rotate90CCW="Biratu 90 gradu erlojuaren kontrako norabidean"
Basic.MainMenu.Edit.Transform.Rotate180="Biratu 180 gradu" Basic.MainMenu.Edit.Transform.Rotate180="Biratu 180 gradu"
Basic.MainMenu.Edit.Transform.FlipHorizontal="Irauli &horizontala" Basic.MainMenu.Edit.Transform.FlipHorizontal="Irauli &horizontala"
Basic.MainMenu.Edit.Transform.FlipVertical="Irauli &bertikala" Basic.MainMenu.Edit.Transform.FlipVertical="Irauli &bertikala"
@ -287,11 +298,17 @@ Basic.MainMenu.Edit.Order.MoveToTop="Mugitu &goraino"
Basic.MainMenu.Edit.Order.MoveToBottom="Mugitu &beheraino" Basic.MainMenu.Edit.Order.MoveToBottom="Mugitu &beheraino"
Basic.MainMenu.Edit.AdvAudio="&Audio ezarpen aurreratuak" Basic.MainMenu.Edit.AdvAudio="&Audio ezarpen aurreratuak"
Basic.MainMenu.View="Ikusi"
Basic.MainMenu.View.Toolbars="&Tresna barrak"
Basic.MainMenu.View.Toolbars.Listboxes="&Zerrenda-kutxak"
Basic.MainMenu.View.SceneTransitions="&Eszenen trantsizioak"
Basic.MainMenu.View.StatusBar="Egoera-barra"
Basic.MainMenu.SceneCollection="&Eszena-bilduma" Basic.MainMenu.SceneCollection="&Eszena-bilduma"
Basic.MainMenu.Profile="&Profila" Basic.MainMenu.Profile="&Profila"
Basic.MainMenu.Help="&Laguntza" Basic.MainMenu.Help="&Laguntza"
Basic.MainMenu.Help.Website="Ikusi &Webgunea" Basic.MainMenu.Help.Website="Ikusi &webgunea"
Basic.MainMenu.Help.Logs="&Egunkari-fitxategiak" Basic.MainMenu.Help.Logs="&Egunkari-fitxategiak"
Basic.MainMenu.Help.Logs.ShowLogs="&Erakutsi egunkari-fitxategiak" Basic.MainMenu.Help.Logs.ShowLogs="&Erakutsi egunkari-fitxategiak"
Basic.MainMenu.Help.Logs.UploadCurrentLog="Kargatu &uneko egunkari-fitxategiak" Basic.MainMenu.Help.Logs.UploadCurrentLog="Kargatu &uneko egunkari-fitxategiak"
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="Gaia"
Basic.Settings.General.Language="Hizkuntza" Basic.Settings.General.Language="Hizkuntza"
Basic.Settings.General.WarnBeforeStartingStream="Erakutsi baieztapen elkarrizketa transmisioak hasterakoan" Basic.Settings.General.WarnBeforeStartingStream="Erakutsi baieztapen elkarrizketa transmisioak hasterakoan"
Basic.Settings.General.WarnBeforeStoppingStream="Erakutsi baieztapen elkarrizketa transmisioak gelditzerakoan" Basic.Settings.General.WarnBeforeStoppingStream="Erakutsi baieztapen elkarrizketa transmisioak gelditzerakoan"
Basic.Settings.General.HideProjectorCursor="Ezkutatu kurtsorea proiekzioetan"
Basic.Settings.General.Snapping="Iturburuaren lerrokatzearen doitzea" Basic.Settings.General.Snapping="Iturburuaren lerrokatzearen doitzea"
Basic.Settings.General.ScreenSnapping="Doitu iturburuak pantailaren ertzera" Basic.Settings.General.ScreenSnapping="Doitu iturburuak pantailaren ertzera"
Basic.Settings.General.CenterSnapping="Doitu iturburuak bertikalki eta horizontalki erdira" Basic.Settings.General.CenterSnapping="Doitu iturburuak bertikalki eta horizontalki erdira"
Basic.Settings.General.SourceSnapping="Doitu iturburuak beste iturburuetara" Basic.Settings.General.SourceSnapping="Doitu iturburuak beste iturburuetara"
Basic.Settings.General.SnapDistance="Doitu sentikortasuna" Basic.Settings.General.SnapDistance="Doitu sentikortasuna"
Basic.Settings.General.RecordWhenStreaming="Grabatu automatikoki transmisioa egitean"
Basic.Settings.General.KeepRecordingWhenStreamStops="Mantendu grabazioa transmisioa gelditzean"
Basic.Settings.Stream="Transmisioa" Basic.Settings.Stream="Transmisioa"
Basic.Settings.Stream.StreamType="Transmisio-mota" Basic.Settings.Stream.StreamType="Transmisio-mota"
@ -370,7 +390,7 @@ Basic.Settings.Output.Adv.Recording.Type.Standard="Estandarra"
Basic.Settings.Output.Adv.Recording.Type.FFmpegOutput="Irteera pertsonalizatua (FFmpeg)" Basic.Settings.Output.Adv.Recording.Type.FFmpegOutput="Irteera pertsonalizatua (FFmpeg)"
Basic.Settings.Output.Adv.Recording.UseStreamEncoder="(Erabili transmisio kodetzailea)" Basic.Settings.Output.Adv.Recording.UseStreamEncoder="(Erabili transmisio kodetzailea)"
Basic.Settings.Output.Adv.Recording.Filename="Fitxategi-izenaren formatua" Basic.Settings.Output.Adv.Recording.Filename="Fitxategi-izenaren formatua"
Basic.Settings.Output.Adv.Recording.OverwriteIfExists="Gainidatzi fitxategia badago" Basic.Settings.Output.Adv.Recording.OverwriteIfExists="Gainidatzi fitxategia"
Basic.Settings.Output.Adv.FFmpeg.Type="FFmpeg Irteera-mota" Basic.Settings.Output.Adv.FFmpeg.Type="FFmpeg Irteera-mota"
Basic.Settings.Output.Adv.FFmpeg.Type.URL="Irteera URL-ra" Basic.Settings.Output.Adv.FFmpeg.Type.URL="Irteera URL-ra"
Basic.Settings.Output.Adv.FFmpeg.Type.RecordToFile="Irteera fitxategira" Basic.Settings.Output.Adv.FFmpeg.Type.RecordToFile="Irteera fitxategira"
@ -431,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="Sakatu-hitz-egiteko atzerapena"
Basic.Settings.Audio.UnknownAudioDevice="[Gailua konektatu gabe edo ez dago eskuragarri]" Basic.Settings.Audio.UnknownAudioDevice="[Gailua konektatu gabe edo ez dago eskuragarri]"
Basic.Settings.Advanced="Aurreratua" Basic.Settings.Advanced="Aurreratua"
Basic.Settings.Advanced.General.ProcessPriority="Prozesuaren lehentasuna"
Basic.Settings.Advanced.General.ProcessPriority.High="Altua"
Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="Normala baino handiagoa"
Basic.Settings.Advanced.General.ProcessPriority.Normal="Normala"
Basic.Settings.Advanced.General.ProcessPriority.Idle="Inaktiboa"
Basic.Settings.Advanced.FormatWarning="Oharra: NV12 ez diren kolore formatuak grabaziorako dira gehienbat, eta ez daude gomendatuta transmisiorako. Transmisioak PUZ erabilpena handitu dezake kolore formatu bihurketa dela medio." Basic.Settings.Advanced.FormatWarning="Oharra: NV12 ez diren kolore formatuak grabaziorako dira gehienbat, eta ez daude gomendatuta transmisiorako. Transmisioak PUZ erabilpena handitu dezake kolore formatu bihurketa dela medio."
Basic.Settings.Advanced.Audio.BufferingTime="Audio bufferratze denbora" Basic.Settings.Advanced.Audio.BufferingTime="Audio bufferratze denbora"
Basic.Settings.Advanced.Video.ColorFormat="Kolore formatua" Basic.Settings.Advanced.Video.ColorFormat="Kolore formatua"

View file

@ -87,12 +87,13 @@ ConfirmExit.Text="OBS on aktiivinen. Kaikki lähetykset/tallennukset suljetaan.
ConfirmRemove.Title="Vahvista poisto" ConfirmRemove.Title="Vahvista poisto"
ConfirmRemove.Text="Haluatko varmasti poistaa '$1'?" ConfirmRemove.Text="Haluatko varmasti poistaa '$1'?"
ConfirmRemove.TextMultiple="Haluatko varmasti poistaa %1 kohdetta?"
Output.ConnectFail.Title="Yhdistäminen epäonnistui" Output.ConnectFail.Title="Yhdistäminen epäonnistui"
Output.ConnectFail.BadPath="Viallinen polku tai yhteysosoite. Tarkista, että asetuksesi ovat kunnossa." Output.ConnectFail.BadPath="Viallinen polku tai yhteysosoite. Tarkista, että asetuksesi ovat kunnossa."
Output.ConnectFail.ConnectFailed="Palvelimelle yhdistäminen epäonnistui" Output.ConnectFail.ConnectFailed="Palvelimelle yhdistäminen epäonnistui"
Output.ConnectFail.InvalidStream="Kanavaa tai lähetysavainta ei voida käyttää. Tarkista lähetysavain varmuuden vuoksi. Jos se kuitenkin on oikein, vika saattaa olla yhdistettävässä palvelimessa." Output.ConnectFail.InvalidStream="Kanavaa tai lähetysavainta ei voida käyttää. Tarkista lähetysavain varmuuden vuoksi. Jos se kuitenkin on oikein, vika saattaa olla yhdistettävässä palvelimessa."
Output.ConnectFail.Error="Odottamaton virhe ilmeni, kun palvelimelle yritettiin yhdistää. Lisää tietoa saat lokitiedostosta." Output.ConnectFail.Error="Odottamaton virhe ilmeni palvelimeen yhdistäessä. Lisää tietoa saat lokitiedostosta."
Output.ConnectFail.Disconnected="Yhteys palvelimeen katkaistiin." Output.ConnectFail.Disconnected="Yhteys palvelimeen katkaistiin."
Output.RecordFail.Title="Tallennuksen aloittaminen epäonnistui" Output.RecordFail.Title="Tallennuksen aloittaminen epäonnistui"
@ -127,7 +128,7 @@ Remux.SelectTarget="Valitse kohdetiedosto ..."
Remux.FileExistsTitle="Kohdetiedosto on jo olemassa" Remux.FileExistsTitle="Kohdetiedosto on jo olemassa"
Remux.FileExists="Kohdetiedosto on jo olemassa, haluatko korvata sen?" Remux.FileExists="Kohdetiedosto on jo olemassa, haluatko korvata sen?"
Remux.ExitUnfinishedTitle="Muunto on käynnissä" Remux.ExitUnfinishedTitle="Muunto on käynnissä"
Remux.ExitUnfinished="Muunto ei ole valmis. Jos keskeytät nyt, kohdetiedostosta saattaa tulla käyttökelvoton.\nHaluatko varmasti pysäyttää remuxauksen?" Remux.ExitUnfinished="Muunto ei ole valmis. Jos keskeytät nyt, kohdetiedostosta saattaa tulla käyttökelvoton.\nHaluatko varmasti pysäyttää muunnon?"
UpdateAvailable="Uusi päivitys saatavilla" UpdateAvailable="Uusi päivitys saatavilla"
UpdateAvailable.Text="Versio %1.%2.%3 on nyt saatavilla. <a href='%4'>Lataa tästä</a>" UpdateAvailable.Text="Versio %1.%2.%3 on nyt saatavilla. <a href='%4'>Lataa tästä</a>"
@ -140,10 +141,12 @@ Basic.AuxDevice3="Mic/Aux 3"
Basic.AuxDevice4="Mic/Aux 4" Basic.AuxDevice4="Mic/Aux 4"
Basic.Scene="Skene" Basic.Scene="Skene"
Basic.DisplayCapture="Kaappaa monitori" Basic.DisplayCapture="Monitori"
Basic.Main.PreviewConextMenu.Enable="Näytä esikatselu" Basic.Main.PreviewConextMenu.Enable="Näytä esikatselu"
ScaleFiltering="Asteikko suodatus"
Deinterlacing="Lomituksen poisto (Deinterlace)" Deinterlacing="Lomituksen poisto (Deinterlace)"
Deinterlacing.Discard="Ohita" Deinterlacing.Discard="Ohita"
Deinterlacing.Retro="Retro" Deinterlacing.Retro="Retro"
@ -186,7 +189,9 @@ Basic.PropertiesWindow.ConfirmTitle="Asetukset ovat muuttuneet"
Basic.PropertiesWindow.Confirm="Muutoksia ei ole vielä tallennettu. Haluatko pitää muutokset?" Basic.PropertiesWindow.Confirm="Muutoksia ei ole vielä tallennettu. Haluatko pitää muutokset?"
Basic.PropertiesWindow.NoProperties="Ominaisuuksia ei ole saatavilla" Basic.PropertiesWindow.NoProperties="Ominaisuuksia ei ole saatavilla"
Basic.PropertiesWindow.AddFiles="Lisää tiedostoja" Basic.PropertiesWindow.AddFiles="Lisää tiedostoja"
Basic.PropertiesWindow.AddDir="Lisää kansio"
Basic.PropertiesWindow.AddURL="Lisää polku/URL-osoite" Basic.PropertiesWindow.AddURL="Lisää polku/URL-osoite"
Basic.PropertiesWindow.AddEditableListDir="Lisää kansio \"%1\":n"
Basic.PropertiesWindow.AddEditableListFiles="Lisää tiedostoja '%1'" Basic.PropertiesWindow.AddEditableListFiles="Lisää tiedostoja '%1'"
Basic.PropertiesWindow.AddEditableListEntry="Lisää merkintä '%1'" Basic.PropertiesWindow.AddEditableListEntry="Lisää merkintä '%1'"
Basic.PropertiesWindow.EditEditableListEntry="Muokkaa merkintää '%1'" Basic.PropertiesWindow.EditEditableListEntry="Muokkaa merkintää '%1'"
@ -228,7 +233,7 @@ Basic.TransformWindow.Alignment.TopCenter="Yläkeski"
Basic.TransformWindow.Alignment.TopRight="Yläoikea" Basic.TransformWindow.Alignment.TopRight="Yläoikea"
Basic.TransformWindow.Alignment.CenterLeft="Keskivasen" Basic.TransformWindow.Alignment.CenterLeft="Keskivasen"
Basic.TransformWindow.Alignment.Center="Keskellä" Basic.TransformWindow.Alignment.Center="Keskellä"
Basic.TransformWindow.Alignment.CenterRight="Keskioieka" Basic.TransformWindow.Alignment.CenterRight="Keskioikea"
Basic.TransformWindow.Alignment.BottomLeft="Alavasen" Basic.TransformWindow.Alignment.BottomLeft="Alavasen"
Basic.TransformWindow.Alignment.BottomCenter="Alakeski" Basic.TransformWindow.Alignment.BottomCenter="Alakeski"
Basic.TransformWindow.Alignment.BottomRight="Alaoikea" Basic.TransformWindow.Alignment.BottomRight="Alaoikea"
@ -242,7 +247,7 @@ Basic.TransformWindow.BoundsType.ScaleToHeight="Skaalaa korkeuden rajoihin"
Basic.TransformWindow.BoundsType.Stretch="Venytä rajoihin" Basic.TransformWindow.BoundsType.Stretch="Venytä rajoihin"
Basic.Main.AddSourceHelp.Title="Lähdettä ei voi lisätä" Basic.Main.AddSourceHelp.Title="Lähdettä ei voi lisätä"
Basic.Main.AddSourceHelp.Text="Tarvitset vähintään yhden skenen, jotta voit lisätä lähteen." Basic.Main.AddSourceHelp.Text="Tarvitset vähintään yhden skenen lisätäksesi lähteen."
Basic.Main.Scenes="Skenet" Basic.Main.Scenes="Skenet"
Basic.Main.Sources="Lähteet" Basic.Main.Sources="Lähteet"
@ -250,7 +255,9 @@ Basic.Main.Connecting="Yhdistetään..."
Basic.Main.StartRecording="Aloita tallennus" Basic.Main.StartRecording="Aloita tallennus"
Basic.Main.StartStreaming="Aloita lähetys" Basic.Main.StartStreaming="Aloita lähetys"
Basic.Main.StopRecording="Pysäytä tallennus" Basic.Main.StopRecording="Pysäytä tallennus"
Basic.Main.StoppingRecording="Pysäytetään tallennusta..."
Basic.Main.StopStreaming="Pysäytä lähetys" Basic.Main.StopStreaming="Pysäytä lähetys"
Basic.Main.StoppingStreaming="Pysäytetään lähetystä..."
Basic.Main.ForceStopStreaming="Lopeta lähetys (ohita viive)" Basic.Main.ForceStopStreaming="Lopeta lähetys (ohita viive)"
Basic.MainMenu.File="&Tiedosto" Basic.MainMenu.File="&Tiedosto"
@ -272,9 +279,9 @@ Basic.MainMenu.Edit.RedoAction="T&ee uudelleen $1"
Basic.MainMenu.Edit.Transform="Muu&nna" Basic.MainMenu.Edit.Transform="Muu&nna"
Basic.MainMenu.Edit.Transform.EditTransform="M&uokkaa muunnosta..." Basic.MainMenu.Edit.Transform.EditTransform="M&uokkaa muunnosta..."
Basic.MainMenu.Edit.Transform.ResetTransform="&Nollaa muunnos" Basic.MainMenu.Edit.Transform.ResetTransform="&Nollaa muunnos"
Basic.MainMenu.Edit.Transform.Rotate90CW="Pyöritä 90 astetta myötäpäivään" Basic.MainMenu.Edit.Transform.Rotate90CW="Kierrä 90 astetta myötäpäivään"
Basic.MainMenu.Edit.Transform.Rotate90CCW="Pyöritä 90 astetta vastapäivään" Basic.MainMenu.Edit.Transform.Rotate90CCW="Kierrä 90 astetta vastapäivään"
Basic.MainMenu.Edit.Transform.Rotate180="Pyöritä 180 astetta" Basic.MainMenu.Edit.Transform.Rotate180="Kierrä 180 astetta"
Basic.MainMenu.Edit.Transform.FlipHorizontal="Käännä &vaakatasossa" Basic.MainMenu.Edit.Transform.FlipHorizontal="Käännä &vaakatasossa"
Basic.MainMenu.Edit.Transform.FlipVertical="Käännä &pystytasossa" Basic.MainMenu.Edit.Transform.FlipVertical="Käännä &pystytasossa"
Basic.MainMenu.Edit.Transform.FitToScreen="&Sovita ikkunaan" Basic.MainMenu.Edit.Transform.FitToScreen="&Sovita ikkunaan"
@ -287,6 +294,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="Siirrä &ylimmäksi"
Basic.MainMenu.Edit.Order.MoveToBottom="Siirrä &alimmaksi" Basic.MainMenu.Edit.Order.MoveToBottom="Siirrä &alimmaksi"
Basic.MainMenu.Edit.AdvAudio="&Äänen lisäominaisuudet" Basic.MainMenu.Edit.AdvAudio="&Äänen lisäominaisuudet"
Basic.MainMenu.View="&Näkymät"
Basic.MainMenu.View.Toolbars="&Työkalurivit"
Basic.MainMenu.View.Toolbars.Listboxes="&Luetteluruudut"
Basic.MainMenu.View.SceneTransitions="&Skene-siirtymät"
Basic.MainMenu.View.StatusBar="&Tilapalkki"
Basic.MainMenu.SceneCollection="&Skene-kokoelma" Basic.MainMenu.SceneCollection="&Skene-kokoelma"
Basic.MainMenu.Profile="&Profiili" Basic.MainMenu.Profile="&Profiili"
@ -296,10 +309,10 @@ Basic.MainMenu.Help.Logs="&Lokitiedostot"
Basic.MainMenu.Help.Logs.ShowLogs="&Näytä lokitiedostot" Basic.MainMenu.Help.Logs.ShowLogs="&Näytä lokitiedostot"
Basic.MainMenu.Help.Logs.UploadCurrentLog="Lähetä n&ykyinen lokitiedosto" Basic.MainMenu.Help.Logs.UploadCurrentLog="Lähetä n&ykyinen lokitiedosto"
Basic.MainMenu.Help.Logs.UploadLastLog="Lähetä edellinen lokitiedosto" Basic.MainMenu.Help.Logs.UploadLastLog="Lähetä edellinen lokitiedosto"
Basic.MainMenu.Help.Logs.ViewCurrentLog="&Katso nykyinen loki" Basic.MainMenu.Help.Logs.ViewCurrentLog="Näytä ny&kyinen loki"
Basic.MainMenu.Help.CheckForUpdates="Tarkista päivitykset" Basic.MainMenu.Help.CheckForUpdates="Tarkista päivitykset"
Basic.Settings.ProgramRestart="Ohjelma pitää käynnistää uudelleen, jotta asetukset tulevat voimaan." Basic.Settings.ProgramRestart="Ohjelma on käynnistettävä uudelleen, jotta asetukset tulevat voimaan."
Basic.Settings.ConfirmTitle="Vahvista muutokset" Basic.Settings.ConfirmTitle="Vahvista muutokset"
Basic.Settings.Confirm="Sinulla on tallentamattomia muutoksia. Tallennetaanko?" Basic.Settings.Confirm="Sinulla on tallentamattomia muutoksia. Tallennetaanko?"
@ -307,12 +320,14 @@ Basic.Settings.General="Yleiset"
Basic.Settings.General.Theme="Teema" Basic.Settings.General.Theme="Teema"
Basic.Settings.General.Language="Kieli" Basic.Settings.General.Language="Kieli"
Basic.Settings.General.WarnBeforeStartingStream="Näytä varmistus-ikkuna kun lähetys aloitetaan" Basic.Settings.General.WarnBeforeStartingStream="Näytä varmistus-ikkuna kun lähetys aloitetaan"
Basic.Settings.General.WarnBeforeStoppingStream="Näytä varmistusikkuna kun lähetys pysäytetään" Basic.Settings.General.WarnBeforeStoppingStream="Näytä varmistus-ikkuna kun lähetys pysäytetään"
Basic.Settings.General.Snapping="Lähteiden kiinnitys" Basic.Settings.General.Snapping="Lähteiden kiinnitys"
Basic.Settings.General.ScreenSnapping="Kiinnitä lähteitä ruudun reunaan" Basic.Settings.General.ScreenSnapping="Kiinnitä lähteitä ruudun reunaan"
Basic.Settings.General.CenterSnapping="Kiinnitä lähteitä vaaka- sekä pystysuunnan keskilinjaan" Basic.Settings.General.CenterSnapping="Kiinnitä lähteitä vaaka- sekä pystysuunnan keskilinjaan"
Basic.Settings.General.SourceSnapping="Kiinnitä lähteitä muihin lähteisiin" Basic.Settings.General.SourceSnapping="Kiinnitä lähteitä muihin lähteisiin"
Basic.Settings.General.SnapDistance="Kiinnityksen herkkyys" Basic.Settings.General.SnapDistance="Kiinnityksen herkkyys"
Basic.Settings.General.RecordWhenStreaming="Tallenna automaattisesti kun lähetetään"
Basic.Settings.General.KeepRecordingWhenStreamStops="Jatka tallennusta lähetyksen loputtua"
Basic.Settings.Stream="Lähetys" Basic.Settings.Stream="Lähetys"
Basic.Settings.Stream.StreamType="Lähetystyyppi" Basic.Settings.Stream.StreamType="Lähetystyyppi"
@ -329,10 +344,10 @@ Basic.Settings.Output.Mode.Adv="Kehittynyt"
Basic.Settings.Output.Mode.FFmpeg="FFmpeg ulostulo" Basic.Settings.Output.Mode.FFmpeg="FFmpeg ulostulo"
Basic.Settings.Output.Simple.SavePath="Tallennuksen polku" Basic.Settings.Output.Simple.SavePath="Tallennuksen polku"
Basic.Settings.Output.Simple.RecordingQuality="Tallennuksen laatu" Basic.Settings.Output.Simple.RecordingQuality="Tallennuksen laatu"
Basic.Settings.Output.Simple.RecordingQuality.Stream="Lähetyksen laatu" Basic.Settings.Output.Simple.RecordingQuality.Stream="Sama kuin lähetyksessä"
Basic.Settings.Output.Simple.RecordingQuality.Small="Korkea laatu, keskikokoinen tiedostokoko" Basic.Settings.Output.Simple.RecordingQuality.Small="Korkea laatu, keskikokoinen tiedostokoko"
Basic.Settings.Output.Simple.RecordingQuality.HQ="Erottamaton laatu, suuri tiedostokoko" Basic.Settings.Output.Simple.RecordingQuality.HQ="Erottamaton laatu, suuri tiedostokoko"
Basic.Settings.Output.Simple.RecordingQuality.Lossless="Häviötön laatu, jättimäinen tiedostokoko" Basic.Settings.Output.Simple.RecordingQuality.Lossless="Häviötön laatu, valtava tiedostokoko"
Basic.Settings.Output.Simple.Warn.VideoBitrate="Varoitus: Kuvan bitrate asetetaan arvoon %1, joka on yläraja valitsemassasi palvelussa. Jos haluat varmasti mennä %1:n yli, poista valinta lisäasetuksista kohdasta \"Rajoita bitrate lähetyspalvelun suosituksiin\"." Basic.Settings.Output.Simple.Warn.VideoBitrate="Varoitus: Kuvan bitrate asetetaan arvoon %1, joka on yläraja valitsemassasi palvelussa. Jos haluat varmasti mennä %1:n yli, poista valinta lisäasetuksista kohdasta \"Rajoita bitrate lähetyspalvelun suosituksiin\"."
Basic.Settings.Output.Simple.Warn.AudioBitrate="Varoitus: Äänen bitrate asetetaan arvoon %1, joka on yläraja valitsemassasi palvelussa. Jos haluat varmasti mennä %1:n yli, poista valinta lisäasetuksista kohdasta \"Rajoita bitrate lähetyspalvelun suosituksiin\"." Basic.Settings.Output.Simple.Warn.AudioBitrate="Varoitus: Äänen bitrate asetetaan arvoon %1, joka on yläraja valitsemassasi palvelussa. Jos haluat varmasti mennä %1:n yli, poista valinta lisäasetuksista kohdasta \"Rajoita bitrate lähetyspalvelun suosituksiin\"."
Basic.Settings.Output.Simple.Warn.Encoder="Varoitus: Tallentaminen lähetyksestä eroavalla laadulla vaatii prosessorilta lisätyötä jos lähetät ja tallennat samanaikaisesti." Basic.Settings.Output.Simple.Warn.Encoder="Varoitus: Tallentaminen lähetyksestä eroavalla laadulla vaatii prosessorilta lisätyötä jos lähetät ja tallennat samanaikaisesti."
@ -340,20 +355,20 @@ Basic.Settings.Output.Simple.Warn.Lossless="Varoitus: Häviötön laatu luo jär
Basic.Settings.Output.Simple.Warn.Lossless.Msg="Haluatko varmasti käyttää häviötöntä laatua?" Basic.Settings.Output.Simple.Warn.Lossless.Msg="Haluatko varmasti käyttää häviötöntä laatua?"
Basic.Settings.Output.Simple.Warn.Lossless.Title="Häviötön laatu!" Basic.Settings.Output.Simple.Warn.Lossless.Title="Häviötön laatu!"
Basic.Settings.Output.Simple.Warn.MultipleQSV="Varoitus: Et voi käyttää useampaa QSV-enkooderia lähettäessä ja tallentaessa samaan aikaan. Jos haluat tehdä molempia yhtä aikaa, vaihda lähetys tai tallennus-enkooderi." Basic.Settings.Output.Simple.Warn.MultipleQSV="Varoitus: Et voi käyttää useampaa QSV-enkooderia lähettäessä ja tallentaessa samaan aikaan. Jos haluat tehdä molempia yhtä aikaa, vaihda lähetys tai tallennus-enkooderi."
Basic.Settings.Output.Simple.Encoder.Software="Software (x264)" Basic.Settings.Output.Simple.Encoder.Software="Ohjelmistopohjainen (x264)"
Basic.Settings.Output.Simple.Encoder.Hardware.QSV="Laitteisto (QSV)" Basic.Settings.Output.Simple.Encoder.Hardware.QSV="Laitteistopohjainen (QSV)"
Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="Laitteisto (NVENC)" Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="Laitteistopohjainen (NVENC)"
Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Software (x264 matala CPU-käyttö, lisää tiedostokokoa)" Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Ohjelmistopohjainen (x264 matala CPU-käyttö, lisää tiedostokokoa)"
Basic.Settings.Output.VideoBitrate="Kuvan bitrate" Basic.Settings.Output.VideoBitrate="Kuvan bitrate"
Basic.Settings.Output.AudioBitrate="Äänen bitrate" Basic.Settings.Output.AudioBitrate="Äänen bitrate"
Basic.Settings.Output.Reconnect="Automaattinen uudelleenyhdistys" Basic.Settings.Output.Reconnect="Automaattinen uudelleenyhdistys"
Basic.Settings.Output.RetryDelay="Uudelleenyrityksen viive (sekunteja)" Basic.Settings.Output.RetryDelay="Uudelleenyrityksen viive (sekunteja)"
Basic.Settings.Output.MaxRetries="Uudelleenyhdistyksien määrä" Basic.Settings.Output.MaxRetries="Uudelleenyhdistyksien määrä"
Basic.Settings.Output.Advanced="Käytä enkooderin lisäasetuksia" Basic.Settings.Output.Advanced="Käytä enkooderin lisäasetuksia"
Basic.Settings.Output.EncoderPreset="Enkooderin asetus (korkeampi lisää tehon kulutusta)" Basic.Settings.Output.EncoderPreset="Enkooderin asetus (hitaampi asetus lisää suorittimen käyttöä)"
Basic.Settings.Output.CustomEncoderSettings="Valinnaiset enkooderiasetukset" Basic.Settings.Output.CustomEncoderSettings="Valinnaiset enkooderin asetukset"
Basic.Settings.Output.CustomMuxerSettings="Valinnaiset muuntaja-asetukset" Basic.Settings.Output.CustomMuxerSettings="Valinnaiset muuntajan asetukset"
Basic.Settings.Output.NoSpaceFileName="Generoi tiedostonimi ilman välilyöntejä" Basic.Settings.Output.NoSpaceFileName="Luo tiedostonimi ilman välilyöntejä"
Basic.Settings.Output.Adv.Rescale="Uudelleenskaalaa ulostulo" Basic.Settings.Output.Adv.Rescale="Uudelleenskaalaa ulostulo"
Basic.Settings.Output.Adv.AudioTrack="Ääniraita" Basic.Settings.Output.Adv.AudioTrack="Ääniraita"
@ -382,23 +397,23 @@ Basic.Settings.Output.Adv.FFmpeg.FormatAudio="Ääni"
Basic.Settings.Output.Adv.FFmpeg.FormatVideo="Kuva" Basic.Settings.Output.Adv.FFmpeg.FormatVideo="Kuva"
Basic.Settings.Output.Adv.FFmpeg.FormatDefault="Oletusmuoto" Basic.Settings.Output.Adv.FFmpeg.FormatDefault="Oletusmuoto"
Basic.Settings.Output.Adv.FFmpeg.FormatDesc="Säiliömuodon kuvaus" Basic.Settings.Output.Adv.FFmpeg.FormatDesc="Säiliömuodon kuvaus"
Basic.Settings.Output.Adv.FFmpeg.FormatDescDef="Ääni/Kuva koodekki arvataan tiedostopäätteen tai osoitteen perusteella" Basic.Settings.Output.Adv.FFmpeg.FormatDescDef="Ääni/Kuva koodekki päätellään tiedostopäätteen tai osoitteen perusteella"
Basic.Settings.Output.Adv.FFmpeg.AVEncoderDefault="Oletus" Basic.Settings.Output.Adv.FFmpeg.AVEncoderDefault="Oletus"
Basic.Settings.Output.Adv.FFmpeg.AVEncoderDisable="Poista enkooderi käytöstä" Basic.Settings.Output.Adv.FFmpeg.AVEncoderDisable="Poista enkooderi käytöstä"
Basic.Settings.Output.Adv.FFmpeg.VEncoder="Videoenkooderi" Basic.Settings.Output.Adv.FFmpeg.VEncoder="Videoenkooderi"
Basic.Settings.Output.Adv.FFmpeg.VEncoderSettings="Video-enkooderin asetukset" Basic.Settings.Output.Adv.FFmpeg.VEncoderSettings="Videoenkooderin asetukset"
Basic.Settings.Output.Adv.FFmpeg.AEncoder="Äänienkooderi" Basic.Settings.Output.Adv.FFmpeg.AEncoder="Äänienkooderi"
Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Ääni-enkooderin asetukset" Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Äänienkooderin asetukset"
Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="Mukserin asetukset" Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="Muunnon asetukset"
FilenameFormatting.completer="%CCYY-%MM-%DD %hh-%mm-%ss\n%YY-%MM-%DD %hh-%mm-%ss\n%Y-%m-%d %H-%M-%S\n%y-%m-%d %H-%M-%S\n%a %Y-%m-%d %H-%M-%S\n%A %Y-%m-%d %H-%M-%S\n%Y-%b-%d %H-%M-%S\n%Y-%B-%d %H-%M-%S\n%Y-%m-%d %I-%M-%S-%p\n%Y-%m-%d %H-%M-%S-%z\n%Y-%m-%d %H-%M-%S-%Z" FilenameFormatting.completer="%CCYY-%MM-%DD %hh-%mm-%ss\n%YY-%MM-%DD %hh-%mm-%ss\n%Y-%m-%d %H-%M-%S\n%y-%m-%d %H-%M-%S\n%a %Y-%m-%d %H-%M-%S\n%A %Y-%m-%d %H-%M-%S\n%Y-%b-%d %H-%M-%S\n%Y-%B-%d %H-%M-%S\n%Y-%m-%d %I-%M-%S-%p\n%Y-%m-%d %H-%M-%S-%z\n%Y-%m-%d %H-%M-%S-%Z"
FilenameFormatting.TT="%CCYY vuosi, neljä digits\n%YY vuoden kaksi viimeistä numeroa (00-99)\n%MM kuukauden desimaalin numero (01-12) \n%DD nolla-pehmustettu kuukauden päivänä (01-31)\n%hh Fi 24h muodossa (00-23)\n%mm minuutin (00-59) \n%ss toinen (00-61) \n%% A % sign\n%a Abbreviated arkipäivä name\n%A koko päivän name\n%b Abbreviated kuukauden name\n%B Kuukauden koko kuukauden, päivän name\n%d nolla-pehmustettu (01-31)\n%H tunnin 24h muodossa (00-23) \n%I Fi 12h muodossa (01-12)\n%m kuukauden desimaalilukuna (01-12)\n%M minuutin (00-59) \n%p AM tai PM designation\n%S toinen (00-61)\n%y vuoden kaksi viimeistä numeroa (00-99)\n%Y Year\n%z ISO 8601 offset UTC tai timezone\n tai abbreviation\n%Z Aikavyöhykkeen nimi tai abbreviation\n" FilenameFormatting.TT="%CCYY vuosi, neljä numeroa\n%YY Vuosi, kaksi viimeistä numeroa (00-99)\n%MM Kuukausi, kymmenlukuna (01-12) \n%DD Päivä, nolla-etuliitteellä (01-31)\n%hh Tunti, 24-tunnin muodossa (00-23)\n%mm Minuutti (00-59) \n%ss Sekunti (00-61) \n%% %-merkki\n%a Lyhennetty viikonpäivän nimi\n%A Täysi viikonpäivän nimi\n%b Lyhennetty kuukauden nimi\n%B Täysi kuukauden nimi\n%d Kuukauden päivä, nolla-etuliitteellä (01-31)\n%H Tunti, 24-tunnin muodossa (00-23) \n%I Tunti, 12-tunnin muodossa (01-12)\n%m Kuukausi, kymmenlukuna (01-12)\n%M Minuutti (00-59) \n%p AM tai PM merkintä\n%S Sekunti (00-61)\n%y Vuosi, kaksi viimeistä numeroa (00-99)\n%Y Vuosi\n%z ISO 8601 standardin mukainen ajan esittämistapa, UTC tai aikavyöhykkeestä\n Nimi tai lyhennne\n%Z Aikavyöhykkeen nimi tai lyhenne\n"
Basic.Settings.Video="Kuva" Basic.Settings.Video="Kuva"
Basic.Settings.Video.Adapter="Näytönohjain:" Basic.Settings.Video.Adapter="Näytönohjain:"
Basic.Settings.Video.BaseResolution="Piirtoalueen resoluutio:" Basic.Settings.Video.BaseResolution="Piirtoalueen resoluutio:"
Basic.Settings.Video.ScaledResolution="Skaalattu resoluutio:" Basic.Settings.Video.ScaledResolution="Ulostulon (skaalattu) resoluutio:"
Basic.Settings.Video.DownscaleFilter="Skaalaussuodatin:" Basic.Settings.Video.DownscaleFilter="Skaalaussuodatin:"
Basic.Settings.Video.DisableAeroWindows="Poista Aero käytöstä (Vain Windows)" Basic.Settings.Video.DisableAeroWindows="Poista Aero käytöstä (Vain Windows)"
Basic.Settings.Video.FPS="FPS:" Basic.Settings.Video.FPS="FPS:"
@ -412,7 +427,7 @@ Basic.Settings.Video.InvalidResolution="Vialliset resoluution asetus. Muodon pi
Basic.Settings.Video.CurrentlyActive="Kuvan ulostulo on tällä hetkellä käytössä. Kytke pois kaikki ulostulot vaihtaaksesi kuva-asetuksia." Basic.Settings.Video.CurrentlyActive="Kuvan ulostulo on tällä hetkellä käytössä. Kytke pois kaikki ulostulot vaihtaaksesi kuva-asetuksia."
Basic.Settings.Video.DisableAero="Poista Aero käytöstä" Basic.Settings.Video.DisableAero="Poista Aero käytöstä"
Basic.Settings.Video.DownscaleFilter.Bilinear="Bilinear (nopein, sumeutuu skaalattaessa)" Basic.Settings.Video.DownscaleFilter.Bilinear="Bilinear (nopein, mutta epätarkka skaalattaessa)"
Basic.Settings.Video.DownscaleFilter.Bicubic="Bicubic (Terävöity skaalaus, 16 näytettä)" Basic.Settings.Video.DownscaleFilter.Bicubic="Bicubic (Terävöity skaalaus, 16 näytettä)"
Basic.Settings.Video.DownscaleFilter.Lanczos="Lanczos (Terävöity skaalaus, 32 näytettä)" Basic.Settings.Video.DownscaleFilter.Lanczos="Lanczos (Terävöity skaalaus, 32 näytettä)"
@ -424,16 +439,21 @@ Basic.Settings.Audio.DesktopDevice2="Äänentoistolaite 2"
Basic.Settings.Audio.AuxDevice="Mic/Aux -äänilaite" Basic.Settings.Audio.AuxDevice="Mic/Aux -äänilaite"
Basic.Settings.Audio.AuxDevice2="Mic/Aux -äänilaite 2" Basic.Settings.Audio.AuxDevice2="Mic/Aux -äänilaite 2"
Basic.Settings.Audio.AuxDevice3="Mic/Aux -äänilaite 3" Basic.Settings.Audio.AuxDevice3="Mic/Aux -äänilaite 3"
Basic.Settings.Audio.EnablePushToMute="Käytä Push-to-mute" Basic.Settings.Audio.EnablePushToMute="Ota Push-to-mute käyttöön"
Basic.Settings.Audio.PushToMuteDelay="Push-to-mute viive" Basic.Settings.Audio.PushToMuteDelay="Push-to-muten viive"
Basic.Settings.Audio.EnablePushToTalk="Käytä Push-to-talk" Basic.Settings.Audio.EnablePushToTalk="Ota Push-to-talk käyttöön"
Basic.Settings.Audio.PushToTalkDelay="Push-to-talk viive" Basic.Settings.Audio.PushToTalkDelay="Push-to-talkin viive"
Basic.Settings.Audio.UnknownAudioDevice="[Laitetta ei ole yhdistetty tai se ei ole saatavissa]" Basic.Settings.Audio.UnknownAudioDevice="[Laitetta ei ole yhdistetty tai se ei ole saatavissa]"
Basic.Settings.Advanced="Lisäasetukset" Basic.Settings.Advanced="Lisäasetukset"
Basic.Settings.Advanced.FormatWarning="Varoitus: Muut väriformaatit kuin NV12, ovat tarkoitettuja tallentamiseen eikä niitä suositella lähetyksiin. Lähetykset saattavat johtaa suurempaan CPU:n kulutukseen väriformaatin muutoksen vuoksi." Basic.Settings.Advanced.General.ProcessPriority="Prosessin prioriteetti"
Basic.Settings.Advanced.General.ProcessPriority.High="Suuri"
Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="Suurempi kuin normaali"
Basic.Settings.Advanced.General.ProcessPriority.Normal="Normaali"
Basic.Settings.Advanced.General.ProcessPriority.Idle="Pieni"
Basic.Settings.Advanced.FormatWarning="Varoitus: Muut kuin NV12 väriformaatit ovat tarkoitettuja tallentamiseen, eikä niitä suositella lähettämiseen. Väriformaation konversio saattaa johtaa korkeampaan suorittimen käyttöön lähettämisessä."
Basic.Settings.Advanced.Audio.BufferingTime="Äänen puskurointiaika" Basic.Settings.Advanced.Audio.BufferingTime="Äänen puskurointiaika"
Basic.Settings.Advanced.Video.ColorFormat="Värimuoto" Basic.Settings.Advanced.Video.ColorFormat="Väriformaatti"
Basic.Settings.Advanced.Video.ColorSpace="YUV väriavaruus" Basic.Settings.Advanced.Video.ColorSpace="YUV väriavaruus"
Basic.Settings.Advanced.Video.ColorRange="YUV värialue" Basic.Settings.Advanced.Video.ColorRange="YUV värialue"
Basic.Settings.Advanced.Video.ColorRange.Partial="Osittainen" Basic.Settings.Advanced.Video.ColorRange.Partial="Osittainen"
@ -448,7 +468,7 @@ Basic.AdvAudio.Name="Nimi"
Basic.AdvAudio.Volume="Äänenvoimakkuus (%)" Basic.AdvAudio.Volume="Äänenvoimakkuus (%)"
Basic.AdvAudio.Mono="Miksaa yksikanavaiseksi" Basic.AdvAudio.Mono="Miksaa yksikanavaiseksi"
Basic.AdvAudio.Panning="Balanssi" Basic.AdvAudio.Panning="Balanssi"
Basic.AdvAudio.SyncOffset="Sync Offset (ms)" Basic.AdvAudio.SyncOffset="Synkronoinnin viivästys (ms)"
Basic.AdvAudio.AudioTracks="Raidat" Basic.AdvAudio.AudioTracks="Raidat"
Basic.Settings.Hotkeys="Pikanäppäimet" Basic.Settings.Hotkeys="Pikanäppäimet"

View file

@ -87,6 +87,7 @@ ConfirmExit.Text="OBS est actuellement actif. Tous les streams/enregistrements
ConfirmRemove.Title="Confirmer la suppression" ConfirmRemove.Title="Confirmer la suppression"
ConfirmRemove.Text="Êtes-vous sûr de vouloir supprimer « $1 » ?" ConfirmRemove.Text="Êtes-vous sûr de vouloir supprimer « $1 » ?"
ConfirmRemove.TextMultiple="Voulez-vous vraiment supprimer %1 éléments ?"
Output.ConnectFail.Title="Échec de la connexion" Output.ConnectFail.Title="Échec de la connexion"
Output.ConnectFail.BadPath="Adresse de connexion ou chemin invalide. Veuillez vérifier vos paramètres afin de confirmer leur validité." Output.ConnectFail.BadPath="Adresse de connexion ou chemin invalide. Veuillez vérifier vos paramètres afin de confirmer leur validité."
@ -144,6 +145,12 @@ Basic.DisplayCapture="Afficher la capture"
Basic.Main.PreviewConextMenu.Enable="Activer l'aperçu" Basic.Main.PreviewConextMenu.Enable="Activer l'aperçu"
ScaleFiltering="Échelle de filtrage"
ScaleFiltering.Point="Point"
ScaleFiltering.Bilinear="Bilinéaire"
ScaleFiltering.Bicubic="Bicubique"
ScaleFiltering.Lanczos="Lanczos"
Deinterlacing="Désentrelacement" Deinterlacing="Désentrelacement"
Deinterlacing.Discard="Abandonner" Deinterlacing.Discard="Abandonner"
Deinterlacing.Retro="Rétro" Deinterlacing.Retro="Rétro"
@ -186,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="Paramètres modifiés"
Basic.PropertiesWindow.Confirm="Des modifications n'ont pas été enregistrées. Voulez-vous les conserver ?" Basic.PropertiesWindow.Confirm="Des modifications n'ont pas été enregistrées. Voulez-vous les conserver ?"
Basic.PropertiesWindow.NoProperties="Aucune propriété disponible" Basic.PropertiesWindow.NoProperties="Aucune propriété disponible"
Basic.PropertiesWindow.AddFiles="Ajouter des fichiers" Basic.PropertiesWindow.AddFiles="Ajouter des fichiers"
Basic.PropertiesWindow.AddDir="Ajouter un répertoire"
Basic.PropertiesWindow.AddURL="Ajouter un chemin/URL" Basic.PropertiesWindow.AddURL="Ajouter un chemin/URL"
Basic.PropertiesWindow.AddEditableListDir="Ajouter un répertoire à '%1'"
Basic.PropertiesWindow.AddEditableListFiles="Ajouter des fichiers à '%1'" Basic.PropertiesWindow.AddEditableListFiles="Ajouter des fichiers à '%1'"
Basic.PropertiesWindow.AddEditableListEntry="Ajouter une entrée à '%1'" Basic.PropertiesWindow.AddEditableListEntry="Ajouter une entrée à '%1'"
Basic.PropertiesWindow.EditEditableListEntry="Éditer l'entrée de '%1'" Basic.PropertiesWindow.EditEditableListEntry="Éditer l'entrée de '%1'"
@ -200,10 +209,10 @@ Basic.InteractionWindow="Intéragir avec '%1'"
Basic.StatusBar.Reconnecting="Déconnecté, reconnexion dans %2 seconde(s) (tentative n° %1)" Basic.StatusBar.Reconnecting="Déconnecté, reconnexion dans %2 seconde(s) (tentative n° %1)"
Basic.StatusBar.AttemptingReconnect="Tentative de reconnexion... (tentative n° %1)" Basic.StatusBar.AttemptingReconnect="Tentative de reconnexion... (tentative n° %1)"
Basic.StatusBar.ReconnectSuccessful="Reconnexion réussie" Basic.StatusBar.ReconnectSuccessful="Reconnexion réussie"
Basic.StatusBar.Delay="Délai (%1 s)" Basic.StatusBar.Delay="Retard (%1 s)"
Basic.StatusBar.DelayStartingIn="Délai (commence dans %1 s)" Basic.StatusBar.DelayStartingIn="Retard (commence dans %1 s)"
Basic.StatusBar.DelayStoppingIn="Délai (s'arrête dans %1 s)" Basic.StatusBar.DelayStoppingIn="Retard (s'arrête dans %1 s)"
Basic.StatusBar.DelayStartingStoppingIn="Délai (s'arrête dans %1 s, commence dans %2 s)" Basic.StatusBar.DelayStartingStoppingIn="Retard (s'arrête dans %1 s, commence dans %2 s)"
Basic.Filters="Filtres" Basic.Filters="Filtres"
Basic.Filters.AsyncFilters="Filtres audio/vidéo" Basic.Filters.AsyncFilters="Filtres audio/vidéo"
@ -250,8 +259,10 @@ Basic.Main.Connecting="Connexion en cours..."
Basic.Main.StartRecording="Démarrer l'enregistrement" Basic.Main.StartRecording="Démarrer l'enregistrement"
Basic.Main.StartStreaming="Commencer le streaming" Basic.Main.StartStreaming="Commencer le streaming"
Basic.Main.StopRecording="Arrêter l'enregistrement" Basic.Main.StopRecording="Arrêter l'enregistrement"
Basic.Main.StoppingRecording="Arrêt de l'enregistrement..."
Basic.Main.StopStreaming="Arrêter le streaming" Basic.Main.StopStreaming="Arrêter le streaming"
Basic.Main.ForceStopStreaming="Arrêter le streaming (annule le délai)" Basic.Main.StoppingStreaming="Arrêt du stream..."
Basic.Main.ForceStopStreaming="Arrêter le streaming (annule le retard)"
Basic.MainMenu.File="&Fichier" Basic.MainMenu.File="&Fichier"
Basic.MainMenu.File.Export="&Exporter" Basic.MainMenu.File.Export="&Exporter"
@ -287,6 +298,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="Déplacer tout en &haut"
Basic.MainMenu.Edit.Order.MoveToBottom="Déplacer tout en &bas" Basic.MainMenu.Edit.Order.MoveToBottom="Déplacer tout en &bas"
Basic.MainMenu.Edit.AdvAudio="Propriétés audio &avancées" Basic.MainMenu.Edit.AdvAudio="Propriétés audio &avancées"
Basic.MainMenu.View="&Afficher"
Basic.MainMenu.View.Toolbars="&Barres d'outils"
Basic.MainMenu.View.Toolbars.Listboxes="&Listes"
Basic.MainMenu.View.SceneTransitions="&Transition de scènes"
Basic.MainMenu.View.StatusBar="&Barre d'état"
Basic.MainMenu.SceneCollection="Collection de &scènes" Basic.MainMenu.SceneCollection="Collection de &scènes"
Basic.MainMenu.Profile="&Profil" Basic.MainMenu.Profile="&Profil"
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="Thème"
Basic.Settings.General.Language="Langue" Basic.Settings.General.Language="Langue"
Basic.Settings.General.WarnBeforeStartingStream="Afficher une boîte de dialogue de confirmation au démarrage d'un stream" Basic.Settings.General.WarnBeforeStartingStream="Afficher une boîte de dialogue de confirmation au démarrage d'un stream"
Basic.Settings.General.WarnBeforeStoppingStream="Afficher une boîte de dialogue de confirmation à l'arrêt d'un stream" Basic.Settings.General.WarnBeforeStoppingStream="Afficher une boîte de dialogue de confirmation à l'arrêt d'un stream"
Basic.Settings.General.HideProjectorCursor="Cacher le curseur sur les projecteurs"
Basic.Settings.General.Snapping="Déclenchement d'alignement des sources" Basic.Settings.General.Snapping="Déclenchement d'alignement des sources"
Basic.Settings.General.ScreenSnapping="Déclencher avec les bords de l'écran" Basic.Settings.General.ScreenSnapping="Déclencher avec les bords de l'écran"
Basic.Settings.General.CenterSnapping="Déclencher avec le centre de l'écran" Basic.Settings.General.CenterSnapping="Déclencher avec le centre de l'écran"
Basic.Settings.General.SourceSnapping="Déclencher avec d'autres sources" Basic.Settings.General.SourceSnapping="Déclencher avec d'autres sources"
Basic.Settings.General.SnapDistance="Sensibilité du déclenchement" Basic.Settings.General.SnapDistance="Sensibilité du déclenchement"
Basic.Settings.General.RecordWhenStreaming="Enregistrer automatiquement lors d'un stream"
Basic.Settings.General.KeepRecordingWhenStreamStops="Continuer à enregistrer lorsque le stream sarrête"
Basic.Settings.Stream="Flux" Basic.Settings.Stream="Flux"
Basic.Settings.Stream.StreamType="Type de diffusion" Basic.Settings.Stream.StreamType="Type de diffusion"
@ -431,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="Délai du Push-to-talk"
Basic.Settings.Audio.UnknownAudioDevice="[Périphérique non connecté ou non disponible]" Basic.Settings.Audio.UnknownAudioDevice="[Périphérique non connecté ou non disponible]"
Basic.Settings.Advanced="Avancé" Basic.Settings.Advanced="Avancé"
Basic.Settings.Advanced.General.ProcessPriority="Priorité du processus"
Basic.Settings.Advanced.General.ProcessPriority.High="Haute"
Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="Supérieure à la normale"
Basic.Settings.Advanced.General.ProcessPriority.Normal="Normale"
Basic.Settings.Advanced.General.ProcessPriority.Idle="Basse"
Basic.Settings.Advanced.FormatWarning="Attention : les formats de couleur autres que NV12 sont principalement destinés à l'enregistrement, et ne sont pas recommandés pour le streaming. Le streaming peut pâtir d'une utilisation élevée du CPU due à la conversion de format de couleur." Basic.Settings.Advanced.FormatWarning="Attention : les formats de couleur autres que NV12 sont principalement destinés à l'enregistrement, et ne sont pas recommandés pour le streaming. Le streaming peut pâtir d'une utilisation élevée du CPU due à la conversion de format de couleur."
Basic.Settings.Advanced.Audio.BufferingTime="Temps de mise en mémoire tampon audio" Basic.Settings.Advanced.Audio.BufferingTime="Temps de mise en mémoire tampon audio"
Basic.Settings.Advanced.Video.ColorFormat="Format de couleur" Basic.Settings.Advanced.Video.ColorFormat="Format de couleur"
@ -438,9 +463,9 @@ Basic.Settings.Advanced.Video.ColorSpace="Espace de couleur YUV"
Basic.Settings.Advanced.Video.ColorRange="Gamme de couleurs YUV" Basic.Settings.Advanced.Video.ColorRange="Gamme de couleurs YUV"
Basic.Settings.Advanced.Video.ColorRange.Partial="Partielle" Basic.Settings.Advanced.Video.ColorRange.Partial="Partielle"
Basic.Settings.Advanced.Video.ColorRange.Full="Complète" Basic.Settings.Advanced.Video.ColorRange.Full="Complète"
Basic.Settings.Advanced.StreamDelay="Délai du stream" Basic.Settings.Advanced.StreamDelay="Retard du stream"
Basic.Settings.Advanced.StreamDelay.Duration="Durée (en secondes)" Basic.Settings.Advanced.StreamDelay.Duration="Durée (en secondes)"
Basic.Settings.Advanced.StreamDelay.Preserve="Préserver le point de coupure (augmente le délai) lors d'une reconnexion" Basic.Settings.Advanced.StreamDelay.Preserve="Préserver le point de coupure (augmente le retard) lors d'une reconnexion"
Basic.Settings.Advanced.StreamDelay.MemoryUsage="Utilisation estimée de la mémoire : %1 Mo" Basic.Settings.Advanced.StreamDelay.MemoryUsage="Utilisation estimée de la mémoire : %1 Mo"
Basic.AdvAudio="Propriétés audio avancées" Basic.AdvAudio="Propriétés audio avancées"

View file

@ -125,6 +125,7 @@ Basic.DisplayCapture="Captura de pantalla"
Basic.Main.PreviewConextMenu.Enable="Habilitar vista previa" Basic.Main.PreviewConextMenu.Enable="Habilitar vista previa"
Basic.Main.AddSceneDlg.Title="Engadir escena" Basic.Main.AddSceneDlg.Title="Engadir escena"
Basic.Main.AddSceneDlg.Text="Por favor, insire un nome para a escena" Basic.Main.AddSceneDlg.Text="Por favor, insire un nome para a escena"
@ -242,6 +243,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="Levar para a cima"
Basic.MainMenu.Edit.Order.MoveToBottom="Levar para abaixo" Basic.MainMenu.Edit.Order.MoveToBottom="Levar para abaixo"
Basic.MainMenu.Edit.AdvAudio="Propiedades de audio &avanzadas" Basic.MainMenu.Edit.AdvAudio="Propiedades de audio &avanzadas"
Basic.MainMenu.SceneCollection="&Colección de escenas" Basic.MainMenu.SceneCollection="&Colección de escenas"
Basic.MainMenu.Profile="&Perfil" Basic.MainMenu.Profile="&Perfil"

View file

@ -87,6 +87,7 @@ ConfirmExit.Text="תוכנת OBS פעילה כעת. כל הזרמת נתוני
ConfirmRemove.Title="אשר הסרה" ConfirmRemove.Title="אשר הסרה"
ConfirmRemove.Text="האם אתה בטוח שברצונך להסיר את '$1'?" ConfirmRemove.Text="האם אתה בטוח שברצונך להסיר את '$1'?"
ConfirmRemove.TextMultiple="האם אתה בטוח שברצונך להסיר %1 פריטים?"
Output.ConnectFail.Title="ההתחברות נכשלה" Output.ConnectFail.Title="ההתחברות נכשלה"
Output.ConnectFail.BadPath="URL לא חוקי של נתיב או חיבור. נא בדוק את ההגדרות שלך כדי לוודא כי הם נכונים." Output.ConnectFail.BadPath="URL לא חוקי של נתיב או חיבור. נא בדוק את ההגדרות שלך כדי לוודא כי הם נכונים."
@ -118,6 +119,7 @@ LicenseAgreement.Exit="יציאה"
Remux.SourceFile="הקלטת OBS" Remux.SourceFile="הקלטת OBS"
Remux.TargetFile="קובץ היעד" Remux.TargetFile="קובץ היעד"
Remux.Remux="המרה" Remux.Remux="המרה"
Remux.OBSRecording="הקלטת OBS"
Remux.FinishedTitle="המרה הסתיימה" Remux.FinishedTitle="המרה הסתיימה"
Remux.Finished="הקלטה הומרה" Remux.Finished="הקלטה הומרה"
Remux.FinishedError="הקלטה הומרה, אבל הקובץ עשוי להיות לא שלם" Remux.FinishedError="הקלטה הומרה, אבל הקובץ עשוי להיות לא שלם"
@ -143,6 +145,12 @@ Basic.DisplayCapture="הצג לכידת מסך"
Basic.Main.PreviewConextMenu.Enable="אפשר תצוגה מקדימה" Basic.Main.PreviewConextMenu.Enable="אפשר תצוגה מקדימה"
ScaleFiltering="מסנן קנה מידה"
ScaleFiltering.Point="נקודה"
ScaleFiltering.Bilinear="ביליניארי"
ScaleFiltering.Bicubic="ביקיוביק"
ScaleFiltering.Lanczos="לנזוס"
Deinterlacing="ביטול שזירה" Deinterlacing="ביטול שזירה"
Deinterlacing.Discard="אל תשמור" Deinterlacing.Discard="אל תשמור"
Deinterlacing.Retro="רטרו" Deinterlacing.Retro="רטרו"
@ -185,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="הגדרות שונו"
Basic.PropertiesWindow.Confirm="יש שינויים שלא נשמרו. האם ברצונך לשמור אותם?" Basic.PropertiesWindow.Confirm="יש שינויים שלא נשמרו. האם ברצונך לשמור אותם?"
Basic.PropertiesWindow.NoProperties="אין מאפיינים זמינים" Basic.PropertiesWindow.NoProperties="אין מאפיינים זמינים"
Basic.PropertiesWindow.AddFiles="הוסף קבצים" Basic.PropertiesWindow.AddFiles="הוסף קבצים"
Basic.PropertiesWindow.AddDir="הוסף ספריה"
Basic.PropertiesWindow.AddURL="הוסף נתיב/כתובת" Basic.PropertiesWindow.AddURL="הוסף נתיב/כתובת"
Basic.PropertiesWindow.AddEditableListDir="הוסף ספריה ל '%1'"
Basic.PropertiesWindow.AddEditableListFiles="הוסף קבצים '%1'" Basic.PropertiesWindow.AddEditableListFiles="הוסף קבצים '%1'"
Basic.PropertiesWindow.AddEditableListEntry="הוסף ערך ל- '%1'" Basic.PropertiesWindow.AddEditableListEntry="הוסף ערך ל- '%1'"
Basic.PropertiesWindow.EditEditableListEntry="ערוך ערך של '%1'" Basic.PropertiesWindow.EditEditableListEntry="ערוך ערך של '%1'"
@ -249,7 +259,9 @@ Basic.Main.Connecting="מתחבר..."
Basic.Main.StartRecording="התחל הקלטה" Basic.Main.StartRecording="התחל הקלטה"
Basic.Main.StartStreaming="התחל הזרמת נתונים" Basic.Main.StartStreaming="התחל הזרמת נתונים"
Basic.Main.StopRecording="עצור הקלטה" Basic.Main.StopRecording="עצור הקלטה"
Basic.Main.StoppingRecording="עוצר הקלטה..."
Basic.Main.StopStreaming="עצור זרם נתונים" Basic.Main.StopStreaming="עצור זרם נתונים"
Basic.Main.StoppingStreaming="עוצר זרם נתונים..."
Basic.Main.ForceStopStreaming="עצור זרם נתונים (בטל השהייה)" Basic.Main.ForceStopStreaming="עצור זרם נתונים (בטל השהייה)"
Basic.MainMenu.File="קובץ(&F)" Basic.MainMenu.File="קובץ(&F)"
@ -286,6 +298,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="הזז לקצה עליון(&T)"
Basic.MainMenu.Edit.Order.MoveToBottom="הזז לקצה תחתון(&B)" Basic.MainMenu.Edit.Order.MoveToBottom="הזז לקצה תחתון(&B)"
Basic.MainMenu.Edit.AdvAudio="מאפייני קול מתקדמים(&A)" Basic.MainMenu.Edit.AdvAudio="מאפייני קול מתקדמים(&A)"
Basic.MainMenu.View="&מבט"
Basic.MainMenu.View.Toolbars="&סרגלי כלים"
Basic.MainMenu.View.Toolbars.Listboxes="&תיבות רשימה"
Basic.MainMenu.View.SceneTransitions="&מעברי סצינות"
Basic.MainMenu.View.StatusBar="&שורת מצב"
Basic.MainMenu.SceneCollection="אוסף סצינות(&S)" Basic.MainMenu.SceneCollection="אוסף סצינות(&S)"
Basic.MainMenu.Profile="פרופיל(&P)" Basic.MainMenu.Profile="פרופיל(&P)"
@ -307,6 +325,14 @@ Basic.Settings.General.Theme="ערכת עיצוב"
Basic.Settings.General.Language="שפה" Basic.Settings.General.Language="שפה"
Basic.Settings.General.WarnBeforeStartingStream="הצג תיבת דו-שיח לאישור בעת הפעלת זרם נתונים" Basic.Settings.General.WarnBeforeStartingStream="הצג תיבת דו-שיח לאישור בעת הפעלת זרם נתונים"
Basic.Settings.General.WarnBeforeStoppingStream="הצג תיבת דו-שיח לאישור בעת עצירת זרם נתונים" Basic.Settings.General.WarnBeforeStoppingStream="הצג תיבת דו-שיח לאישור בעת עצירת זרם נתונים"
Basic.Settings.General.HideProjectorCursor="הסתר את הסמן מעל מקרנים"
Basic.Settings.General.Snapping="יישור הצמדת מקור"
Basic.Settings.General.ScreenSnapping="הצמד מקורות לקצה המסך"
Basic.Settings.General.CenterSnapping="הצמד מקורות למרכז אופקי ואנכי"
Basic.Settings.General.SourceSnapping="הצמד מקור למקור נוסף"
Basic.Settings.General.SnapDistance="רגישות צמד"
Basic.Settings.General.RecordWhenStreaming="הקלטה אוטומטית בעת הזרמת נתונים"
Basic.Settings.General.KeepRecordingWhenStreamStops="המשך הקלטה כאשר הזרמת נתונים מפסיקה"
Basic.Settings.Stream="זרם נתונים" Basic.Settings.Stream="זרם נתונים"
Basic.Settings.Stream.StreamType="סוג זרם נתונים" Basic.Settings.Stream.StreamType="סוג זרם נתונים"
@ -316,6 +342,7 @@ Basic.Settings.Output.Format="פורמט הקלטה"
Basic.Settings.Output.Encoder="מקודד" Basic.Settings.Output.Encoder="מקודד"
Basic.Settings.Output.SelectDirectory="בחר ספריית הקלטות" Basic.Settings.Output.SelectDirectory="בחר ספריית הקלטות"
Basic.Settings.Output.SelectFile="בחר קובץ הקלטה" Basic.Settings.Output.SelectFile="בחר קובץ הקלטה"
Basic.Settings.Output.EnforceBitrate="אכוף מגבלות קצב נתונים של שירות הזרמת הנתונים"
Basic.Settings.Output.Mode="מצב פלט" Basic.Settings.Output.Mode="מצב פלט"
Basic.Settings.Output.Mode.Simple="פשוט" Basic.Settings.Output.Mode.Simple="פשוט"
Basic.Settings.Output.Mode.Adv="מתקדם" Basic.Settings.Output.Mode.Adv="מתקדם"
@ -326,11 +353,16 @@ Basic.Settings.Output.Simple.RecordingQuality.Stream="כמו זרם הנתוני
Basic.Settings.Output.Simple.RecordingQuality.Small="איכות גבוהה, גודל קובץ בינוני" Basic.Settings.Output.Simple.RecordingQuality.Small="איכות גבוהה, גודל קובץ בינוני"
Basic.Settings.Output.Simple.RecordingQuality.HQ="איכות בלתי מובחנת, גודל קובץ גדול" Basic.Settings.Output.Simple.RecordingQuality.HQ="איכות בלתי מובחנת, גודל קובץ גדול"
Basic.Settings.Output.Simple.RecordingQuality.Lossless="ללא אובדן איכות, גודל קובץ עצום" Basic.Settings.Output.Simple.RecordingQuality.Lossless="ללא אובדן איכות, גודל קובץ עצום"
Basic.Settings.Output.Simple.Warn.VideoBitrate="אזהרה: קצב הזרמת הוידאו יוגדר ל %1, כאשר זה הגבול העליון עבור שירות הזרמת הנתונים הנוכחי. אם אתה בטוח שאתה רוצה לעבור מעל %1, אפשר את אפשרויות קידוד מתקדמות ובטל סימון \"אכוף הגבלות קצב הזרמת נתונים\"."
Basic.Settings.Output.Simple.Warn.AudioBitrate="אזהרה: קצב הזרמת האודיו יוגדר ל %1, כאשר זה הגבול העליון עבור שירות הזרמת הנתונים הנוכחי. אם אתה בטוח שאתה רוצה לעבור מעל %1, אפשר את אפשרויות קידוד מתקדמות ובטל סימון \"אכוף הגבלות קצב הזרמת נתונים\"."
Basic.Settings.Output.Simple.Warn.Encoder="אזהרה: הקלטה עם מקודד תוכנה באיכות שונה מאשר זרם הנתונים ידרוש שימוש במשאבי מעבד נוספים אם מתבצעת הקלטה וזרם נתונים במקביל." Basic.Settings.Output.Simple.Warn.Encoder="אזהרה: הקלטה עם מקודד תוכנה באיכות שונה מאשר זרם הנתונים ידרוש שימוש במשאבי מעבד נוספים אם מתבצעת הקלטה וזרם נתונים במקביל."
Basic.Settings.Output.Simple.Warn.Lossless="אזהרה: איכות ללא אובדן יוצר גדלי קבצים גדולים מאוד! איכות ללא אובדן נתונים יכול להשתמש ביותר מ-7 ג'יגה-בתים של שטח דיסק לדקה ברזולוציות גבוהות ופריימים. שימוש באיכות ללא אובדן אינו מומלץ להקלטות ארוכות אלא אם קיים שטח דיסק פנוי גדול מאד." Basic.Settings.Output.Simple.Warn.Lossless="אזהרה: איכות ללא אובדן יוצר גדלי קבצים גדולים מאוד! איכות ללא אובדן נתונים יכול להשתמש ביותר מ-7 ג'יגה-בתים של שטח דיסק לדקה ברזולוציות גבוהות ופריימים. שימוש באיכות ללא אובדן אינו מומלץ להקלטות ארוכות אלא אם קיים שטח דיסק פנוי גדול מאד."
Basic.Settings.Output.Simple.Warn.Lossless.Msg="האם אתה בטוח שברצונך להשתמש באיכות ללא אובדן איכות?" Basic.Settings.Output.Simple.Warn.Lossless.Msg="האם אתה בטוח שברצונך להשתמש באיכות ללא אובדן איכות?"
Basic.Settings.Output.Simple.Warn.Lossless.Title="אזהרה איכות ללא אובדן איכות!" Basic.Settings.Output.Simple.Warn.Lossless.Title="אזהרה איכות ללא אובדן איכות!"
Basic.Settings.Output.Simple.Warn.MultipleQSV="אזהרה: לא ניתן להשתמש במקודדי QSV נפרדים מרובים בעת הזרמת נתונים והקלטה במקביל. אם ברצונך להזרים ולהקליט בו זמנית, נא בצע שינוי במקודד ההקלטה או מקודד זרם הנתונים."
Basic.Settings.Output.Simple.Encoder.Software="תוכנה (x264)" Basic.Settings.Output.Simple.Encoder.Software="תוכנה (x264)"
Basic.Settings.Output.Simple.Encoder.Hardware.QSV="חומרה (QSV)"
Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="חומרה (NVENC)"
Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="תוכנה (x 264 השימוש בהגדרת מעבד נמוך, גודל הקובץ גדל)" Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="תוכנה (x 264 השימוש בהגדרת מעבד נמוך, גודל הקובץ גדל)"
Basic.Settings.Output.VideoBitrate="קצב סיביות וידאו" Basic.Settings.Output.VideoBitrate="קצב סיביות וידאו"
Basic.Settings.Output.AudioBitrate="קצב סיביות שמע" Basic.Settings.Output.AudioBitrate="קצב סיביות שמע"
@ -419,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="השהיית לחץ-כדי-לדבר"
Basic.Settings.Audio.UnknownAudioDevice="[התקן לא מחובר או לא זמין]" Basic.Settings.Audio.UnknownAudioDevice="[התקן לא מחובר או לא זמין]"
Basic.Settings.Advanced="הגדרות מתקדמות" Basic.Settings.Advanced="הגדרות מתקדמות"
Basic.Settings.Advanced.General.ProcessPriority="עדיפות תהליך"
Basic.Settings.Advanced.General.ProcessPriority.High="גבוה"
Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="מעל לרגיל"
Basic.Settings.Advanced.General.ProcessPriority.Normal="רגיל"
Basic.Settings.Advanced.General.ProcessPriority.Idle="לא פעיל"
Basic.Settings.Advanced.FormatWarning="אזהרה: תבניות צבע שונות מ-NV12 נועדו בעיקר עבור הקלטה, והם אינם מומלצות בעת הזרמת נתונים. הזרמת נתונים עלולה לגרום למשאבי עיבוד מוגברים כתוצאה מהמרת תבנית צבע." Basic.Settings.Advanced.FormatWarning="אזהרה: תבניות צבע שונות מ-NV12 נועדו בעיקר עבור הקלטה, והם אינם מומלצות בעת הזרמת נתונים. הזרמת נתונים עלולה לגרום למשאבי עיבוד מוגברים כתוצאה מהמרת תבנית צבע."
Basic.Settings.Advanced.Audio.BufferingTime="זמן אוגר שמע" Basic.Settings.Advanced.Audio.BufferingTime="זמן אוגר שמע"
Basic.Settings.Advanced.Video.ColorFormat="תבנית צבע" Basic.Settings.Advanced.Video.ColorFormat="תבנית צבע"

View file

@ -118,6 +118,7 @@ LicenseAgreement.Exit="Izlaz"
Remux.SourceFile="OBS snimak" Remux.SourceFile="OBS snimak"
Remux.TargetFile="Datoteka" Remux.TargetFile="Datoteka"
Remux.Remux="Remux" Remux.Remux="Remux"
Remux.OBSRecording="OBS snimak"
Remux.FinishedTitle="Remux završen" Remux.FinishedTitle="Remux završen"
Remux.Finished="Završen remux snimka" Remux.Finished="Završen remux snimka"
Remux.FinishedError="Remux završen, ali datoteka možda nije kompletirana" Remux.FinishedError="Remux završen, ali datoteka možda nije kompletirana"
@ -143,6 +144,7 @@ Basic.DisplayCapture="Prikaži ulaz"
Basic.Main.PreviewConextMenu.Enable="Omogući pregled" Basic.Main.PreviewConextMenu.Enable="Omogući pregled"
Deinterlacing="Deinterlejsing" Deinterlacing="Deinterlejsing"
Deinterlacing.Discard="Odbaci" Deinterlacing.Discard="Odbaci"
Deinterlacing.Retro="Retro" Deinterlacing.Retro="Retro"
@ -185,7 +187,9 @@ Basic.PropertiesWindow.ConfirmTitle="Podešavanja promenjena"
Basic.PropertiesWindow.Confirm="Postoje podešavanja koja nisu sačuvana. Da li želite da ih sačuvate?" Basic.PropertiesWindow.Confirm="Postoje podešavanja koja nisu sačuvana. Da li želite da ih sačuvate?"
Basic.PropertiesWindow.NoProperties="Nema dostupnih svojstava" Basic.PropertiesWindow.NoProperties="Nema dostupnih svojstava"
Basic.PropertiesWindow.AddFiles="Dodaj datoteke" Basic.PropertiesWindow.AddFiles="Dodaj datoteke"
Basic.PropertiesWindow.AddDir="Dodaj direktorijum"
Basic.PropertiesWindow.AddURL="Dodaj putanju/URL" Basic.PropertiesWindow.AddURL="Dodaj putanju/URL"
Basic.PropertiesWindow.AddEditableListDir="Dodaj direktorijum u '%1'"
Basic.PropertiesWindow.AddEditableListFiles="Dodaj datoteke u '%1'" Basic.PropertiesWindow.AddEditableListFiles="Dodaj datoteke u '%1'"
Basic.PropertiesWindow.AddEditableListEntry="Dodaj zapise u '%1'" Basic.PropertiesWindow.AddEditableListEntry="Dodaj zapise u '%1'"
Basic.PropertiesWindow.EditEditableListEntry="Izmeni zapise za '%1'" Basic.PropertiesWindow.EditEditableListEntry="Izmeni zapise za '%1'"
@ -249,7 +253,9 @@ Basic.Main.Connecting="Povezivanje..."
Basic.Main.StartRecording="Počni snimanje" Basic.Main.StartRecording="Počni snimanje"
Basic.Main.StartStreaming="Počni strimovanje" Basic.Main.StartStreaming="Počni strimovanje"
Basic.Main.StopRecording="Zaustavi snimanje" Basic.Main.StopRecording="Zaustavi snimanje"
Basic.Main.StoppingRecording="Zaustavljanje snimanja..."
Basic.Main.StopStreaming="Zaustavi strimovanje" Basic.Main.StopStreaming="Zaustavi strimovanje"
Basic.Main.StoppingStreaming="Zaustavljanje emitovanja..."
Basic.Main.ForceStopStreaming="Zaustavi strimovanje (poništi odlaganje)" Basic.Main.ForceStopStreaming="Zaustavi strimovanje (poništi odlaganje)"
Basic.MainMenu.File="&Fajl" Basic.MainMenu.File="&Fajl"
@ -286,6 +292,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="Pomeri na vrh (&T)"
Basic.MainMenu.Edit.Order.MoveToBottom="Pomeri na dno (&B)" Basic.MainMenu.Edit.Order.MoveToBottom="Pomeri na dno (&B)"
Basic.MainMenu.Edit.AdvAudio="N&apredna podešavanja zvuka" Basic.MainMenu.Edit.AdvAudio="N&apredna podešavanja zvuka"
Basic.MainMenu.SceneCollection="Kolekcija &scena" Basic.MainMenu.SceneCollection="Kolekcija &scena"
Basic.MainMenu.Profile="&Profil" Basic.MainMenu.Profile="&Profil"
@ -307,6 +314,7 @@ Basic.Settings.General.Theme="Tema"
Basic.Settings.General.Language="Jezik" Basic.Settings.General.Language="Jezik"
Basic.Settings.General.WarnBeforeStartingStream="Prikaži prozor za potvrdu kada se započinju strimovi" Basic.Settings.General.WarnBeforeStartingStream="Prikaži prozor za potvrdu kada se započinju strimovi"
Basic.Settings.General.WarnBeforeStoppingStream="Prikaži prozor za potvrdu kada se zaustavljaju strimovi" Basic.Settings.General.WarnBeforeStoppingStream="Prikaži prozor za potvrdu kada se zaustavljaju strimovi"
Basic.Settings.General.HideProjectorCursor="Sakrij pokazivač na projektorima"
Basic.Settings.General.Snapping="Poravnavanje privlačenjem izvora" Basic.Settings.General.Snapping="Poravnavanje privlačenjem izvora"
Basic.Settings.General.ScreenSnapping="Privuci izvore ivici ekrana" Basic.Settings.General.ScreenSnapping="Privuci izvore ivici ekrana"
Basic.Settings.General.CenterSnapping="Privuci izvore horizontalnoj i vertikalnoj sredini" Basic.Settings.General.CenterSnapping="Privuci izvore horizontalnoj i vertikalnoj sredini"

View file

@ -87,6 +87,7 @@ ConfirmExit.Text="Az OBS jelenleg aktív. Minden stream és/vagy felvétel le fo
ConfirmRemove.Title="Eltávolítás megerősítése" ConfirmRemove.Title="Eltávolítás megerősítése"
ConfirmRemove.Text="\"$1\" eltávolítására készül, biztos benne?" ConfirmRemove.Text="\"$1\" eltávolítására készül, biztos benne?"
ConfirmRemove.TextMultiple="\"%1\" elem eltávolítására készül, biztos benne?"
Output.ConnectFail.Title="Csatlakozás sikertelen" Output.ConnectFail.Title="Csatlakozás sikertelen"
Output.ConnectFail.BadPath="Érvénytelen elérési út vagy kapcsolati URL cím. Kérem, ellenőrizze a beállításokat és győződjön meg az érvényességükről." Output.ConnectFail.BadPath="Érvénytelen elérési út vagy kapcsolati URL cím. Kérem, ellenőrizze a beállításokat és győződjön meg az érvényességükről."
@ -144,6 +145,12 @@ Basic.DisplayCapture="Képernyő felvétel"
Basic.Main.PreviewConextMenu.Enable="Előnézet bekapcsolása" Basic.Main.PreviewConextMenu.Enable="Előnézet bekapcsolása"
ScaleFiltering="Skála-szűrés"
ScaleFiltering.Point="Pont"
ScaleFiltering.Bilinear="Bilineáris"
ScaleFiltering.Bicubic="Kettős köbös"
ScaleFiltering.Lanczos="Lanczos"
Deinterlacing="Váltottsorosság" Deinterlacing="Váltottsorosság"
Deinterlacing.Discard="Elvetés" Deinterlacing.Discard="Elvetés"
Deinterlacing.Retro="Retró mód" Deinterlacing.Retro="Retró mód"
@ -186,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="Beállítások módosultak"
Basic.PropertiesWindow.Confirm="Változtatásai nincsenek elmentve. Szeretné megtartani őket?" Basic.PropertiesWindow.Confirm="Változtatásai nincsenek elmentve. Szeretné megtartani őket?"
Basic.PropertiesWindow.NoProperties="Nincsenek elérhető tulajdonságok" Basic.PropertiesWindow.NoProperties="Nincsenek elérhető tulajdonságok"
Basic.PropertiesWindow.AddFiles="Fájlok hozzáadása" Basic.PropertiesWindow.AddFiles="Fájlok hozzáadása"
Basic.PropertiesWindow.AddDir="Mappa hozzáadása"
Basic.PropertiesWindow.AddURL="Elérési út/URL hozzáadása" Basic.PropertiesWindow.AddURL="Elérési út/URL hozzáadása"
Basic.PropertiesWindow.AddEditableListDir="Könyvtár hozzáadása: '%1'"
Basic.PropertiesWindow.AddEditableListFiles="Fájlok hozzáadása: '%1'" Basic.PropertiesWindow.AddEditableListFiles="Fájlok hozzáadása: '%1'"
Basic.PropertiesWindow.AddEditableListEntry="Bejegyzés hozzáadása: '%1'" Basic.PropertiesWindow.AddEditableListEntry="Bejegyzés hozzáadása: '%1'"
Basic.PropertiesWindow.EditEditableListEntry="Bejegyzés szerkesztése: '%1'" Basic.PropertiesWindow.EditEditableListEntry="Bejegyzés szerkesztése: '%1'"
@ -250,7 +259,9 @@ Basic.Main.Connecting="Kapcsolódás..."
Basic.Main.StartRecording="Felvétel indítása" Basic.Main.StartRecording="Felvétel indítása"
Basic.Main.StartStreaming="Stream indítása" Basic.Main.StartStreaming="Stream indítása"
Basic.Main.StopRecording="Felvétel leállítása" Basic.Main.StopRecording="Felvétel leállítása"
Basic.Main.StoppingRecording="Felvétel leállítása..."
Basic.Main.StopStreaming="Stream leállítása" Basic.Main.StopStreaming="Stream leállítása"
Basic.Main.StoppingStreaming="Stream leállítása..."
Basic.Main.ForceStopStreaming="Stream leállítása (Késleltetés elvetése)" Basic.Main.ForceStopStreaming="Stream leállítása (Késleltetés elvetése)"
Basic.MainMenu.File="&Fájl" Basic.MainMenu.File="&Fájl"
@ -287,6 +298,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="Mozgatás a &Tetejére"
Basic.MainMenu.Edit.Order.MoveToBottom="Mozgatás az &Aljára" Basic.MainMenu.Edit.Order.MoveToBottom="Mozgatás az &Aljára"
Basic.MainMenu.Edit.AdvAudio="&Speciális hangtulajdonságok" Basic.MainMenu.Edit.AdvAudio="&Speciális hangtulajdonságok"
Basic.MainMenu.View="&Nézet"
Basic.MainMenu.View.Toolbars="&Eszköztárak"
Basic.MainMenu.View.Toolbars.Listboxes="&Gombsor"
Basic.MainMenu.View.SceneTransitions="&Jelenet átmenetek"
Basic.MainMenu.View.StatusBar="&Állapotsor"
Basic.MainMenu.SceneCollection="&Jelenet gyűjtemény" Basic.MainMenu.SceneCollection="&Jelenet gyűjtemény"
Basic.MainMenu.Profile="&Profil" Basic.MainMenu.Profile="&Profil"
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="Téma"
Basic.Settings.General.Language="Nyelv" Basic.Settings.General.Language="Nyelv"
Basic.Settings.General.WarnBeforeStartingStream="Megerősítő párbeszédpanel megjelenítése stream indításakor" Basic.Settings.General.WarnBeforeStartingStream="Megerősítő párbeszédpanel megjelenítése stream indításakor"
Basic.Settings.General.WarnBeforeStoppingStream="Megerősítő párbeszédpanel megjelenítése stream leállításakor" Basic.Settings.General.WarnBeforeStoppingStream="Megerősítő párbeszédpanel megjelenítése stream leállításakor"
Basic.Settings.General.HideProjectorCursor="Projektor nézetben a kurzor elrejtése"
Basic.Settings.General.Snapping="Forrás pozicionálásának igazítása" Basic.Settings.General.Snapping="Forrás pozicionálásának igazítása"
Basic.Settings.General.ScreenSnapping="Források igazítása a képernyő széléhez" Basic.Settings.General.ScreenSnapping="Források igazítása a képernyő széléhez"
Basic.Settings.General.CenterSnapping="Források vízszintes és függőleges középponthoz igazítása" Basic.Settings.General.CenterSnapping="Források vízszintes és függőleges középponthoz igazítása"
Basic.Settings.General.SourceSnapping="Források igazítása más forrásokhoz" Basic.Settings.General.SourceSnapping="Források igazítása más forrásokhoz"
Basic.Settings.General.SnapDistance="Igazítás érzékenysége" Basic.Settings.General.SnapDistance="Igazítás érzékenysége"
Basic.Settings.General.RecordWhenStreaming="Automatikus felvétel stream esetén"
Basic.Settings.General.KeepRecordingWhenStreamStops="Felvétel folytatása a stream leállása esetén"
Basic.Settings.Stream="Stream" Basic.Settings.Stream="Stream"
Basic.Settings.Stream.StreamType="Stream típusa" Basic.Settings.Stream.StreamType="Stream típusa"
@ -431,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="Push-to-talk késleltetés"
Basic.Settings.Audio.UnknownAudioDevice="[Eszköz nincs csatlakoztatva vagy nem elérhető]" Basic.Settings.Audio.UnknownAudioDevice="[Eszköz nincs csatlakoztatva vagy nem elérhető]"
Basic.Settings.Advanced="Haladó" Basic.Settings.Advanced="Haladó"
Basic.Settings.Advanced.General.ProcessPriority="Folyamat Prioritás szintje"
Basic.Settings.Advanced.General.ProcessPriority.High="Magas"
Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="Normál feletti"
Basic.Settings.Advanced.General.ProcessPriority.Normal="Normál"
Basic.Settings.Advanced.General.ProcessPriority.Idle="Tétlen"
Basic.Settings.Advanced.FormatWarning="Figyelem: Az NV12-től eltérő színformátumok elsősorban felvételhez vannak és nem ajánlott a használatuk streamekhez. Adás közben megnövekedett processzor igényt okozhat a színkonverzió." Basic.Settings.Advanced.FormatWarning="Figyelem: Az NV12-től eltérő színformátumok elsősorban felvételhez vannak és nem ajánlott a használatuk streamekhez. Adás közben megnövekedett processzor igényt okozhat a színkonverzió."
Basic.Settings.Advanced.Audio.BufferingTime="Audio pufferelési idő" Basic.Settings.Advanced.Audio.BufferingTime="Audio pufferelési idő"
Basic.Settings.Advanced.Video.ColorFormat="Színformátum" Basic.Settings.Advanced.Video.ColorFormat="Színformátum"

View file

@ -44,9 +44,28 @@ ResetOSXVSyncOnExit="Reimpostare V-Sync OSX in uscita"
HighResourceUsage="Codifica in sovraccarico! È consigliabile abbassare le impostazioni video o utilizzare un settaggio predefinito di codifica più veloce." HighResourceUsage="Codifica in sovraccarico! È consigliabile abbassare le impostazioni video o utilizzare un settaggio predefinito di codifica più veloce."
Transition="Transizione" Transition="Transizione"
QuickTransitions="Transizioni rapide" QuickTransitions="Transizioni rapide"
Left="Sinistra"
Right="Destra"
Top="Alto"
Bottom="Basso"
QuickTransitions.SwapScenes="Scambia Scena Preview/Uscita dopo la Transizione"
QuickTransitions.SwapScenesTT="Scambia la scena in uniscita con quella in preview dopo la transizione (ammesso che la scena in uscita originale ci sia ancora).\nQuesto non modificherà eventuali cambiamenti apportati alla scena di uscita originale."
QuickTransitions.DuplicateScene="Duplica Scena"
QuickTransitions.DuplicateSceneTT="Quando si modifica la stessa scena, permette di modificare la trasformazione/visibilità di source senza modificare l'output. \nPer modificare le proprietà delle source senza modificare l'output, abilità 'Source duplicate'.\nCambiare questo valore resetterà la scena output attuale (se esite ancora)."
QuickTransitions.EditProperties="Duplica Risorsa"
QuickTransitions.EditPropertiesTT="Quando si modifica la stessa scena, consente la modifica di risorse senza modificarne l'output. \nQuesto può essere usato solo se 'Scene doppia' è attivo. \nCerte risorse (come media o catture) non lo supportano e devono essere modificate separatamente. \nCambiare questo valore resetterà l'attuale scena di output (se esiste ancora). \n\nAttenzione: Dato che la risorsa verrà duplicata, questo potrebbe richiedere risorse di sistema o video aggiuntive."
QuickTransitions.HotkeyName="Transizioni rapide: %1"
Basic.AddTransition="Aggiungi transizione configurabile"
Basic.RemoveTransition="Rimuovi transizione configurabile"
Basic.TransitionProperties="Proprietà di transizione"
Basic.SceneTransitions="Transizioni di scena"
Basic.TransitionDuration="Durata"
Basic.TogglePreviewProgramMode="Modalità studio"
TransitionNameDlg.Text="Per favore inserisci il nome della transizione"
TransitionNameDlg.Title="Nome transizione"
TitleBar.Profile="Profilo" TitleBar.Profile="Profilo"
TitleBar.Scenes="Scene" TitleBar.Scenes="Scene"
@ -57,17 +76,24 @@ NameExists.Text="Il nome è già in uso."
NoNameEntered.Title="Inserisci un nome valido" NoNameEntered.Title="Inserisci un nome valido"
NoNameEntered.Text="Non è possibile utilizzare nomi vuoti." NoNameEntered.Text="Non è possibile utilizzare nomi vuoti."
ConfirmStart.Title="Inizia diretta?"
ConfirmStart.Text="Sei sicuro di voler iniziare una diretta?"
ConfirmStop.Title="Interrompere diretta?"
ConfirmStop.Text="Sei sicuro di voler interrompere questa diretta?"
ConfirmExit.Title="Uscire da OBS?" ConfirmExit.Title="Uscire da OBS?"
ConfirmExit.Text="OBS è attualmente attivo. Tutte le dirette/registrazioni saranno fermate. Sei sicuro di voler uscire?" ConfirmExit.Text="OBS è attualmente attivo. Tutte le dirette/registrazioni saranno fermate. Sei sicuro di voler uscire?"
ConfirmRemove.Title="Conferma la rimozione" ConfirmRemove.Title="Conferma la rimozione"
ConfirmRemove.Text="Sei sicuro di voler rimuovere '$1'?" ConfirmRemove.Text="Sei sicuro di voler rimuovere '$1'?"
ConfirmRemove.TextMultiple="Sei sicuro di volere rimuovere %1 elementi?"
Output.ConnectFail.Title="Impossibile connettersi" Output.ConnectFail.Title="Impossibile connettersi"
Output.ConnectFail.BadPath="Percorso o URL di connessione non valido. Controlla le tue impostazioni per confermare che siano valide." Output.ConnectFail.BadPath="Percorso o URL di connessione non valido. Controlla le tue impostazioni per confermare che siano valide."
Output.ConnectFail.ConnectFailed="Connessione al server fallita" Output.ConnectFail.ConnectFailed="Connessione al server fallita"
Output.ConnectFail.InvalidStream="Impossibile accedere al canale od alla stream key specificata, per favore, controlla di nuovo la tua stream key.
Se è corretta, potrebbe esserci un problema con la connessione con il server."
Output.ConnectFail.Error="Si è verificato un errore non previsto durante la connessione al server. Controlla il file di log per più informazioni." Output.ConnectFail.Error="Si è verificato un errore non previsto durante la connessione al server. Controlla il file di log per più informazioni."
Output.ConnectFail.Disconnected="Disconnesso dal server." Output.ConnectFail.Disconnected="Disconnesso dal server."
@ -94,6 +120,7 @@ LicenseAgreement.Exit="Esci"
Remux.SourceFile="Registrazione OBS" Remux.SourceFile="Registrazione OBS"
Remux.TargetFile="File di destinazione" Remux.TargetFile="File di destinazione"
Remux.Remux="Converti" Remux.Remux="Converti"
Remux.OBSRecording="Registrazione OBS"
Remux.FinishedTitle="Conversione finita" Remux.FinishedTitle="Conversione finita"
Remux.Finished="Registrazione convertita" Remux.Finished="Registrazione convertita"
Remux.FinishedError="Registrazione convertita, ma il file potrebbe essere incompleta" Remux.FinishedError="Registrazione convertita, ma il file potrebbe essere incompleta"
@ -119,6 +146,23 @@ Basic.DisplayCapture="Mostra cattura"
Basic.Main.PreviewConextMenu.Enable="Abilita Anteprima" Basic.Main.PreviewConextMenu.Enable="Abilita Anteprima"
ScaleFiltering="Scala di filtraggio"
ScaleFiltering.Point="Punto"
ScaleFiltering.Bilinear="Bilineare"
ScaleFiltering.Bicubic="Bicubico"
ScaleFiltering.Lanczos="Lanczos"
Deinterlacing="Deinterlacciamento"
Deinterlacing.Discard="Scarta"
Deinterlacing.Retro="Retrò"
Deinterlacing.Blend="Blend"
Deinterlacing.Blend2x="Blend 2x"
Deinterlacing.Linear="Linear"
Deinterlacing.Linear2x="Linear 2x"
Deinterlacing.Yadif="Yadif"
Deinterlacing.Yadif2x="Yadif 2x"
Deinterlacing.TopFieldFirst="Priorità livello superiore"
Deinterlacing.BottomFieldFirst="Priorità livello inferiore"
Basic.Main.AddSceneDlg.Title="Aggiungi scena" Basic.Main.AddSceneDlg.Title="Aggiungi scena"
Basic.Main.AddSceneDlg.Text="Inserisci il nome della scena" Basic.Main.AddSceneDlg.Text="Inserisci il nome della scena"
@ -143,17 +187,23 @@ Basic.SourceSelect.AddExisting="Aggiungi esistente"
Basic.SourceSelect.AddVisible="Rendi visibile la provenienza" Basic.SourceSelect.AddVisible="Rendi visibile la provenienza"
Basic.PropertiesWindow="Proprietà di '%1'" Basic.PropertiesWindow="Proprietà di '%1'"
Basic.PropertiesWindow.AutoSelectFormat="%1 (autoseleziona: %2)"
Basic.PropertiesWindow.SelectColor="Seleziona il colore" Basic.PropertiesWindow.SelectColor="Seleziona il colore"
Basic.PropertiesWindow.SelectFont="Seleziona il tipo di carattere" Basic.PropertiesWindow.SelectFont="Seleziona il tipo di carattere"
Basic.PropertiesWindow.ConfirmTitle="Impostazioni modificate" Basic.PropertiesWindow.ConfirmTitle="Impostazioni modificate"
Basic.PropertiesWindow.Confirm="Ci sono modifiche non salvate. Le vuoi mantenere?" Basic.PropertiesWindow.Confirm="Ci sono modifiche non salvate. Le vuoi mantenere?"
Basic.PropertiesWindow.NoProperties="Nessuna proprietà disponibile" Basic.PropertiesWindow.NoProperties="Nessuna proprietà disponibile"
Basic.PropertiesWindow.AddFiles="Aggiungi File" Basic.PropertiesWindow.AddFiles="Aggiungi File"
Basic.PropertiesWindow.AddDir="Aggiungi Cartella"
Basic.PropertiesWindow.AddURL="Aggiungi Percorso/URL" Basic.PropertiesWindow.AddURL="Aggiungi Percorso/URL"
Basic.PropertiesWindow.AddEditableListDir="Aggiungi cartella a '%1'"
Basic.PropertiesWindow.AddEditableListFiles="Aggiungi file a '%1'" Basic.PropertiesWindow.AddEditableListFiles="Aggiungi file a '%1'"
Basic.PropertiesWindow.AddEditableListEntry="Aggiungi voci a '%1'" Basic.PropertiesWindow.AddEditableListEntry="Aggiungi voci a '%1'"
Basic.PropertiesWindow.EditEditableListEntry="Modifica voce da '%1'" Basic.PropertiesWindow.EditEditableListEntry="Modifica voce da '%1'"
Basic.PropertiesView.FPS.Simple="Valori FPS semplici"
Basic.PropertiesView.FPS.Rational="Valori FPS razionali"
Basic.PropertiesView.FPS.ValidFPSRanges="Intervalli di FPS validi:"
Basic.InteractionWindow="Interagendo con '%1'" Basic.InteractionWindow="Interagendo con '%1'"
@ -181,6 +231,7 @@ Basic.TransformWindow.Alignment="Allinea posizioni"
Basic.TransformWindow.BoundsType="Tipo di casella di delimitazione" Basic.TransformWindow.BoundsType="Tipo di casella di delimitazione"
Basic.TransformWindow.BoundsAlignment="Allineamento nel riquadro di delimitazione" Basic.TransformWindow.BoundsAlignment="Allineamento nel riquadro di delimitazione"
Basic.TransformWindow.Bounds="Dimensione casella di delimitazione" Basic.TransformWindow.Bounds="Dimensione casella di delimitazione"
Basic.TransformWindow.Crop="Crop"
Basic.TransformWindow.Alignment.TopLeft="In alto a sinistra" Basic.TransformWindow.Alignment.TopLeft="In alto a sinistra"
Basic.TransformWindow.Alignment.TopCenter="In alto al centro" Basic.TransformWindow.Alignment.TopCenter="In alto al centro"
@ -209,7 +260,9 @@ Basic.Main.Connecting="Connessione..."
Basic.Main.StartRecording="Avvia registrazione" Basic.Main.StartRecording="Avvia registrazione"
Basic.Main.StartStreaming="Avvia trasmissione" Basic.Main.StartStreaming="Avvia trasmissione"
Basic.Main.StopRecording="Ferma registrazione" Basic.Main.StopRecording="Ferma registrazione"
Basic.Main.StoppingRecording="Fermando la registrazione..."
Basic.Main.StopStreaming="Ferma trasmissione" Basic.Main.StopStreaming="Ferma trasmissione"
Basic.Main.StoppingStreaming="Arresto diretta..."
Basic.Main.ForceStopStreaming="Ferma Diretta (annulla ritardo)" Basic.Main.ForceStopStreaming="Ferma Diretta (annulla ritardo)"
Basic.MainMenu.File="&File" Basic.MainMenu.File="&File"
@ -220,6 +273,7 @@ Basic.MainMenu.File.Remux="Converti registrazioni"
Basic.MainMenu.File.Settings="&Impostazioni" Basic.MainMenu.File.Settings="&Impostazioni"
Basic.MainMenu.File.ShowSettingsFolder="Visualizza cartella impostazioni" Basic.MainMenu.File.ShowSettingsFolder="Visualizza cartella impostazioni"
Basic.MainMenu.File.ShowProfileFolder="Mostra la cartella del profilo" Basic.MainMenu.File.ShowProfileFolder="Mostra la cartella del profilo"
Basic.MainMenu.AlwaysOnTop="&Sempre in primo piano"
Basic.MainMenu.File.Exit="Esci (&X)" Basic.MainMenu.File.Exit="Esci (&X)"
Basic.MainMenu.Edit="&Modifica" Basic.MainMenu.Edit="&Modifica"
@ -245,6 +299,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="Sposta in &primo piano"
Basic.MainMenu.Edit.Order.MoveToBottom="Sposta in &fondo" Basic.MainMenu.Edit.Order.MoveToBottom="Sposta in &fondo"
Basic.MainMenu.Edit.AdvAudio="Proprietà Audio &Avanzate" Basic.MainMenu.Edit.AdvAudio="Proprietà Audio &Avanzate"
Basic.MainMenu.View="&Visualizza"
Basic.MainMenu.View.Toolbars="&Barre degli strumenti"
Basic.MainMenu.View.Toolbars.Listboxes="&Listboxes"
Basic.MainMenu.View.SceneTransitions="&Transizioni di scena"
Basic.MainMenu.View.StatusBar="&Barra di stato"
Basic.MainMenu.SceneCollection="&Collezione scene" Basic.MainMenu.SceneCollection="&Collezione scene"
Basic.MainMenu.Profile="&Profilo" Basic.MainMenu.Profile="&Profilo"
@ -264,6 +324,16 @@ Basic.Settings.Confirm="Hai dei cambiamenti non salvati. Vuoi salvarli?"
Basic.Settings.General="Generali" Basic.Settings.General="Generali"
Basic.Settings.General.Theme="Tema" Basic.Settings.General.Theme="Tema"
Basic.Settings.General.Language="Lingua" Basic.Settings.General.Language="Lingua"
Basic.Settings.General.WarnBeforeStartingStream="Chiedi conferma quando si avvia una diretta"
Basic.Settings.General.WarnBeforeStoppingStream="Chiedi conferma quando si termina una diretta"
Basic.Settings.General.HideProjectorCursor="Nascondi cursore sopra proiettori"
Basic.Settings.General.Snapping="Allineamento Snapping Source"
Basic.Settings.General.ScreenSnapping="Snap source nei bordi dello schermo"
Basic.Settings.General.CenterSnapping="Snap source al centro orizzontale e verticale"
Basic.Settings.General.SourceSnapping="Snap sources ad altre sources"
Basic.Settings.General.SnapDistance="Sensibilità Snap"
Basic.Settings.General.RecordWhenStreaming="Registra automaticamente quando si è in diretta"
Basic.Settings.General.KeepRecordingWhenStreamStops="Continua a registrare quando la diretta s'interrompe"
Basic.Settings.Stream="Stream" Basic.Settings.Stream="Stream"
Basic.Settings.Stream.StreamType="Tipo di stream" Basic.Settings.Stream.StreamType="Tipo di stream"
@ -273,6 +343,7 @@ Basic.Settings.Output.Format="Formato di registrazione"
Basic.Settings.Output.Encoder="Codifica" Basic.Settings.Output.Encoder="Codifica"
Basic.Settings.Output.SelectDirectory="Seleziona cartella di registrazione" Basic.Settings.Output.SelectDirectory="Seleziona cartella di registrazione"
Basic.Settings.Output.SelectFile="Seleziona file di registrazione" Basic.Settings.Output.SelectFile="Seleziona file di registrazione"
Basic.Settings.Output.EnforceBitrate="Forza limiti bitrate del servizio Streaming"
Basic.Settings.Output.Mode="Modalità di output" Basic.Settings.Output.Mode="Modalità di output"
Basic.Settings.Output.Mode.Simple="Semplice" Basic.Settings.Output.Mode.Simple="Semplice"
Basic.Settings.Output.Mode.Adv="Avanzate" Basic.Settings.Output.Mode.Adv="Avanzate"
@ -283,11 +354,16 @@ Basic.Settings.Output.Simple.RecordingQuality.Stream="Stesso della diretta"
Basic.Settings.Output.Simple.RecordingQuality.Small="Alta qualità, medie dimensioni del file" Basic.Settings.Output.Simple.RecordingQuality.Small="Alta qualità, medie dimensioni del file"
Basic.Settings.Output.Simple.RecordingQuality.HQ="Qualità Indistinguibuile, larghe dimensioni del file" Basic.Settings.Output.Simple.RecordingQuality.HQ="Qualità Indistinguibuile, larghe dimensioni del file"
Basic.Settings.Output.Simple.RecordingQuality.Lossless="Senza perdità di qualità, dimensioni del file tremendamente larghe" Basic.Settings.Output.Simple.RecordingQuality.Lossless="Senza perdità di qualità, dimensioni del file tremendamente larghe"
Basic.Settings.Output.Simple.Warn.VideoBitrate="Avviso: Il bitrate video in streaming verrà impostato su %1, che è il limite superiore per il servizio di streaming corrente. Se sei sicuro di che voler andare di sopra %1, abilita le opzioni avanzate del encorder e deseleziona \"Imponi streaming limiti di servizio bitrate\"."
Basic.Settings.Output.Simple.Warn.AudioBitrate="Avviso: Il bitrate audio in streaming verrà impostato su %1, che è il limite superiore per il servizio di streaming corrente. Se sei sicuro di che voler andare di sopra %1, abilita le opzioni avanzate del encorder e deseleziona \"Imponi streaming limiti di servizio bitrate\"."
Basic.Settings.Output.Simple.Warn.Encoder="Attenzione: Registrare con un encoder software ad una qualità diversa dalla diretta richiederà un utilizzo extra della CPU se registri e vai in diretta allo stesso tempo." Basic.Settings.Output.Simple.Warn.Encoder="Attenzione: Registrare con un encoder software ad una qualità diversa dalla diretta richiederà un utilizzo extra della CPU se registri e vai in diretta allo stesso tempo."
Basic.Settings.Output.Simple.Warn.Lossless="Attenzione: La qualità Lossless genera file estremamente grandi! La Lossless puo occupare 7 Gigabytes di spazio per minuto ad alte risoluzioni e framerate. La lossless non è consigliata per lunghe registrazione a meno che tu non abbia molto spazio disponibile sul disco rigido." Basic.Settings.Output.Simple.Warn.Lossless="Attenzione: La qualità Lossless genera file estremamente grandi! La Lossless puo occupare 7 Gigabytes di spazio per minuto ad alte risoluzioni e framerate. La lossless non è consigliata per lunghe registrazione a meno che tu non abbia molto spazio disponibile sul disco rigido."
Basic.Settings.Output.Simple.Warn.Lossless.Msg="Sei sicuro di volere utilizzare la qualità lossless?" Basic.Settings.Output.Simple.Warn.Lossless.Msg="Sei sicuro di volere utilizzare la qualità lossless?"
Basic.Settings.Output.Simple.Warn.Lossless.Title="Avviso sulla qualità lossless!" Basic.Settings.Output.Simple.Warn.Lossless.Title="Avviso sulla qualità lossless!"
Basic.Settings.Output.Simple.Warn.MultipleQSV="Attenzione: Non è possibile usare più encoder QSV quando si è in diretta e si registra allo stesso tempo. Se vuoi andare in diretta e registrare allo stesso tempo, cambia l'encoder per la registrazione o l'encoder per la diretta."
Basic.Settings.Output.Simple.Encoder.Software="Software (x264)" Basic.Settings.Output.Simple.Encoder.Software="Software (x264)"
Basic.Settings.Output.Simple.Encoder.Hardware.QSV="Hardware (QSV)"
Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="Hardware (NVENC)"
Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Software (x264 Preset con basso utilizzo della CPU, aumenta le dimensioni del file)" Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Software (x264 Preset con basso utilizzo della CPU, aumenta le dimensioni del file)"
Basic.Settings.Output.VideoBitrate="Bitrate video" Basic.Settings.Output.VideoBitrate="Bitrate video"
Basic.Settings.Output.AudioBitrate="Bitrate Audio" Basic.Settings.Output.AudioBitrate="Bitrate Audio"
@ -297,6 +373,8 @@ Basic.Settings.Output.MaxRetries="Tentativi massimi"
Basic.Settings.Output.Advanced="Abilita le impostazioni avanzate di codifica" Basic.Settings.Output.Advanced="Abilita le impostazioni avanzate di codifica"
Basic.Settings.Output.EncoderPreset="Codificatore Preset (superiore = meno CPU)" Basic.Settings.Output.EncoderPreset="Codificatore Preset (superiore = meno CPU)"
Basic.Settings.Output.CustomEncoderSettings="Impostazioni codificatore personalizzato" Basic.Settings.Output.CustomEncoderSettings="Impostazioni codificatore personalizzato"
Basic.Settings.Output.CustomMuxerSettings="Impostazioni Muxer personalizzate"
Basic.Settings.Output.NoSpaceFileName="Genera il nome del file senza spazi"
Basic.Settings.Output.Adv.Rescale="Riscala uscita" Basic.Settings.Output.Adv.Rescale="Riscala uscita"
Basic.Settings.Output.Adv.AudioTrack="Traccia Audio" Basic.Settings.Output.Adv.AudioTrack="Traccia Audio"
@ -312,6 +390,8 @@ Basic.Settings.Output.Adv.Recording.Type="Tipo"
Basic.Settings.Output.Adv.Recording.Type.Standard="Standard" Basic.Settings.Output.Adv.Recording.Type.Standard="Standard"
Basic.Settings.Output.Adv.Recording.Type.FFmpegOutput="Output personalizzato (FFmpeg)" Basic.Settings.Output.Adv.Recording.Type.FFmpegOutput="Output personalizzato (FFmpeg)"
Basic.Settings.Output.Adv.Recording.UseStreamEncoder="(Utilizzare il codificatore del flusso)" Basic.Settings.Output.Adv.Recording.UseStreamEncoder="(Utilizzare il codificatore del flusso)"
Basic.Settings.Output.Adv.Recording.Filename="Formattazione del nome del file"
Basic.Settings.Output.Adv.Recording.OverwriteIfExists="Sovrascrivi il file se già esistente"
Basic.Settings.Output.Adv.FFmpeg.Type="Tipo di Output FFmpeg" Basic.Settings.Output.Adv.FFmpeg.Type="Tipo di Output FFmpeg"
Basic.Settings.Output.Adv.FFmpeg.Type.URL="Output in URL" Basic.Settings.Output.Adv.FFmpeg.Type.URL="Output in URL"
Basic.Settings.Output.Adv.FFmpeg.Type.RecordToFile="Output su File" Basic.Settings.Output.Adv.FFmpeg.Type.RecordToFile="Output su File"
@ -332,7 +412,9 @@ Basic.Settings.Output.Adv.FFmpeg.AEncoder="Encoder Audio"
Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Impostazioni codifica audio (se presente)" Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Impostazioni codifica audio (se presente)"
Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="Impostazioni Muxer (se possibile)" Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="Impostazioni Muxer (se possibile)"
FilenameFormatting.completer="%CCYY-%MM-%DD %hh-%mm-%ss\n%YY-%MM-%DD %hh-%mm-%ss\n%Y-%m-%d %H-%M-%S\n%y-%m-%d %H-%M-%S\n%a %Y-%m-%d %H-%M-%S\n%A %Y-%m-%d %H-%M-%S\n%Y-%b-%d %H-%M-%S\n%Y-%B-%d %H-%M-%S\n%Y-%m-%d %I-%M-%S-%p\n%Y-%m-%d %H-%M-%S-%z\n%Y-%m-%d %H-%M-%S-%Z"
FilenameFormatting.TT="%CCYY Anno, quattro cifre\n%YY Anno, ultime due cifre (00-99)\n%MM Mese come numero decimale (01-12)\n%DD Giorno del mese, zero-padded (01-31)\n%hh Ore in formato 24 ore (00-23)\n%mm Minuto (00-59)\n%ss Secondi (00-61)\n%% Un % segno\n%a Giorno della settimana abbreviato\n%A Un nome del giorno della settimana intero\n%b Nome del mese abbreviato\n%B Nome del mese intero\n%d Giorno del mese, zero-padded (01-31)\n%H Ore in formato 24 ore (00-23)\n%I Ore in formato 12 ore (01-12)\n%m Mese come numero decimale (01-12)\n%M Minuto (00-59)\n%p Designazione AM o PM\n%S Secondi (00-61)\n%y Anno, ultime due lettere (00-99)\n%Y Anno\n%z ISO 8601 offset da UTC o fuso orario\n Nome o abbreviazione\n%Z Nome o abbreviazione del fuso orario\n"
Basic.Settings.Video="Video" Basic.Settings.Video="Video"
Basic.Settings.Video.Adapter="Adattatore video:" Basic.Settings.Video.Adapter="Adattatore video:"
@ -370,6 +452,11 @@ Basic.Settings.Audio.PushToTalkDelay="Ritardo Push-to-talk"
Basic.Settings.Audio.UnknownAudioDevice="[Dispositivo non collegato o non disponibile]" Basic.Settings.Audio.UnknownAudioDevice="[Dispositivo non collegato o non disponibile]"
Basic.Settings.Advanced="Avanzate" Basic.Settings.Advanced="Avanzate"
Basic.Settings.Advanced.General.ProcessPriority="Priorità del processo"
Basic.Settings.Advanced.General.ProcessPriority.High="Alta"
Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="Superiore al normale"
Basic.Settings.Advanced.General.ProcessPriority.Normal="Normale"
Basic.Settings.Advanced.General.ProcessPriority.Idle="Bassa"
Basic.Settings.Advanced.FormatWarning="Attenzione: I formati colore diversi da NV12 sono principalmente pensati per la registrazione, e non sono consigliati durante le dirette. Lo streaming può avere un utilizzo maggiore delle CPU a causa della conversione del formato del colore." Basic.Settings.Advanced.FormatWarning="Attenzione: I formati colore diversi da NV12 sono principalmente pensati per la registrazione, e non sono consigliati durante le dirette. Lo streaming può avere un utilizzo maggiore delle CPU a causa della conversione del formato del colore."
Basic.Settings.Advanced.Audio.BufferingTime="Tempo di buffer audio" Basic.Settings.Advanced.Audio.BufferingTime="Tempo di buffer audio"
Basic.Settings.Advanced.Video.ColorFormat="Formato colore" Basic.Settings.Advanced.Video.ColorFormat="Formato colore"

View file

@ -38,7 +38,7 @@ Hide="非表示"
Untitled="無題" Untitled="無題"
New="新規" New="新規"
Duplicate="複製" Duplicate="複製"
Enable=" 有効にする" Enable="有効にする"
DisableOSXVSync="OSX の V-Sync を無効にする" DisableOSXVSync="OSX の V-Sync を無効にする"
ResetOSXVSyncOnExit="終了時に OSX の V-Sync をリセットする" ResetOSXVSyncOnExit="終了時に OSX の V-Sync をリセットする"
HighResourceUsage="エンコードが高負荷です! ビデオ設定を下げるかより高速のエンコードプリセットの使用を検討してください。" HighResourceUsage="エンコードが高負荷です! ビデオ設定を下げるかより高速のエンコードプリセットの使用を検討してください。"
@ -87,6 +87,7 @@ ConfirmExit.Text="OBS は現在アクティブです。 すべての配信/録
ConfirmRemove.Title="削除の確認" ConfirmRemove.Title="削除の確認"
ConfirmRemove.Text="'$1' を削除してもよろしいですか?" ConfirmRemove.Text="'$1' を削除してもよろしいですか?"
ConfirmRemove.TextMultiple="選択した %1 項目を削除してもよろしいですか?"
Output.ConnectFail.Title="接続失敗" Output.ConnectFail.Title="接続失敗"
Output.ConnectFail.BadPath="パスかURLが無効です。再確認して下さい。" Output.ConnectFail.BadPath="パスかURLが無効です。再確認して下さい。"
@ -144,6 +145,12 @@ Basic.DisplayCapture="画面キャプチャ"
Basic.Main.PreviewConextMenu.Enable="プレビュー有効化" Basic.Main.PreviewConextMenu.Enable="プレビュー有効化"
ScaleFiltering="スケールフィルタ"
ScaleFiltering.Point="ポイント"
ScaleFiltering.Bilinear="バイリニア"
ScaleFiltering.Bicubic="バイキュービック"
ScaleFiltering.Lanczos="ランチョス"
Deinterlacing="インターレース解除" Deinterlacing="インターレース解除"
Deinterlacing.Discard="破棄" Deinterlacing.Discard="破棄"
Deinterlacing.Retro="レトロ" Deinterlacing.Retro="レトロ"
@ -186,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="設定の変更"
Basic.PropertiesWindow.Confirm="保存されていない変更があります。それらを維持しますか?" Basic.PropertiesWindow.Confirm="保存されていない変更があります。それらを維持しますか?"
Basic.PropertiesWindow.NoProperties="有効なプロパティがありません" Basic.PropertiesWindow.NoProperties="有効なプロパティがありません"
Basic.PropertiesWindow.AddFiles="ファイルを追加" Basic.PropertiesWindow.AddFiles="ファイルを追加"
Basic.PropertiesWindow.AddDir="ディレクトリを追加"
Basic.PropertiesWindow.AddURL="Path または URL を追加" Basic.PropertiesWindow.AddURL="Path または URL を追加"
Basic.PropertiesWindow.AddEditableListDir="'%1' にディレクトリを追加"
Basic.PropertiesWindow.AddEditableListFiles="ファイルを '%1' に追加" Basic.PropertiesWindow.AddEditableListFiles="ファイルを '%1' に追加"
Basic.PropertiesWindow.AddEditableListEntry="'%1' にエントリを追加" Basic.PropertiesWindow.AddEditableListEntry="'%1' にエントリを追加"
Basic.PropertiesWindow.EditEditableListEntry="'%1' からのエントリを編集" Basic.PropertiesWindow.EditEditableListEntry="'%1' からのエントリを編集"
@ -250,7 +259,9 @@ Basic.Main.Connecting="接続中..."
Basic.Main.StartRecording="録画開始" Basic.Main.StartRecording="録画開始"
Basic.Main.StartStreaming="配信開始" Basic.Main.StartStreaming="配信開始"
Basic.Main.StopRecording="録画終了" Basic.Main.StopRecording="録画終了"
Basic.Main.StoppingRecording="録画を停止しています..."
Basic.Main.StopStreaming="配信終了" Basic.Main.StopStreaming="配信終了"
Basic.Main.StoppingStreaming="配信を停止しています..."
Basic.Main.ForceStopStreaming="配信停止 (遅延破棄)" Basic.Main.ForceStopStreaming="配信停止 (遅延破棄)"
Basic.MainMenu.File="ファイル(&F)" Basic.MainMenu.File="ファイル(&F)"
@ -287,6 +298,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="最上部に移動(&T)"
Basic.MainMenu.Edit.Order.MoveToBottom="最下部に移動(&B)" Basic.MainMenu.Edit.Order.MoveToBottom="最下部に移動(&B)"
Basic.MainMenu.Edit.AdvAudio="オーディオの詳細プロパティ" Basic.MainMenu.Edit.AdvAudio="オーディオの詳細プロパティ"
Basic.MainMenu.View="表示"
Basic.MainMenu.View.Toolbars="ツールバー"
Basic.MainMenu.View.Toolbars.Listboxes="リストボックス"
Basic.MainMenu.View.SceneTransitions="シーントランジション"
Basic.MainMenu.View.StatusBar="ステータスバー"
Basic.MainMenu.SceneCollection="シーンコレクション" Basic.MainMenu.SceneCollection="シーンコレクション"
Basic.MainMenu.Profile="プロファイル" Basic.MainMenu.Profile="プロファイル"
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="テーマ"
Basic.Settings.General.Language="言語" Basic.Settings.General.Language="言語"
Basic.Settings.General.WarnBeforeStartingStream="配信を開始するときに確認ダイアログを表示する" Basic.Settings.General.WarnBeforeStartingStream="配信を開始するときに確認ダイアログを表示する"
Basic.Settings.General.WarnBeforeStoppingStream="配信を停止するときに確認ダイアログを表示する" Basic.Settings.General.WarnBeforeStoppingStream="配信を停止するときに確認ダイアログを表示する"
Basic.Settings.General.HideProjectorCursor="プロジェクター上のカーソルを非表示にする"
Basic.Settings.General.Snapping="ソース配置のスナップ" Basic.Settings.General.Snapping="ソース配置のスナップ"
Basic.Settings.General.ScreenSnapping="画面の端にソースをスナップする" Basic.Settings.General.ScreenSnapping="画面の端にソースをスナップする"
Basic.Settings.General.CenterSnapping="水平方向および垂直方向の中心にソースをスナップする" Basic.Settings.General.CenterSnapping="水平方向および垂直方向の中心にソースをスナップする"
Basic.Settings.General.SourceSnapping="他のソースにソースをスナップする" Basic.Settings.General.SourceSnapping="他のソースにソースをスナップする"
Basic.Settings.General.SnapDistance="スナップ感度" Basic.Settings.General.SnapDistance="スナップ感度"
Basic.Settings.General.RecordWhenStreaming="配信時に自動的に録画"
Basic.Settings.General.KeepRecordingWhenStreamStops="配信が停止しても録画を継続"
Basic.Settings.Stream="配信" Basic.Settings.Stream="配信"
Basic.Settings.Stream.StreamType="配信種別" Basic.Settings.Stream.StreamType="配信種別"
@ -431,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="プッシュ-トーク遅延"
Basic.Settings.Audio.UnknownAudioDevice="[デバイスが接続されていないまたは利用不可]" Basic.Settings.Audio.UnknownAudioDevice="[デバイスが接続されていないまたは利用不可]"
Basic.Settings.Advanced="詳細設定" Basic.Settings.Advanced="詳細設定"
Basic.Settings.Advanced.General.ProcessPriority="プロセスの優先度"
Basic.Settings.Advanced.General.ProcessPriority.High="高"
Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="通常以上"
Basic.Settings.Advanced.General.ProcessPriority.Normal="通常"
Basic.Settings.Advanced.General.ProcessPriority.Idle="低"
Basic.Settings.Advanced.FormatWarning="警告: NV12以外のカラーフォーマットは主に録画を想定しており、配信には非推奨です。配信ではカラーフォーマットの変換による CPU使用率の増加が発生する可能性があります。" Basic.Settings.Advanced.FormatWarning="警告: NV12以外のカラーフォーマットは主に録画を想定しており、配信には非推奨です。配信ではカラーフォーマットの変換による CPU使用率の増加が発生する可能性があります。"
Basic.Settings.Advanced.Audio.BufferingTime="音声バッファー処理時間" Basic.Settings.Advanced.Audio.BufferingTime="音声バッファー処理時間"
Basic.Settings.Advanced.Video.ColorFormat="カラーフォーマット" Basic.Settings.Advanced.Video.ColorFormat="カラーフォーマット"

View file

@ -87,6 +87,7 @@ ConfirmExit.Text="OBS가 현재 작동 중입니다. 모든 방송/녹화가 중
ConfirmRemove.Title="제거 확인" ConfirmRemove.Title="제거 확인"
ConfirmRemove.Text="'$1'을 정말로 제거하시겠습니까?" ConfirmRemove.Text="'$1'을 정말로 제거하시겠습니까?"
ConfirmRemove.TextMultiple="정말로 %1 개의 항목을 제거하겠습니까?"
Output.ConnectFail.Title="연결에 실패했음" Output.ConnectFail.Title="연결에 실패했음"
Output.ConnectFail.BadPath="잘못된 경로 혹은 연결 주소입니다. 유효한 값인지 설정을 확인하시기 바랍니다. " Output.ConnectFail.BadPath="잘못된 경로 혹은 연결 주소입니다. 유효한 값인지 설정을 확인하시기 바랍니다. "
@ -144,6 +145,12 @@ Basic.DisplayCapture="캡처 표시"
Basic.Main.PreviewConextMenu.Enable="미리보기 활성화" Basic.Main.PreviewConextMenu.Enable="미리보기 활성화"
ScaleFiltering="비율 필터링"
ScaleFiltering.Point="점"
ScaleFiltering.Bilinear="이중선형"
ScaleFiltering.Bicubic="쌍삼차"
ScaleFiltering.Lanczos="란초스"
Deinterlacing="디인터레이싱" Deinterlacing="디인터레이싱"
Deinterlacing.Discard="저장 안함" Deinterlacing.Discard="저장 안함"
Deinterlacing.Retro="레트로" Deinterlacing.Retro="레트로"
@ -186,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="설정이 변경됨"
Basic.PropertiesWindow.Confirm="아직 저장하지 않은 변경 사항이 있습니다. 변경을 유지하겠습니까?" Basic.PropertiesWindow.Confirm="아직 저장하지 않은 변경 사항이 있습니다. 변경을 유지하겠습니까?"
Basic.PropertiesWindow.NoProperties="가능한 설정이 없음" Basic.PropertiesWindow.NoProperties="가능한 설정이 없음"
Basic.PropertiesWindow.AddFiles="파일 추가" Basic.PropertiesWindow.AddFiles="파일 추가"
Basic.PropertiesWindow.AddDir="디렉토리 추가"
Basic.PropertiesWindow.AddURL="경로 또는 URL 추가" Basic.PropertiesWindow.AddURL="경로 또는 URL 추가"
Basic.PropertiesWindow.AddEditableListDir="'%1 에 디렉터리 항목 추가"
Basic.PropertiesWindow.AddEditableListFiles="'%1' 에 파일 추가" Basic.PropertiesWindow.AddEditableListFiles="'%1' 에 파일 추가"
Basic.PropertiesWindow.AddEditableListEntry="'%1 에 항목 추가" Basic.PropertiesWindow.AddEditableListEntry="'%1 에 항목 추가"
Basic.PropertiesWindow.EditEditableListEntry="'%1' 내 항목 수정" Basic.PropertiesWindow.EditEditableListEntry="'%1' 내 항목 수정"
@ -250,7 +259,9 @@ Basic.Main.Connecting="연결 중..."
Basic.Main.StartRecording="녹화 시작" Basic.Main.StartRecording="녹화 시작"
Basic.Main.StartStreaming="방송 시작" Basic.Main.StartStreaming="방송 시작"
Basic.Main.StopRecording="녹화 중단" Basic.Main.StopRecording="녹화 중단"
Basic.Main.StoppingRecording="녹화를 중단합니다...."
Basic.Main.StopStreaming="방송 중단" Basic.Main.StopStreaming="방송 중단"
Basic.Main.StoppingStreaming="방송을 중지합니다..."
Basic.Main.ForceStopStreaming="방송 중지(지연된 분량도 마무리없이 즉시 송출 중단)" Basic.Main.ForceStopStreaming="방송 중지(지연된 분량도 마무리없이 즉시 송출 중단)"
Basic.MainMenu.File="파일(&F)" Basic.MainMenu.File="파일(&F)"
@ -287,6 +298,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="가장 위로 올리기(&T)"
Basic.MainMenu.Edit.Order.MoveToBottom="가장 아래로 내리기(&B)" Basic.MainMenu.Edit.Order.MoveToBottom="가장 아래로 내리기(&B)"
Basic.MainMenu.Edit.AdvAudio="오디오 고급 설정(&A)" Basic.MainMenu.Edit.AdvAudio="오디오 고급 설정(&A)"
Basic.MainMenu.View="보기(&V)"
Basic.MainMenu.View.Toolbars="도구 모음(&T)"
Basic.MainMenu.View.Toolbars.Listboxes="목록 상자(&L)"
Basic.MainMenu.View.SceneTransitions="장면 전환(&C)"
Basic.MainMenu.View.StatusBar="상태 표시줄(&S)"
Basic.MainMenu.SceneCollection="장면 모음(&S)" Basic.MainMenu.SceneCollection="장면 모음(&S)"
Basic.MainMenu.Profile="프로파일(&P)" Basic.MainMenu.Profile="프로파일(&P)"
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="테마"
Basic.Settings.General.Language="언어" Basic.Settings.General.Language="언어"
Basic.Settings.General.WarnBeforeStartingStream="방송을 시작할 때 확인 대화 상자 표시" Basic.Settings.General.WarnBeforeStartingStream="방송을 시작할 때 확인 대화 상자 표시"
Basic.Settings.General.WarnBeforeStoppingStream="방송을 중단할 때 확인 대화 상자 표시" Basic.Settings.General.WarnBeforeStoppingStream="방송을 중단할 때 확인 대화 상자 표시"
Basic.Settings.General.HideProjectorCursor="프로젝터 위 커서 숨기기"
Basic.Settings.General.Snapping="소스를 자석처럼 달라붙여서 정렬" Basic.Settings.General.Snapping="소스를 자석처럼 달라붙여서 정렬"
Basic.Settings.General.ScreenSnapping="소스를 화면 변두리에 붙임" Basic.Settings.General.ScreenSnapping="소스를 화면 변두리에 붙임"
Basic.Settings.General.CenterSnapping="소스를 수평과 수직 중앙에 붙임" Basic.Settings.General.CenterSnapping="소스를 수평과 수직 중앙에 붙임"
Basic.Settings.General.SourceSnapping="소스를 다른 소스에 붙임" Basic.Settings.General.SourceSnapping="소스를 다른 소스에 붙임"
Basic.Settings.General.SnapDistance="자석 감도" Basic.Settings.General.SnapDistance="자석 감도"
Basic.Settings.General.RecordWhenStreaming="방송 시 자동으로 녹화"
Basic.Settings.General.KeepRecordingWhenStreamStops="방송을 중단하더라도 녹화는 유지"
Basic.Settings.Stream="방송" Basic.Settings.Stream="방송"
Basic.Settings.Stream.StreamType="방송 형식" Basic.Settings.Stream.StreamType="방송 형식"
@ -431,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="누르며 말하기 지연"
Basic.Settings.Audio.UnknownAudioDevice="[장치를 연결하지 않았거나 사용할 수 없음]" Basic.Settings.Audio.UnknownAudioDevice="[장치를 연결하지 않았거나 사용할 수 없음]"
Basic.Settings.Advanced="고급" Basic.Settings.Advanced="고급"
Basic.Settings.Advanced.General.ProcessPriority="프로세스 우선순위 설정"
Basic.Settings.Advanced.General.ProcessPriority.High="실시간"
Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="높음"
Basic.Settings.Advanced.General.ProcessPriority.Normal="보통"
Basic.Settings.Advanced.General.ProcessPriority.Idle="낮음"
Basic.Settings.Advanced.FormatWarning="경고: NV12 이외의 색상 형식은 주로 녹화를 위한 것이며, 방송에 적합하지 않습니다. 이대로 방송을 하게 되면 형식 전환을 위해 CPU 사용량이 증가할 수 있습니다." Basic.Settings.Advanced.FormatWarning="경고: NV12 이외의 색상 형식은 주로 녹화를 위한 것이며, 방송에 적합하지 않습니다. 이대로 방송을 하게 되면 형식 전환을 위해 CPU 사용량이 증가할 수 있습니다."
Basic.Settings.Advanced.Audio.BufferingTime="오디오 버퍼링 시간" Basic.Settings.Advanced.Audio.BufferingTime="오디오 버퍼링 시간"
Basic.Settings.Advanced.Video.ColorFormat="색상 형식" Basic.Settings.Advanced.Video.ColorFormat="색상 형식"

View file

@ -52,23 +52,70 @@ Bottom="Iš apačios"
QuickTransitions.SwapScenes="Sukeisti Peržiūros/Išvesties scenas po Perėjimo" QuickTransitions.SwapScenes="Sukeisti Peržiūros/Išvesties scenas po Perėjimo"
QuickTransitions.SwapScenesTT="Sukeičia peržiūros ir išvesties scenas po perėjimo įvykdymo (jei originali išvesties scena vis dar egzistuoja).\nTai neatšauks jokių pakeitimų kurie galima buvo atlikti originalioje išvesties scenoje." QuickTransitions.SwapScenesTT="Sukeičia peržiūros ir išvesties scenas po perėjimo įvykdymo (jei originali išvesties scena vis dar egzistuoja).\nTai neatšauks jokių pakeitimų kurie galima buvo atlikti originalioje išvesties scenoje."
QuickTransitions.DuplicateScene="Dubliuoti Sceną" QuickTransitions.DuplicateScene="Dubliuoti Sceną"
QuickTransitions.EditProperties="Dubliuoti šaltinius"
QuickTransitions.HotkeyName="Greitasis perėjimas: %1"
Basic.AddTransition="Pridėti konfigūruojamą perėjimą"
Basic.RemoveTransition="Pašalinti konfigūruojamą perėjimą"
Basic.TransitionProperties="Perėjimo savybės"
Basic.SceneTransitions="Scenos perėjimai"
Basic.TransitionDuration="Trukmė"
Basic.TogglePreviewProgramMode="Studijos režimas"
TransitionNameDlg.Text="Prašome įvesti perėjimo pavadinimą"
TransitionNameDlg.Title="Perėjimo pavadinimas"
TitleBar.Profile="Profilis"
TitleBar.Scenes="Scenos"
NameExists.Title="Pavadinimas jau egzistuoja"
NameExists.Text="Toks pavadinimas jau naudojamas."
NoNameEntered.Title="Prašome įvesti tinkamą pavadinimą"
NoNameEntered.Text="Negalite naudoti tuščio pavadinimo."
ConfirmStart.Title="Pradėti transliaciją?"
ConfirmStart.Text="Ar esate įsitikinęs, kad norite pradėti transliavimą?"
ConfirmStop.Title="Stabdyti transliaciją?"
ConfirmStop.Text="Ar esate įsitikinęs, kad norite stabdyti transliavimą?"
ConfirmExit.Title="Išeiti iš OBS?"
ConfirmExit.Text="OBS metu yra aktyvus. Visos transliacijos/įrašymai bus išjungti. Ar tikrai norite išeiti?"
ConfirmRemove.Title="Pašalinimo patvirtinimas"
ConfirmRemove.Text="Ar tikrai norite pašalinti '$1'?"
Output.ConnectFail.Title="Nepavyko prisijungti"
Output.ConnectFail.BadPath="Neteisingas kelias arba jungimosi URL. Prašome patikrinti nustatymus ir įsitikinti, kad jie teisingi."
Output.ConnectFail.ConnectFailed="Nepavyko prisijungti prie serverio"
Output.ConnectFail.Error="Netikėta klaida bandant jungtis į serverį. Daugiau informacijos žurnalo faile."
Output.ConnectFail.Disconnected="Atjungtas nuo serverio."
Output.RecordFail.Title="Nepavyko pradėti įrašo"
Output.RecordFail.Unsupported="Išvesties formatas nepalaikomas arba nepalaiko daugiau vieno garso takelio. Prašome patikrinti nustatymus ir bandyti vėl."
Output.RecordNoSpace.Title="Nepakanka vietos diske"
Output.RecordNoSpace.Msg="Nėra pakankamai vietos diske, kad tęsti įrašymą."
Output.RecordError.Title="Įrašymo klaida"
Output.RecordError.Msg="Nenustatyta klaida įrašant."
Output.BadPath.Title="Blogas failo kelias"
Output.BadPath.Text="Nustatytas išvesties failo kelias yra netinkamas. Prašome patikrinti nustatymus, kad įsitikintumėte, jog nustatytas failo kelias yra teisingas."
LogReturnDialog="Žurnalas įkeltas sėkmingai"
LogReturnDialog.CopyURL="Kopijuoti adresą"
LogReturnDialog.ErrorUploadingLog="Žurnalo failo įkėlimo klaida"
LicenseAgreement="Licencinė sutartis"
LicenseAgreement.PleaseReview="Prašome peržiūrėti licencijos sąlygas prieš OBS naudojimą. Naudodamasis šia programa, jūs pripažįstate, kad perskaitėte ir sutikite su <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU General Public License v2.0 (anglų k.)</a> sąlygomis. Prašome slinkti žemyn, kad pamatytumėte likusią sutarties dalį."
LicenseAgreement.ClickIAgreeToContinue="Jei sutinkate su sutarties sąlygomis, pasirinkite Aš sutinku, kad tęsti. Jūs privalote sutikti su sutartimi, kad naudotis OBS."
LicenseAgreement.IAgree="Sutinku"
LicenseAgreement.Exit="Išeiti"
Remux.SourceFile="OBS įrašas"
Remux.TargetFile="Paskirties failas" Remux.TargetFile="Paskirties failas"
Remux.Remux="Permiksuoti" Remux.Remux="Permiksuoti"
Remux.OBSRecording="OBS įrašas"
Remux.FinishedTitle="Permiksavimas baigtas" Remux.FinishedTitle="Permiksavimas baigtas"
Remux.Finished="Įrašas permiksuotas" Remux.Finished="Įrašas permiksuotas"
Remux.FinishedError="Įrašas permiksuotas, tačiau failas gali būti neužbaigtas" Remux.FinishedError="Įrašas permiksuotas, tačiau failas gali būti neužbaigtas"
@ -94,6 +141,12 @@ Basic.DisplayCapture="Ekrano perėmimas"
Basic.Main.PreviewConextMenu.Enable="Įjungti peržiūrą" Basic.Main.PreviewConextMenu.Enable="Įjungti peržiūrą"
ScaleFiltering="Mastelio filtras"
ScaleFiltering.Point="Taškas"
ScaleFiltering.Bilinear="Dvilinijinis"
ScaleFiltering.Bicubic="Bikubinis"
ScaleFiltering.Lanczos="Lanczos"
Deinterlacing="Perėjimo šalinimas" Deinterlacing="Perėjimo šalinimas"
Deinterlacing.Discard="Atmesti" Deinterlacing.Discard="Atmesti"
Deinterlacing.Retro="Retro" Deinterlacing.Retro="Retro"
@ -130,12 +183,32 @@ Basic.SourceSelect.AddVisible="Padaryti šaltinį matomu"
Basic.PropertiesWindow="'%1' savybės" Basic.PropertiesWindow="'%1' savybės"
Basic.PropertiesWindow.AutoSelectFormat="%1 (automatinis pasirinkimas: %2)" Basic.PropertiesWindow.AutoSelectFormat="%1 (automatinis pasirinkimas: %2)"
Basic.PropertiesWindow.SelectColor="Pasirinkti spalvą"
Basic.PropertiesWindow.SelectFont="Pasirinkti šriftą"
Basic.PropertiesWindow.ConfirmTitle="Nustatymai pakeisti"
Basic.PropertiesWindow.Confirm="Yra neišsaugotų pakeitimų. Ar norite juos išlaikyti?"
Basic.PropertiesWindow.NoProperties="Savybių nėra"
Basic.PropertiesWindow.AddFiles="Pridėti failus"
Basic.PropertiesWindow.AddDir="Pridėti katalogą"
Basic.PropertiesWindow.AddURL="Pridėti kelią/URL"
Basic.TransformWindow.Position="Padėtis"
Basic.TransformWindow.Rotation="Pasukimas"
Basic.TransformWindow.Size="Dydis"
Basic.TransformWindow.Alignment.TopLeft="Viršuje kairėje"
Basic.TransformWindow.Alignment.TopCenter="Viršuje per vidurį"
Basic.TransformWindow.Alignment.TopRight="Viršuje dešinėje"
Basic.TransformWindow.Alignment.CenterLeft="Centruota kairėje"
Basic.TransformWindow.Alignment.Center="Centre"
Basic.TransformWindow.Alignment.CenterRight="Centruoda dešinįje"
Basic.TransformWindow.Alignment.BottomLeft="Apačioje kairėje"
Basic.TransformWindow.Alignment.BottomCenter="Apačioje per vidurį"
Basic.TransformWindow.Alignment.BottomRight="Apačioje dešinėje"
Basic.Main.AddSourceHelp.Text="Turite turėti bent 1 sceną, kad galėtumėte pridėti šaltinį." Basic.Main.AddSourceHelp.Text="Turite turėti bent 1 sceną, kad galėtumėte pridėti šaltinį."
@ -174,6 +247,12 @@ Basic.MainMenu.Edit.Transform.Rotate180="Pasukti 180 laipsnių"
Basic.MainMenu.Edit.Transform.FlipHorizontal="Apversti &horizontaliai" Basic.MainMenu.Edit.Transform.FlipHorizontal="Apversti &horizontaliai"
Basic.MainMenu.Edit.Transform.FlipVertical="Apversti &vertikaliai" Basic.MainMenu.Edit.Transform.FlipVertical="Apversti &vertikaliai"
Basic.MainMenu.Edit.Transform.FitToScreen="Sutalpinti į ekraną" Basic.MainMenu.Edit.Transform.FitToScreen="Sutalpinti į ekraną"
Basic.MainMenu.Edit.Order="&Rikiavimas"
Basic.MainMenu.Edit.Order.MoveUp="Perkelti aukštyn"
Basic.MainMenu.Edit.Order.MoveDown="Perkelti žemyn"
Basic.MainMenu.Edit.Order.MoveToTop="Perkelti į viršų"
Basic.MainMenu.Edit.Order.MoveToBottom="Perkelti į apačią"

View file

@ -116,6 +116,7 @@ LicenseAgreement.Exit="Keluar"
Remux.SourceFile="Rakaman OBS" Remux.SourceFile="Rakaman OBS"
Remux.TargetFile="Fail sasaran" Remux.TargetFile="Fail sasaran"
Remux.OBSRecording="Rakaman OBS"
Remux.SelectRecording="Pilih Rakaman OBS …" Remux.SelectRecording="Pilih Rakaman OBS …"
Remux.SelectTarget="Pilih fail sasaran …" Remux.SelectTarget="Pilih fail sasaran …"
Remux.FileExistsTitle="Fail sasaran wujud" Remux.FileExistsTitle="Fail sasaran wujud"
@ -136,6 +137,9 @@ Basic.Scene="Adegan"
Basic.Main.PreviewConextMenu.Enable="Benarkan Pratonton" Basic.Main.PreviewConextMenu.Enable="Benarkan Pratonton"
Deinterlacing.Retro="Retro"
Deinterlacing.Linear="Linear"
Basic.Main.AddSceneDlg.Title="Tambah Adegan" Basic.Main.AddSceneDlg.Title="Tambah Adegan"
Basic.Main.AddSceneDlg.Text="Sila taip nama adegan" Basic.Main.AddSceneDlg.Text="Sila taip nama adegan"
@ -193,6 +197,7 @@ Basic.Filters.Title="Penapis untuk %1"
Basic.Filters.AddFilter.Title="Nama penapis" Basic.Filters.AddFilter.Title="Nama penapis"
Basic.Filters.AddFilter.Text="Sila nyatakan nama penapis" Basic.Filters.AddFilter.Text="Sila nyatakan nama penapis"
Basic.TransformWindow="Pengubahan Item Adegan"
Basic.TransformWindow.Position="Kedudukan" Basic.TransformWindow.Position="Kedudukan"
Basic.TransformWindow.Rotation="Pusingan" Basic.TransformWindow.Rotation="Pusingan"
Basic.TransformWindow.Size="Saiz" Basic.TransformWindow.Size="Saiz"
@ -220,6 +225,7 @@ Basic.Main.StartRecording="Mula rakaman"
Basic.Main.StartStreaming="Mula 'streaming'" Basic.Main.StartStreaming="Mula 'streaming'"
Basic.Main.StopRecording="Hentikan rakaman" Basic.Main.StopRecording="Hentikan rakaman"
Basic.Main.StopStreaming="Hentikan 'streaming'" Basic.Main.StopStreaming="Hentikan 'streaming'"
Basic.Main.ForceStopStreaming="Berhenti 'streaming' (buang kelewatan)"
Basic.MainMenu.File="&Fail" Basic.MainMenu.File="&Fail"
Basic.MainMenu.File.Export="&Export" Basic.MainMenu.File.Export="&Export"
@ -228,20 +234,57 @@ Basic.MainMenu.File.ShowRecordings="Papar &Rakaman"
Basic.MainMenu.File.Settings="&Tetapan" Basic.MainMenu.File.Settings="&Tetapan"
Basic.MainMenu.File.ShowSettingsFolder="Tunjukkan Folder Tetapan" Basic.MainMenu.File.ShowSettingsFolder="Tunjukkan Folder Tetapan"
Basic.MainMenu.File.ShowProfileFolder="Tunjukkan Folder Profil" Basic.MainMenu.File.ShowProfileFolder="Tunjukkan Folder Profil"
Basic.MainMenu.AlwaysOnTop="&Sentiasa Di Atas"
Basic.MainMenu.File.Exit="Keluar (&X)" Basic.MainMenu.File.Exit="Keluar (&X)"
Basic.MainMenu.Edit="&Sunting"
Basic.MainMenu.Edit.Undo="&Ubah Balik" Basic.MainMenu.Edit.Undo="&Ubah Balik"
Basic.MainMenu.Edit.Redo="Buat Semula (&R)" Basic.MainMenu.Edit.Redo="Buat Semula (&R)"
Basic.MainMenu.Edit.UndoAction="&Ubah Balik $1" Basic.MainMenu.Edit.UndoAction="&Ubah Balik $1"
Basic.MainMenu.Edit.RedoAction="&Ubah Semula $1"
Basic.MainMenu.Edit.Transform="&Ubah"
Basic.MainMenu.Edit.Transform.EditTransform="&Sunting Perubahan..."
Basic.MainMenu.Edit.Transform.Rotate90CW="Putarkan 90 darjah mengikut arah jam"
Basic.MainMenu.Edit.Transform.Rotate90CCW="Putarkan 90 darjah melawan arah jam"
Basic.MainMenu.Edit.Transform.Rotate180="Putarkan 180 darjah"
Basic.MainMenu.Edit.Transform.FitToScreen="&Muat di skrin"
Basic.MainMenu.Edit.Transform.StretchToScreen="&Regangkan ke skrin"
Basic.MainMenu.Edit.Order.MoveUp="Gerakkan ke &atas"
Basic.MainMenu.Edit.Order.MoveDown="Gerakkan ke &bawah"
Basic.MainMenu.Profile="&Profil"
Basic.MainMenu.Help.Website="Lawat laman &Web"
Basic.MainMenu.Help.Logs="Fail &Log"
Basic.MainMenu.Help.Logs.ShowLogs="&Tunjukkan Fail-Fail Log"
Basic.MainMenu.Help.Logs.UploadCurrentLog="Muat naik Fail Log &Kini"
Basic.MainMenu.Help.CheckForUpdates="Semak Versi Baharu"
Basic.Settings.ConfirmTitle="Sahkan Perubahan" Basic.Settings.ConfirmTitle="Sahkan Perubahan"
Basic.Settings.Confirm="Anda mempunyai perubahan yang tidak disimpan. Simpan perubahan?"
Basic.Settings.General="Am"
Basic.Settings.General.Theme="Tema"
Basic.Settings.General.Language="Bahasa"
Basic.Settings.General.WarnBeforeStartingStream="Tunjukkan dialog pengesahan ketika memulakan 'stream'"
Basic.Settings.General.WarnBeforeStoppingStream="Tunjukkan dialog pengesahan ketika menghentikan 'stream'"
Basic.Settings.Stream="'Stream'"
Basic.Settings.Stream.StreamType="Jenis 'Stream'"
Basic.Settings.Output.Format="Format Rakaman"
Basic.Settings.Output.SelectFile="Pilih Fail Rakaman"
Basic.Settings.Output.Simple.RecordingQuality="Kualiti Rakaman"
Basic.Settings.Output.Simple.RecordingQuality.Stream="Sama seperti 'stream'"
Basic.Settings.Output.Simple.Encoder.Software="Perisian (x264)"
Basic.Settings.Output.Reconnect="Sambung semula secara automatik"
Basic.Settings.Output.RetryDelay="Kelewatan Percubaan (saat)"
Basic.Settings.Output.MaxRetries="Cubaan Maksimum"
Basic.Settings.Output.Adv.Recording="Rakaman"
Basic.Settings.Output.Adv.Recording.Type="Jenis"
Basic.Settings.Output.Adv.FFmpeg.Type="Jenis Output FFmpeg" Basic.Settings.Output.Adv.FFmpeg.Type="Jenis Output FFmpeg"

View file

@ -8,6 +8,7 @@ Cancel="Avbryt"
Close="Lukk" Close="Lukk"
Save="Lagre" Save="Lagre"
Discard="Forkast" Discard="Forkast"
Disable="Deaktiver"
Yes="Ja" Yes="Ja"
No="Nei" No="Nei"
Add="Legg til" Add="Legg til"
@ -38,10 +39,33 @@ Untitled="Uten navn"
New="Ny" New="Ny"
Duplicate="Dupliser" Duplicate="Dupliser"
Enable="Aktiver" Enable="Aktiver"
DisableOSXVSync="Deaktiver OS X v-sync"
ResetOSXVSyncOnExit="Tilbakestill OS X v-sync ved avsluttning"
HighResourceUsage="Koder overbelastet! Vurder nedjustering av videokvaliteten eller en raskere forhåndsinstilling for koderen."
Transition="Overgang" Transition="Overgang"
QuickTransitions="Raske overganger"
Left="Venstre"
Right="Høyre"
Top="Topp"
Bottom="Bunn"
QuickTransitions.SwapScenes="Bytt forhåndsvisnings-/utgangsscener etter overgang"
QuickTransitions.SwapScenesTT="Bytter forhåndsvisnings- og utgangsscenen etter overgang, hvis den originale utgangsscenen fortsatt eksisterer.\nDette vil ikke tilbakestille endringer på den originale utgangsscenen."
QuickTransitions.DuplicateScene="Dupliser scene"
QuickTransitions.DuplicateSceneTT="Når denne instillingen er aktiv kan du justere visningen av kilder i den samme scenen uten endring i utgangsvisningen.\nOm du vil endre kildenes instillinger må du aktivere «dupliserte kilder.»\nVed aktivering eller deaktivering av denne instillingen vil utgangsscenen omstilles, om den fortsatt eksisterer."
QuickTransitions.EditProperties="Dupliserte kilder"
QuickTransitions.EditPropertiesTT="Lar deg justere kilders egenskaper i samme scene uten å endre visning i utgangsscenen.\nKan bare brukes om instillingen «duplisert scene» er aktiv.\nEnkelte kilder (som opptak eller mediekilder) støtter ikke denne funksjonen og kan ikke endres separat.\nOm du aktiverer eller deaktiverer denne instillingen vil omstille utgangsscenen om den fortsatt eksisterer.\n\nAdvarsel: kan kreve mer systemressurser ettersom alle kildene i scenen blir duplisert."
QuickTransitions.HotkeyName="Hurtigovergang: %1"
Basic.AddTransition="Legg til konfigurerbar overgang"
Basic.RemoveTransition="Fjern konfigurerbar overgang"
Basic.TransitionProperties="Egenskaper"
Basic.SceneTransitions="Sceneoverganger"
Basic.TransitionDuration="Varighet"
Basic.TogglePreviewProgramMode="Studiomodus"
TransitionNameDlg.Text="Gi et navn til overgangen"
TransitionNameDlg.Title="Overgangsnavn"
TitleBar.Profile="Profil" TitleBar.Profile="Profil"
TitleBar.Scenes="Scener" TitleBar.Scenes="Scener"
@ -52,7 +76,11 @@ NameExists.Text="Dette navnet er allerede i bruk."
NoNameEntered.Title="Vennligst oppgi et gyldig navn" NoNameEntered.Title="Vennligst oppgi et gyldig navn"
NoNameEntered.Text="Du kan ikke bruke et tomt navn." NoNameEntered.Text="Du kan ikke bruke et tomt navn."
ConfirmStart.Title="Begynn strømming?"
ConfirmStart.Text="Er du sikker på at du vil begynne strømming?"
ConfirmStop.Title="Stans strømming?"
ConfirmStop.Text="Er du sikker på at du vil stanse strømming?"
ConfirmExit.Title="Avslutt OBS?" ConfirmExit.Title="Avslutt OBS?"
ConfirmExit.Text="OBS er aktiv. Alle strømmer og opptak vil bli stoppet. Er du sikker på at du vil avslutte?" ConfirmExit.Text="OBS er aktiv. Alle strømmer og opptak vil bli stoppet. Er du sikker på at du vil avslutte?"
@ -63,11 +91,12 @@ ConfirmRemove.Text="Er du sikker på at du vil fjerne '$1'?"
Output.ConnectFail.Title="Tilkobling misklytes" Output.ConnectFail.Title="Tilkobling misklytes"
Output.ConnectFail.BadPath="Ugyldig filbane eller tilkoblings-URL. Vennligst bekreft at instillingene dine er riktige." Output.ConnectFail.BadPath="Ugyldig filbane eller tilkoblings-URL. Vennligst bekreft at instillingene dine er riktige."
Output.ConnectFail.ConnectFailed="Kunne ikke koble til tjener." Output.ConnectFail.ConnectFailed="Kunne ikke koble til tjener."
Output.ConnectFail.InvalidStream="Kunne ikke få adgang til den angitte kanalen eller strømmenøkkelen. Strømmenøkkelen kan være feil eller det kan være et problem med tilkoblingen til tjeneren."
Output.ConnectFail.Error="En uventet feil oppstod ved tilkobling til serveren. Detaljert informasjon kan du finne i loggfila." Output.ConnectFail.Error="En uventet feil oppstod ved tilkobling til serveren. Detaljert informasjon kan du finne i loggfila."
Output.ConnectFail.Disconnected="Koblet fra tjeneren." Output.ConnectFail.Disconnected="Koblet fra tjeneren."
Output.RecordFail.Title="Kunne ikke starte opptak" Output.RecordFail.Title="Kunne ikke starte opptak"
Output.RecordFail.Unsupported="Utdataformatet støttes enten ikke eller støtter ikke mer enn ett lydspor. Kontroller innstillingene og prøv igjen." Output.RecordFail.Unsupported="Utgangsformatet støttes enten ikke eller støtter ikke mer enn ett lydspor. Kontroller innstillingene og prøv igjen."
Output.RecordNoSpace.Title="Ikke nok diskplass" Output.RecordNoSpace.Title="Ikke nok diskplass"
Output.RecordNoSpace.Msg="Det er ikke nok diskplass til å fortsette opptaket." Output.RecordNoSpace.Msg="Det er ikke nok diskplass til å fortsette opptaket."
Output.RecordError.Title="Innspillingsfeil" Output.RecordError.Title="Innspillingsfeil"
@ -89,6 +118,7 @@ LicenseAgreement.Exit="Avslutt"
Remux.SourceFile="OBS-opptak" Remux.SourceFile="OBS-opptak"
Remux.TargetFile="Målfil" Remux.TargetFile="Målfil"
Remux.Remux="Remuks" Remux.Remux="Remuks"
Remux.OBSRecording="OBS-opptak"
Remux.FinishedTitle="Remuksing ferdig" Remux.FinishedTitle="Remuksing ferdig"
Remux.Finished="Opptak remukset" Remux.Finished="Opptak remukset"
Remux.FinishedError="Opptak remukset, men filen kan være ufullstendig." Remux.FinishedError="Opptak remukset, men filen kan være ufullstendig."
@ -115,6 +145,18 @@ Basic.DisplayCapture="Skjermopptak"
Basic.Main.PreviewConextMenu.Enable="Aktiver forhåndsvisning" Basic.Main.PreviewConextMenu.Enable="Aktiver forhåndsvisning"
Deinterlacing="Avsammenfletting"
Deinterlacing.Discard="Forkast"
Deinterlacing.Retro="Retro"
Deinterlacing.Blend="Bland"
Deinterlacing.Blend2x="Dobbelblanding"
Deinterlacing.Linear="Lineær"
Deinterlacing.Linear2x="Dobbellineær"
Deinterlacing.Yadif="Yadif"
Deinterlacing.Yadif2x="Dobbelyadif"
Deinterlacing.TopFieldFirst="Øverste felt først"
Deinterlacing.BottomFieldFirst="Nederste felt først"
Basic.Main.AddSceneDlg.Title="Ny Scene" Basic.Main.AddSceneDlg.Title="Ny Scene"
Basic.Main.AddSceneDlg.Text="Vennligst gi et navn til scenen." Basic.Main.AddSceneDlg.Text="Vennligst gi et navn til scenen."
@ -138,17 +180,23 @@ Basic.SourceSelect.AddExisting="Legg til eksisterende"
Basic.SourceSelect.AddVisible="Gjør kilden synlig" Basic.SourceSelect.AddVisible="Gjør kilden synlig"
Basic.PropertiesWindow="Egenskaper for '%1'" Basic.PropertiesWindow="Egenskaper for '%1'"
Basic.PropertiesWindow.AutoSelectFormat="%1 (selvvalg: %2)"
Basic.PropertiesWindow.SelectColor="Velg farge" Basic.PropertiesWindow.SelectColor="Velg farge"
Basic.PropertiesWindow.SelectFont="Velg skrifttype" Basic.PropertiesWindow.SelectFont="Velg skrifttype"
Basic.PropertiesWindow.ConfirmTitle="Innstillingene er endret" Basic.PropertiesWindow.ConfirmTitle="Innstillingene er endret"
Basic.PropertiesWindow.Confirm="Det er ulagra endringer. Vil du beholde dem?" Basic.PropertiesWindow.Confirm="Det er ulagra endringer. Vil du beholde dem?"
Basic.PropertiesWindow.NoProperties="Ingen egenskaper tilgjengelige" Basic.PropertiesWindow.NoProperties="Ingen egenskaper tilgjengelige"
Basic.PropertiesWindow.AddFiles="Legg til filer" Basic.PropertiesWindow.AddFiles="Legg til filer"
Basic.PropertiesWindow.AddDir="Legg til mappe"
Basic.PropertiesWindow.AddURL="Legg til fil- eller URL-adresse" Basic.PropertiesWindow.AddURL="Legg til fil- eller URL-adresse"
Basic.PropertiesWindow.AddEditableListDir="Legg mappe til «%1»"
Basic.PropertiesWindow.AddEditableListFiles="Legg filer til '%1'" Basic.PropertiesWindow.AddEditableListFiles="Legg filer til '%1'"
Basic.PropertiesWindow.AddEditableListEntry="Lag oppføring til '%1'" Basic.PropertiesWindow.AddEditableListEntry="Lag oppføring til '%1'"
Basic.PropertiesWindow.EditEditableListEntry="Endre oppføring fra '%1'" Basic.PropertiesWindow.EditEditableListEntry="Endre oppføring fra '%1'"
Basic.PropertiesView.FPS.Simple="Bildefrekvens (enkel)"
Basic.PropertiesView.FPS.Rational="Bildefrekvens (rasjonalt tall)"
Basic.PropertiesView.FPS.ValidFPSRanges="Gyldige bildefrekvensrekkevidder:"
Basic.InteractionWindow="Kommuniserer med «%1»" Basic.InteractionWindow="Kommuniserer med «%1»"
@ -176,6 +224,7 @@ Basic.TransformWindow.Alignment="Posisjonsoppstilling"
Basic.TransformWindow.BoundsType="Innholdsavgrensningstype" Basic.TransformWindow.BoundsType="Innholdsavgrensningstype"
Basic.TransformWindow.BoundsAlignment="Oppstilling i innholdsavgrensning" Basic.TransformWindow.BoundsAlignment="Oppstilling i innholdsavgrensning"
Basic.TransformWindow.Bounds="Innholdsavgrensningsstørrelse" Basic.TransformWindow.Bounds="Innholdsavgrensningsstørrelse"
Basic.TransformWindow.Crop="Beskjæring"
Basic.TransformWindow.Alignment.TopLeft="Øverst til venstre" Basic.TransformWindow.Alignment.TopLeft="Øverst til venstre"
Basic.TransformWindow.Alignment.TopCenter="Øverst i midten" Basic.TransformWindow.Alignment.TopCenter="Øverst i midten"
@ -204,7 +253,9 @@ Basic.Main.Connecting="Kobler til…"
Basic.Main.StartRecording="Start Opptak" Basic.Main.StartRecording="Start Opptak"
Basic.Main.StartStreaming="Start Strømming" Basic.Main.StartStreaming="Start Strømming"
Basic.Main.StopRecording="Stopp Opptak" Basic.Main.StopRecording="Stopp Opptak"
Basic.Main.StoppingRecording="Stanser innspilling…"
Basic.Main.StopStreaming="Stopp Strømming" Basic.Main.StopStreaming="Stopp Strømming"
Basic.Main.StoppingStreaming="Stanser strøm…"
Basic.Main.ForceStopStreaming="Stopp strømming (forkast forsinkelse)" Basic.Main.ForceStopStreaming="Stopp strømming (forkast forsinkelse)"
Basic.MainMenu.File="&Fil" Basic.MainMenu.File="&Fil"
@ -215,6 +266,7 @@ Basic.MainMenu.File.Remux="Re&muks opptak"
Basic.MainMenu.File.Settings="Inn&stillinger" Basic.MainMenu.File.Settings="Inn&stillinger"
Basic.MainMenu.File.ShowSettingsFolder="Vis innstillingsmappen" Basic.MainMenu.File.ShowSettingsFolder="Vis innstillingsmappen"
Basic.MainMenu.File.ShowProfileFolder="Vis profilmappen" Basic.MainMenu.File.ShowProfileFolder="Vis profilmappen"
Basic.MainMenu.AlwaysOnTop="&Alltid synlig"
Basic.MainMenu.File.Exit="&Avslutt" Basic.MainMenu.File.Exit="&Avslutt"
Basic.MainMenu.Edit="&Redigér" Basic.MainMenu.Edit="&Redigér"
@ -240,6 +292,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="Legg på &toppen"
Basic.MainMenu.Edit.Order.MoveToBottom="Legg på &bunnen" Basic.MainMenu.Edit.Order.MoveToBottom="Legg på &bunnen"
Basic.MainMenu.Edit.AdvAudio="&Avanserte lydinstillinger" Basic.MainMenu.Edit.AdvAudio="&Avanserte lydinstillinger"
Basic.MainMenu.SceneCollection="&Scenesamling" Basic.MainMenu.SceneCollection="&Scenesamling"
Basic.MainMenu.Profile="&Profil" Basic.MainMenu.Profile="&Profil"
@ -259,30 +312,46 @@ Basic.Settings.Confirm="Du har endringer som ikke er lagret. Vil du lagre?"
Basic.Settings.General="Generelt" Basic.Settings.General="Generelt"
Basic.Settings.General.Theme="Tema" Basic.Settings.General.Theme="Tema"
Basic.Settings.General.Language="Språk" Basic.Settings.General.Language="Språk"
Basic.Settings.General.WarnBeforeStartingStream="Vis bekreftelsesdialogboks når du starter strømming"
Basic.Settings.General.WarnBeforeStoppingStream="Vis bekreftelsesdialogboks når stanser strømming"
Basic.Settings.General.HideProjectorCursor="Skjul musepekeren over projektorer"
Basic.Settings.General.Snapping="Festing ved kildejustering"
Basic.Settings.General.ScreenSnapping="Fest kilder til kanten av skjermen"
Basic.Settings.General.CenterSnapping="Fest kilder til vannrett og loddrett midtpunkt"
Basic.Settings.General.SourceSnapping="Fest kilder til andre kilder"
Basic.Settings.General.SnapDistance="Festingfølsomhet"
Basic.Settings.General.RecordWhenStreaming="Spill inn automatisk ved strømming"
Basic.Settings.General.KeepRecordingWhenStreamStops="Fortsett innspilling etter strømming"
Basic.Settings.Stream="Strøm" Basic.Settings.Stream="Strøm"
Basic.Settings.Stream.StreamType="Strømmetype" Basic.Settings.Stream.StreamType="Strømmetype"
Basic.Settings.Output="Innspilling" Basic.Settings.Output="Utgang"
Basic.Settings.Output.Format="Opptaksformat" Basic.Settings.Output.Format="Opptaksformat"
Basic.Settings.Output.Encoder="Koder" Basic.Settings.Output.Encoder="Koder"
Basic.Settings.Output.SelectDirectory="Velg opptaksmappe" Basic.Settings.Output.SelectDirectory="Velg opptaksmappe"
Basic.Settings.Output.SelectFile="Velg opptaksfil" Basic.Settings.Output.SelectFile="Velg opptaksfil"
Basic.Settings.Output.Mode="Innspillingsmodus" Basic.Settings.Output.EnforceBitrate="Håndhev strømmingtjenestens bitrategrense"
Basic.Settings.Output.Mode="Utgangsmodus"
Basic.Settings.Output.Mode.Simple="Enkel" Basic.Settings.Output.Mode.Simple="Enkel"
Basic.Settings.Output.Mode.Adv="Avansert" Basic.Settings.Output.Mode.Adv="Avansert"
Basic.Settings.Output.Mode.FFmpeg="FFmpeg produkt" Basic.Settings.Output.Mode.FFmpeg="FFmpeg-utgang"
Basic.Settings.Output.Simple.SavePath="Opptaksbane" Basic.Settings.Output.Simple.SavePath="Opptaksbane"
Basic.Settings.Output.Simple.RecordingQuality="Opptakskvalitet" Basic.Settings.Output.Simple.RecordingQuality="Opptakskvalitet"
Basic.Settings.Output.Simple.RecordingQuality.Stream="Samme som strøm" Basic.Settings.Output.Simple.RecordingQuality.Stream="Samme som strøm"
Basic.Settings.Output.Simple.RecordingQuality.Small="Høy kvalitet, middels filstørrelse" Basic.Settings.Output.Simple.RecordingQuality.Small="Høy kvalitet, middels filstørrelse"
Basic.Settings.Output.Simple.RecordingQuality.HQ="Veldig høy kvalitet, stor filstørrelse" Basic.Settings.Output.Simple.RecordingQuality.HQ="Veldig høy kvalitet, stor filstørrelse"
Basic.Settings.Output.Simple.RecordingQuality.Lossless="Tapsfri kvalitet, veldig stor filstørrelse" Basic.Settings.Output.Simple.RecordingQuality.Lossless="Tapsfri kvalitet, veldig stor filstørrelse"
Basic.Settings.Output.Simple.Warn.VideoBitrate="Advarsel: strømmens bitrate vil settes til %1, som er den øvre grensen for gjeldende strømmetjeneste. Om du ønsker å gå over denne grensen må du aktivere avanserte koderinnstillinger og sørge for at valget for håndheving av strømmetjenestens grense ikke er huket av."
Basic.Settings.Output.Simple.Warn.AudioBitrate="Advarsel: strømmens lydbitrate vil settes til %1, som er den øvre grensen for gjeldende strømmetjeneste. Om du ønsker å gå over denne grensen må du aktivere avanserte koderinnstillinger og sørge for at valget for håndheving av strømmetjenestens grense ikke er huket av."
Basic.Settings.Output.Simple.Warn.Encoder="Advarsel: Opptak med programvarekoder i en annen kvalitetsinnstilling enn strømmingen vil kreve ekstra prosessorressurser om du strømmer og tar opp på samme tid." Basic.Settings.Output.Simple.Warn.Encoder="Advarsel: Opptak med programvarekoder i en annen kvalitetsinnstilling enn strømmingen vil kreve ekstra prosessorressurser om du strømmer og tar opp på samme tid."
Basic.Settings.Output.Simple.Warn.Lossless="Advarsel: Tapsfri kvalitet resulterer i enormt store filstørrelser! Denne innstillingen kan bruke oppimot 7 GB diskplass per minutt ved opptak med høy oppløsning og bildefrekvens. Tapsfri kvalitet anbefales ikke for lange opptak med mindre du har store mengder diskplass tilgjengelig." Basic.Settings.Output.Simple.Warn.Lossless="Advarsel: Tapsfri kvalitet resulterer i enormt store filstørrelser! Denne innstillingen kan bruke oppimot 7 GB diskplass per minutt ved opptak med høy oppløsning og bildefrekvens. Tapsfri kvalitet anbefales ikke for lange opptak med mindre du har store mengder diskplass tilgjengelig."
Basic.Settings.Output.Simple.Warn.Lossless.Msg="Er du sikker på at du vil bruke tapsfri kvalitet?" Basic.Settings.Output.Simple.Warn.Lossless.Msg="Er du sikker på at du vil bruke tapsfri kvalitet?"
Basic.Settings.Output.Simple.Warn.Lossless.Title="Tapsfri kvalitet advarsel!" Basic.Settings.Output.Simple.Warn.Lossless.Title="Tapsfri kvalitet advarsel!"
Basic.Settings.Output.Simple.Warn.MultipleQSV="Advarsel: du kan ikke bruke flere separate QSV-kodere når du strømmer og tar opp samtidig. Hvis du ønsker gjøre begge på samme tid må du endre strømme- eller opptakskoderen."
Basic.Settings.Output.Simple.Encoder.Software="Programvare (x264)" Basic.Settings.Output.Simple.Encoder.Software="Programvare (x264)"
Basic.Settings.Output.Simple.Encoder.Hardware.QSV="Maskinvare (QSV)"
Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="Maskinvare (NVENC)"
Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Programvare (x264 forhåndsinstilling for liten prosessorbruk, øker filstørrelsen)" Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Programvare (x264 forhåndsinstilling for liten prosessorbruk, øker filstørrelsen)"
Basic.Settings.Output.VideoBitrate="Bildeoverføringshastighet" Basic.Settings.Output.VideoBitrate="Bildeoverføringshastighet"
Basic.Settings.Output.AudioBitrate="Lydoverføringshastighet" Basic.Settings.Output.AudioBitrate="Lydoverføringshastighet"
@ -292,8 +361,10 @@ Basic.Settings.Output.MaxRetries="Høyst antall tilkoblingsforsøk"
Basic.Settings.Output.Advanced="Aktiver Avanserte Koderinstillinger" Basic.Settings.Output.Advanced="Aktiver Avanserte Koderinstillinger"
Basic.Settings.Output.EncoderPreset="Koderforhåndsinstilling (raskere gir mindre prosessorbelastning)" Basic.Settings.Output.EncoderPreset="Koderforhåndsinstilling (raskere gir mindre prosessorbelastning)"
Basic.Settings.Output.CustomEncoderSettings="Egendefinert koderinstilling" Basic.Settings.Output.CustomEncoderSettings="Egendefinert koderinstilling"
Basic.Settings.Output.CustomMuxerSettings="Egenfinderte mukserinstillinger"
Basic.Settings.Output.NoSpaceFileName="Lag filnavn uten mellomrom"
Basic.Settings.Output.Adv.Rescale="Reskaler produkt" Basic.Settings.Output.Adv.Rescale="Reskaler utgang"
Basic.Settings.Output.Adv.AudioTrack="Lydspor" Basic.Settings.Output.Adv.AudioTrack="Lydspor"
Basic.Settings.Output.Adv.Streaming="Strømming" Basic.Settings.Output.Adv.Streaming="Strømming"
Basic.Settings.Output.Adv.ApplyServiceSettings="Bruk strømmetjenerens koderinstillinger" Basic.Settings.Output.Adv.ApplyServiceSettings="Bruk strømmetjenerens koderinstillinger"
@ -305,11 +376,13 @@ Basic.Settings.Output.Adv.Audio.Track4="Spor 4"
Basic.Settings.Output.Adv.Recording="Opptak" Basic.Settings.Output.Adv.Recording="Opptak"
Basic.Settings.Output.Adv.Recording.Type="Type" Basic.Settings.Output.Adv.Recording.Type="Type"
Basic.Settings.Output.Adv.Recording.Type.Standard="Standard" Basic.Settings.Output.Adv.Recording.Type.Standard="Standard"
Basic.Settings.Output.Adv.Recording.Type.FFmpegOutput="Egendefinert FFmpeg produkt" Basic.Settings.Output.Adv.Recording.Type.FFmpegOutput="Egendefinert FFmpeg-utgang"
Basic.Settings.Output.Adv.Recording.UseStreamEncoder="(Bruk strømkoder)" Basic.Settings.Output.Adv.Recording.UseStreamEncoder="(Bruk strømkoder)"
Basic.Settings.Output.Adv.FFmpeg.Type="FFmpeg-utdatatype" Basic.Settings.Output.Adv.Recording.Filename="Filnavnformat"
Basic.Settings.Output.Adv.FFmpeg.Type.URL="Utdata til URL" Basic.Settings.Output.Adv.Recording.OverwriteIfExists="Skriv over om filen eksisterer"
Basic.Settings.Output.Adv.FFmpeg.Type.RecordToFile="Utdata til fil" Basic.Settings.Output.Adv.FFmpeg.Type="FFmpeg-utgangstype"
Basic.Settings.Output.Adv.FFmpeg.Type.URL="Utgang til URL"
Basic.Settings.Output.Adv.FFmpeg.Type.RecordToFile="Utgang til fil"
Basic.Settings.Output.Adv.FFmpeg.SaveFilter.Common="Vanlige opptaksformater" Basic.Settings.Output.Adv.FFmpeg.SaveFilter.Common="Vanlige opptaksformater"
Basic.Settings.Output.Adv.FFmpeg.SaveFilter.All="Alle filer" Basic.Settings.Output.Adv.FFmpeg.SaveFilter.All="Alle filer"
Basic.Settings.Output.Adv.FFmpeg.SavePathURL="Filbane eller URL" Basic.Settings.Output.Adv.FFmpeg.SavePathURL="Filbane eller URL"
@ -327,12 +400,14 @@ Basic.Settings.Output.Adv.FFmpeg.AEncoder="Lydkoder"
Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Lydkoderinstillinger (om noen)" Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Lydkoderinstillinger (om noen)"
Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="Mukserinstillinger (om noen)" Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="Mukserinstillinger (om noen)"
FilenameFormatting.completer="%CCYY-%MM-%DD %hh-%mm-%ss\n%YY-%MM-%DD %hh-%mm-%ss\n%Y-%m-%d %H-%M-%S\n%y-%m-%d %H-%M-%S\n%a %Y-%m-%d %H-%M-%S\n%A %Y-%m-%d %H-%M-%S\n%Y-%b-%d %H-%M-%S\n%Y-%B-%d %H-%M-%S\n%Y-%m-%d %I-%M-%S-%p\n%Y-%m-%d %H-%M-%S-%z\n%Y-%m-%d %H-%M-%S-%Z"
FilenameFormatting.TT="%CCYY år, fire sifre\n%YY år, siste to sifre (00-99)\n%MM måned, som tall (01-12)\n%DD dag i måneden, forranstillt med null (01-31)\n%hh time, i tjuefiretimersformat (00-23)\n%mm minutt (00-59)\n%ss sekund (00-61)\n%% et prosenttegn\n%a forkortet ukedagsnavn\n%A helt ukedagsnavn\n%b forkortet månedsnavn\n%B helt månedsnavn\n%d dag i måneden, forranstillt med null (01-31)\n%H time, i tjuefiretimersformat (00-23)\n%I time, i tolvtimersformat (01-12)\n%m måned, som tall (01-12)\n%M minutt (00-59)\n%p formiddags- og ettermiddagsymbol (AM, PM)\n%S sekund (00-61)\n%y år, siste to sifre (00-99)\n%Y år\n%z ISO 8601 forskyvd fra UTC eller tidssone-\n navn eller -forkortelse\n%Z Tidssonenavn eller -forkortelse\n"
Basic.Settings.Video="Bilde" Basic.Settings.Video="Bilde"
Basic.Settings.Video.Adapter="Bildeadapter:" Basic.Settings.Video.Adapter="Bildeadapter:"
Basic.Settings.Video.BaseResolution="Grunnoppløsning (lerret):" Basic.Settings.Video.BaseResolution="Grunnoppløsning (lerret):"
Basic.Settings.Video.ScaledResolution="Utdataoppløsning (skalert):" Basic.Settings.Video.ScaledResolution="Utgangsoppløsning (skalert):"
Basic.Settings.Video.DownscaleFilter="Nedskaleringsfilter:" Basic.Settings.Video.DownscaleFilter="Nedskaleringsfilter:"
Basic.Settings.Video.DisableAeroWindows="Deaktiver Aero (kun Windows)" Basic.Settings.Video.DisableAeroWindows="Deaktiver Aero (kun Windows)"
Basic.Settings.Video.FPS="FPS:" Basic.Settings.Video.FPS="FPS:"
@ -343,7 +418,7 @@ Basic.Settings.Video.Numerator="Teller:"
Basic.Settings.Video.Denominator="Nevner:" Basic.Settings.Video.Denominator="Nevner:"
Basic.Settings.Video.Renderer="Renderer:" Basic.Settings.Video.Renderer="Renderer:"
Basic.Settings.Video.InvalidResolution="Ugyldig oppløsningsverdi. Må være [bredde]x[høyde] (f.eks. 1920x1080)" Basic.Settings.Video.InvalidResolution="Ugyldig oppløsningsverdi. Må være [bredde]x[høyde] (f.eks. 1920x1080)"
Basic.Settings.Video.CurrentlyActive="Bildeinnspilling er aktiv. Vennligst skru av alle innspillinger for å endre bildeinstillingene" Basic.Settings.Video.CurrentlyActive="Bildeutgang er aktiv. Vennligst stans alle utganger for å endre bildeinstillingene."
Basic.Settings.Video.DisableAero="Skru av Aero" Basic.Settings.Video.DisableAero="Skru av Aero"
Basic.Settings.Video.DownscaleFilter.Bilinear="Bilineær (raskest, men uskarp ved skalering)" Basic.Settings.Video.DownscaleFilter.Bilinear="Bilineær (raskest, men uskarp ved skalering)"
@ -362,6 +437,7 @@ Basic.Settings.Audio.EnablePushToMute="Aktiver demp-ved-trykk"
Basic.Settings.Audio.PushToMuteDelay="Demp-ved-trykk forsinkelse" Basic.Settings.Audio.PushToMuteDelay="Demp-ved-trykk forsinkelse"
Basic.Settings.Audio.EnablePushToTalk="Aktiver snakk-ved-trykk" Basic.Settings.Audio.EnablePushToTalk="Aktiver snakk-ved-trykk"
Basic.Settings.Audio.PushToTalkDelay="Snakk-ved-trykk forsinkelse" Basic.Settings.Audio.PushToTalkDelay="Snakk-ved-trykk forsinkelse"
Basic.Settings.Audio.UnknownAudioDevice="[Enhet ikke tilkoblet eller ikke tilgjengelig]"
Basic.Settings.Advanced="Avansert" Basic.Settings.Advanced="Avansert"
Basic.Settings.Advanced.FormatWarning="Advarsel: Fargeformater andre enn NV12 er ment for opptak. Disse formatene anbefales ikke ved strømming, da det fører til økt prosessorbruk som følge av fargeformatkonvertering." Basic.Settings.Advanced.FormatWarning="Advarsel: Fargeformater andre enn NV12 er ment for opptak. Disse formatene anbefales ikke ved strømming, da det fører til økt prosessorbruk som følge av fargeformatkonvertering."

View file

@ -87,6 +87,7 @@ ConfirmExit.Text="OBS is momenteel actief. Alle streams/opnames zullen worden af
ConfirmRemove.Title="Bevestig het verwijderen" ConfirmRemove.Title="Bevestig het verwijderen"
ConfirmRemove.Text="Weet je zeker dat je '$1' wil verwijderen?" ConfirmRemove.Text="Weet je zeker dat je '$1' wil verwijderen?"
ConfirmRemove.TextMultiple="Weet je zeker dat je %1 elementen wil verwijderen?"
Output.ConnectFail.Title="Kan geen verbinding maken" Output.ConnectFail.Title="Kan geen verbinding maken"
Output.ConnectFail.BadPath="Ongeldig pad of verbindings-url. Controleer a.u.b. of je instellingen geldig zijn." Output.ConnectFail.BadPath="Ongeldig pad of verbindings-url. Controleer a.u.b. of je instellingen geldig zijn."
@ -144,6 +145,12 @@ Basic.DisplayCapture="Beeldschermcapture"
Basic.Main.PreviewConextMenu.Enable="Preview inschakelen" Basic.Main.PreviewConextMenu.Enable="Preview inschakelen"
ScaleFiltering="Schaal-filter"
ScaleFiltering.Point="Point"
ScaleFiltering.Bilinear="Bilinear"
ScaleFiltering.Bicubic="Bicubic"
ScaleFiltering.Lanczos="Lanczos"
Deinterlacing="Deinterlacing" Deinterlacing="Deinterlacing"
Deinterlacing.Discard="Verwerpen" Deinterlacing.Discard="Verwerpen"
Deinterlacing.Retro="Retro" Deinterlacing.Retro="Retro"
@ -186,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="Instellingen Aangepast"
Basic.PropertiesWindow.Confirm="Er zijn onopgeslagen aanpassingen. Wil je deze bewaren?" Basic.PropertiesWindow.Confirm="Er zijn onopgeslagen aanpassingen. Wil je deze bewaren?"
Basic.PropertiesWindow.NoProperties="Geen eigenschappen beschikbaar" Basic.PropertiesWindow.NoProperties="Geen eigenschappen beschikbaar"
Basic.PropertiesWindow.AddFiles="Bestanden Toevoegen" Basic.PropertiesWindow.AddFiles="Bestanden Toevoegen"
Basic.PropertiesWindow.AddDir="Map Toevoegen"
Basic.PropertiesWindow.AddURL="Pad/URL Toevoegen" Basic.PropertiesWindow.AddURL="Pad/URL Toevoegen"
Basic.PropertiesWindow.AddEditableListDir="Voeg map toe aan '%1'"
Basic.PropertiesWindow.AddEditableListFiles="Voeg bestanden toe aan '%1'" Basic.PropertiesWindow.AddEditableListFiles="Voeg bestanden toe aan '%1'"
Basic.PropertiesWindow.AddEditableListEntry="Voeg toe aan '%1'" Basic.PropertiesWindow.AddEditableListEntry="Voeg toe aan '%1'"
Basic.PropertiesWindow.EditEditableListEntry="Verwijder van '%1'" Basic.PropertiesWindow.EditEditableListEntry="Verwijder van '%1'"
@ -250,7 +259,9 @@ Basic.Main.Connecting="Verbinden..."
Basic.Main.StartRecording="Opname Starten" Basic.Main.StartRecording="Opname Starten"
Basic.Main.StartStreaming="Stream Starten" Basic.Main.StartStreaming="Stream Starten"
Basic.Main.StopRecording="Opname Stoppen" Basic.Main.StopRecording="Opname Stoppen"
Basic.Main.StoppingRecording="Opname Stoppen..."
Basic.Main.StopStreaming="Stream Stoppen" Basic.Main.StopStreaming="Stream Stoppen"
Basic.Main.StoppingStreaming="Stream Stoppen..."
Basic.Main.ForceStopStreaming="Stop Stream (vertraging negeren)" Basic.Main.ForceStopStreaming="Stop Stream (vertraging negeren)"
Basic.MainMenu.File="&Bestand" Basic.MainMenu.File="&Bestand"
@ -287,6 +298,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="Naar Boven Schuiven (&T)"
Basic.MainMenu.Edit.Order.MoveToBottom="Naar Onderen Schuiven (&B)" Basic.MainMenu.Edit.Order.MoveToBottom="Naar Onderen Schuiven (&B)"
Basic.MainMenu.Edit.AdvAudio="Geavanceerde &Audioinstellingen" Basic.MainMenu.Edit.AdvAudio="Geavanceerde &Audioinstellingen"
Basic.MainMenu.View="&Beeld"
Basic.MainMenu.View.Toolbars="&Werkbalken"
Basic.MainMenu.View.Toolbars.Listboxes="&Lijsten"
Basic.MainMenu.View.SceneTransitions="S&cène-overgangen"
Basic.MainMenu.View.StatusBar="&Statusbalk"
Basic.MainMenu.SceneCollection="&Scèneverzameling" Basic.MainMenu.SceneCollection="&Scèneverzameling"
Basic.MainMenu.Profile="&Profiel" Basic.MainMenu.Profile="&Profiel"
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="Thema"
Basic.Settings.General.Language="Taal" Basic.Settings.General.Language="Taal"
Basic.Settings.General.WarnBeforeStartingStream="Laat bevestigingsvenster zien bij het starten van streams" Basic.Settings.General.WarnBeforeStartingStream="Laat bevestigingsvenster zien bij het starten van streams"
Basic.Settings.General.WarnBeforeStoppingStream="Laat bevestiginsvenster zien bij het stoppen van streams" Basic.Settings.General.WarnBeforeStoppingStream="Laat bevestiginsvenster zien bij het stoppen van streams"
Basic.Settings.General.HideProjectorCursor="Verberg cursor boven projectors"
Basic.Settings.General.Snapping="Bronuitlijning" Basic.Settings.General.Snapping="Bronuitlijning"
Basic.Settings.General.ScreenSnapping="Bronnen uitlijnen op de rand van het scherm" Basic.Settings.General.ScreenSnapping="Bronnen uitlijnen op de rand van het scherm"
Basic.Settings.General.CenterSnapping="Bronnen uitlijnen op het horizontale en verticale midden" Basic.Settings.General.CenterSnapping="Bronnen uitlijnen op het horizontale en verticale midden"
Basic.Settings.General.SourceSnapping="Bronnen uitlijnen op andere bronnen" Basic.Settings.General.SourceSnapping="Bronnen uitlijnen op andere bronnen"
Basic.Settings.General.SnapDistance="Gevoeligheid" Basic.Settings.General.SnapDistance="Gevoeligheid"
Basic.Settings.General.RecordWhenStreaming="Stream automatisch opnemen"
Basic.Settings.General.KeepRecordingWhenStreamStops="Opname voortzetten als de stream stopt"
Basic.Settings.Stream="Stream" Basic.Settings.Stream="Stream"
Basic.Settings.Stream.StreamType="Stream Type" Basic.Settings.Stream.StreamType="Stream Type"
@ -431,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="Push-to-talk vertraging"
Basic.Settings.Audio.UnknownAudioDevice="[Apparaat niet verbonden of niet beschikbaar]" Basic.Settings.Audio.UnknownAudioDevice="[Apparaat niet verbonden of niet beschikbaar]"
Basic.Settings.Advanced="Geavanceerd" Basic.Settings.Advanced="Geavanceerd"
Basic.Settings.Advanced.General.ProcessPriority="Procesprioriteit"
Basic.Settings.Advanced.General.ProcessPriority.High="Hoog"
Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="Bovennormaal"
Basic.Settings.Advanced.General.ProcessPriority.Normal="Normaal"
Basic.Settings.Advanced.General.ProcessPriority.Idle="Laagst"
Basic.Settings.Advanced.FormatWarning="Waarschuwing: Andere kleurformaten dan NV12 zijn hoofdzakelijk bedoeld voor opnemen en worden niet aanbevolen om mee te streamen. Streamen kan verhoogd CPU-gebruik opleveren vanwege kleurformaatconversie." Basic.Settings.Advanced.FormatWarning="Waarschuwing: Andere kleurformaten dan NV12 zijn hoofdzakelijk bedoeld voor opnemen en worden niet aanbevolen om mee te streamen. Streamen kan verhoogd CPU-gebruik opleveren vanwege kleurformaatconversie."
Basic.Settings.Advanced.Audio.BufferingTime="Audio Buffertijd" Basic.Settings.Advanced.Audio.BufferingTime="Audio Buffertijd"
Basic.Settings.Advanced.Video.ColorFormat="Kleurindeling" Basic.Settings.Advanced.Video.ColorFormat="Kleurindeling"

View file

@ -87,6 +87,7 @@ ConfirmExit.Text="OBS jest uruchomiony. Wszelkie transmisje czy nagrania zostan
ConfirmRemove.Title="Potwierdź usunięcie" ConfirmRemove.Title="Potwierdź usunięcie"
ConfirmRemove.Text="Czy na pewno chcesz usunąć '$1'?" ConfirmRemove.Text="Czy na pewno chcesz usunąć '$1'?"
ConfirmRemove.TextMultiple="Liczba elementów do usunięcia: %1. Czy na pewno chcesz je usunąć?"
Output.ConnectFail.Title="Nie udało się połączyć" Output.ConnectFail.Title="Nie udało się połączyć"
Output.ConnectFail.BadPath="Nieprawidłowa ścieżka lub adres URL połączenia. Sprawdź poprawność ustawień." Output.ConnectFail.BadPath="Nieprawidłowa ścieżka lub adres URL połączenia. Sprawdź poprawność ustawień."
@ -118,6 +119,7 @@ LicenseAgreement.Exit="Wyjście"
Remux.SourceFile="Nagrywanie OBS" Remux.SourceFile="Nagrywanie OBS"
Remux.TargetFile="Plik docelowy" Remux.TargetFile="Plik docelowy"
Remux.Remux="Przepakowanie (remux)" Remux.Remux="Przepakowanie (remux)"
Remux.OBSRecording="Plik nagrania z OBS"
Remux.FinishedTitle="Przepakowanie zakończone" Remux.FinishedTitle="Przepakowanie zakończone"
Remux.Finished="Nagranie przepakowane" Remux.Finished="Nagranie przepakowane"
Remux.FinishedError="Nagranie przepakowane ale może być niekompletne" Remux.FinishedError="Nagranie przepakowane ale może być niekompletne"
@ -143,6 +145,12 @@ Basic.DisplayCapture="Przechwytywanie obrazu"
Basic.Main.PreviewConextMenu.Enable="Włącz podgląd" Basic.Main.PreviewConextMenu.Enable="Włącz podgląd"
ScaleFiltering="Filtrowanie skalowania"
ScaleFiltering.Point="Punktowe"
ScaleFiltering.Bilinear="Dwuliniowe"
ScaleFiltering.Bicubic="Dwusześcienne"
ScaleFiltering.Lanczos="Lanczos"
Deinterlacing="Usuwanie przeplotu" Deinterlacing="Usuwanie przeplotu"
Deinterlacing.Discard="Odrzuć" Deinterlacing.Discard="Odrzuć"
Deinterlacing.Retro="Retro" Deinterlacing.Retro="Retro"
@ -185,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="Ustawienia zmienione"
Basic.PropertiesWindow.Confirm="Czy chcesz zachować niezapisane zmiany?" Basic.PropertiesWindow.Confirm="Czy chcesz zachować niezapisane zmiany?"
Basic.PropertiesWindow.NoProperties="Brak właściwości" Basic.PropertiesWindow.NoProperties="Brak właściwości"
Basic.PropertiesWindow.AddFiles="Dodaj pliki" Basic.PropertiesWindow.AddFiles="Dodaj pliki"
Basic.PropertiesWindow.AddDir="Dodaj folder"
Basic.PropertiesWindow.AddURL="Dodaj ścieżkę/adres URL" Basic.PropertiesWindow.AddURL="Dodaj ścieżkę/adres URL"
Basic.PropertiesWindow.AddEditableListDir="Dodaj folder do '%1'"
Basic.PropertiesWindow.AddEditableListFiles="Dodaj pliki do '%1'" Basic.PropertiesWindow.AddEditableListFiles="Dodaj pliki do '%1'"
Basic.PropertiesWindow.AddEditableListEntry="Dodaj wpis do '%1'" Basic.PropertiesWindow.AddEditableListEntry="Dodaj wpis do '%1'"
Basic.PropertiesWindow.EditEditableListEntry="Edytuj wpis w '%1'" Basic.PropertiesWindow.EditEditableListEntry="Edytuj wpis w '%1'"
@ -249,7 +259,9 @@ Basic.Main.Connecting="Łączenie..."
Basic.Main.StartRecording="Rozpocznij nagrywanie" Basic.Main.StartRecording="Rozpocznij nagrywanie"
Basic.Main.StartStreaming="Rozpocznij stream" Basic.Main.StartStreaming="Rozpocznij stream"
Basic.Main.StopRecording="Zatrzymaj nagrywanie" Basic.Main.StopRecording="Zatrzymaj nagrywanie"
Basic.Main.StoppingRecording="Zatrzymywanie nagrywania..."
Basic.Main.StopStreaming="Zatrzymaj stream" Basic.Main.StopStreaming="Zatrzymaj stream"
Basic.Main.StoppingStreaming="Zatrzymywanie streamowania..."
Basic.Main.ForceStopStreaming="Zatrzymaj stream (anuluj opóźnienie)" Basic.Main.ForceStopStreaming="Zatrzymaj stream (anuluj opóźnienie)"
Basic.MainMenu.File="&Plik" Basic.MainMenu.File="&Plik"
@ -286,6 +298,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="Przesuń na samą gó&rę"
Basic.MainMenu.Edit.Order.MoveToBottom="Przesuń na sa&m dół" Basic.MainMenu.Edit.Order.MoveToBottom="Przesuń na sa&m dół"
Basic.MainMenu.Edit.AdvAudio="Z&aawansowane ustawienia dźwięku" Basic.MainMenu.Edit.AdvAudio="Z&aawansowane ustawienia dźwięku"
Basic.MainMenu.View="&Widok"
Basic.MainMenu.View.Toolbars="Paski &narzędzi"
Basic.MainMenu.View.Toolbars.Listboxes="Panele kontrolne &list elementów"
Basic.MainMenu.View.SceneTransitions="Efekty &przejścia scen"
Basic.MainMenu.View.StatusBar="Pasek &stanu"
Basic.MainMenu.SceneCollection="Zbiór &scen" Basic.MainMenu.SceneCollection="Zbiór &scen"
Basic.MainMenu.Profile="&Profil" Basic.MainMenu.Profile="&Profil"
@ -307,11 +325,14 @@ Basic.Settings.General.Theme="Motyw"
Basic.Settings.General.Language="Język" Basic.Settings.General.Language="Język"
Basic.Settings.General.WarnBeforeStartingStream="Pokaż komunikat potwierdzenia uruchomienia streamowania" Basic.Settings.General.WarnBeforeStartingStream="Pokaż komunikat potwierdzenia uruchomienia streamowania"
Basic.Settings.General.WarnBeforeStoppingStream="Pokaż komunikat potwierdzenia zatrzymania streamowania" Basic.Settings.General.WarnBeforeStoppingStream="Pokaż komunikat potwierdzenia zatrzymania streamowania"
Basic.Settings.General.HideProjectorCursor="Ukryj kursor podglądu na pełnym ekranie"
Basic.Settings.General.Snapping="Przyciąganie elementów źródłowych" Basic.Settings.General.Snapping="Przyciąganie elementów źródłowych"
Basic.Settings.General.ScreenSnapping="Przyciągaj do krawędzi ekranu" Basic.Settings.General.ScreenSnapping="Przyciągaj do krawędzi ekranu"
Basic.Settings.General.CenterSnapping="Przyciągaj do poziomego i pionowego środka" Basic.Settings.General.CenterSnapping="Przyciągaj do poziomego i pionowego środka"
Basic.Settings.General.SourceSnapping="Przyciągaj źródła do innych źródeł" Basic.Settings.General.SourceSnapping="Przyciągaj źródła do innych źródeł"
Basic.Settings.General.SnapDistance="Czułość przyciągania" Basic.Settings.General.SnapDistance="Czułość przyciągania"
Basic.Settings.General.RecordWhenStreaming="Automatyczne nagrywanie streamu"
Basic.Settings.General.KeepRecordingWhenStreamStops="Zachowaj nagranie po zatrzymaniu streamu"
Basic.Settings.Stream="Stream" Basic.Settings.Stream="Stream"
Basic.Settings.Stream.StreamType="Typ streamu" Basic.Settings.Stream.StreamType="Typ streamu"
@ -430,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="Opóźnienie \"naciśnij-aby-mówić\""
Basic.Settings.Audio.UnknownAudioDevice="[Urządzenie niedostępne lub niepodłączone]" Basic.Settings.Audio.UnknownAudioDevice="[Urządzenie niedostępne lub niepodłączone]"
Basic.Settings.Advanced="Zaawansowane" Basic.Settings.Advanced="Zaawansowane"
Basic.Settings.Advanced.General.ProcessPriority="Priorytet procesu"
Basic.Settings.Advanced.General.ProcessPriority.High="Wysoki"
Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="Powyżej normalnego"
Basic.Settings.Advanced.General.ProcessPriority.Normal="Normalny"
Basic.Settings.Advanced.General.ProcessPriority.Idle="Bezczynny"
Basic.Settings.Advanced.FormatWarning="Ostrzeżenie: Formaty koloru inne niż NV12 przeznaczone są głównie do nagrywania i nie są zalecane podczas przesyłania strumieniowego. Użycie innych formatów koloru podczas przesyłania strumieniowego wymagać będzie przekształcenia formatu w locie, co może znacząco zwiększyć obciążenie procesora." Basic.Settings.Advanced.FormatWarning="Ostrzeżenie: Formaty koloru inne niż NV12 przeznaczone są głównie do nagrywania i nie są zalecane podczas przesyłania strumieniowego. Użycie innych formatów koloru podczas przesyłania strumieniowego wymagać będzie przekształcenia formatu w locie, co może znacząco zwiększyć obciążenie procesora."
Basic.Settings.Advanced.Audio.BufferingTime="Czas buforowania dźwięku" Basic.Settings.Advanced.Audio.BufferingTime="Czas buforowania dźwięku"
Basic.Settings.Advanced.Video.ColorFormat="Format koloru" Basic.Settings.Advanced.Video.ColorFormat="Format koloru"

View file

@ -54,6 +54,7 @@ QuickTransitions.SwapScenesTT="Troca a preview e a saída após transicionar (se
QuickTransitions.DuplicateScene="Duplicar Cena" QuickTransitions.DuplicateScene="Duplicar Cena"
QuickTransitions.DuplicateSceneTT="Quando estiver editando a mesma cena, permite editar a visibilidade/transformação de fontes sem modificar a saída.\nPara editar as propriedades das fontes sem modificar a saída, habilite 'Fontes Duplicadas'.\nMudar este valor irá resetar a cena atual de saída (se ainda existir)." QuickTransitions.DuplicateSceneTT="Quando estiver editando a mesma cena, permite editar a visibilidade/transformação de fontes sem modificar a saída.\nPara editar as propriedades das fontes sem modificar a saída, habilite 'Fontes Duplicadas'.\nMudar este valor irá resetar a cena atual de saída (se ainda existir)."
QuickTransitions.EditProperties="Duplicar Fontes" QuickTransitions.EditProperties="Duplicar Fontes"
QuickTransitions.EditPropertiesTT="Quando a editar a mesma cena, permite a edição das propriedades de fontes sem modificar a saida.\nIsto só pode ser usado se 'Duplicar Cena' está ativado.\nAlgumas fontes (como a captura e fontes de media) não suportam isto e não podem ser editados separadamente.\nModificar este valor vai redefinir a atual saída de cena (se ele ainda existir).\n\nAviso: Porque fontes vão ser duplicados, isto pode requisitar um sistema extra ou recursos de vídeo."
QuickTransitions.HotkeyName="Transição Rápida: %1" QuickTransitions.HotkeyName="Transição Rápida: %1"
Basic.AddTransition="Adicionar Transição Configurável" Basic.AddTransition="Adicionar Transição Configurável"
@ -117,6 +118,7 @@ LicenseAgreement.Exit="Sair"
Remux.SourceFile="OBS Gravando" Remux.SourceFile="OBS Gravando"
Remux.TargetFile="Arquivo de destino" Remux.TargetFile="Arquivo de destino"
Remux.Remux="Remux" Remux.Remux="Remux"
Remux.OBSRecording="Gravação do OBS"
Remux.FinishedTitle="Remux finalizado" Remux.FinishedTitle="Remux finalizado"
Remux.Finished="Remux da gravação finalizado" Remux.Finished="Remux da gravação finalizado"
Remux.FinishedError="Remux da gravação finalizado, mas o arquivo pode estar incompleto" Remux.FinishedError="Remux da gravação finalizado, mas o arquivo pode estar incompleto"
@ -142,12 +144,16 @@ Basic.DisplayCapture="Captura de tela"
Basic.Main.PreviewConextMenu.Enable="Ativar pré-vizualização" Basic.Main.PreviewConextMenu.Enable="Ativar pré-vizualização"
Deinterlacing="Desentrelaçamento"
Deinterlacing.Discard="Descartar" Deinterlacing.Discard="Descartar"
Deinterlacing.Retro="Retro" Deinterlacing.Retro="Retro"
Deinterlacing.Blend="Misturar" Deinterlacing.Blend="Misturar"
Deinterlacing.Blend2x="Misturar 2x" Deinterlacing.Blend2x="Misturar 2x"
Deinterlacing.Linear="Linear" Deinterlacing.Linear="Linear"
Deinterlacing.Linear2x="Linear 2x" Deinterlacing.Linear2x="Linear 2x"
Deinterlacing.Yadif="Yadif"
Deinterlacing.Yadif2x="Yadif 2x"
Deinterlacing.TopFieldFirst="Campo Superior Primeiro" Deinterlacing.TopFieldFirst="Campo Superior Primeiro"
Deinterlacing.BottomFieldFirst="Campo Inferior Primeiro" Deinterlacing.BottomFieldFirst="Campo Inferior Primeiro"
@ -282,6 +288,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="Mover para o &Topo"
Basic.MainMenu.Edit.Order.MoveToBottom="Mover para a &Base" Basic.MainMenu.Edit.Order.MoveToBottom="Mover para a &Base"
Basic.MainMenu.Edit.AdvAudio="&Propriedades de áudio avançadas" Basic.MainMenu.Edit.AdvAudio="&Propriedades de áudio avançadas"
Basic.MainMenu.SceneCollection="&Coleção de cena" Basic.MainMenu.SceneCollection="&Coleção de cena"
Basic.MainMenu.Profile="&Perfil" Basic.MainMenu.Profile="&Perfil"
@ -303,6 +310,7 @@ Basic.Settings.General.Theme="Tema"
Basic.Settings.General.Language="Idioma" Basic.Settings.General.Language="Idioma"
Basic.Settings.General.WarnBeforeStartingStream="Mostrar diálogo de confirmação quando iniciar transmissões" Basic.Settings.General.WarnBeforeStartingStream="Mostrar diálogo de confirmação quando iniciar transmissões"
Basic.Settings.General.WarnBeforeStoppingStream="Mostrar diálogo de confirmação quando terminar transmissões" Basic.Settings.General.WarnBeforeStoppingStream="Mostrar diálogo de confirmação quando terminar transmissões"
Basic.Settings.General.Snapping="Alinhamentos com encaixe na Cena"
Basic.Settings.General.ScreenSnapping="Encaixar Fontes ás bordas da tela" Basic.Settings.General.ScreenSnapping="Encaixar Fontes ás bordas da tela"
Basic.Settings.General.CenterSnapping="Encaixar Fontes aos centros vertical e horizontal" Basic.Settings.General.CenterSnapping="Encaixar Fontes aos centros vertical e horizontal"
Basic.Settings.General.SourceSnapping="Encaixar fontes com outras fontes" Basic.Settings.General.SourceSnapping="Encaixar fontes com outras fontes"
@ -334,6 +342,8 @@ Basic.Settings.Output.Simple.Warn.Lossless="Aviso: Qualidade Lossless gera arqui
Basic.Settings.Output.Simple.Warn.Lossless.Msg="Tem certeza que deseja usar qualidade lossless?" Basic.Settings.Output.Simple.Warn.Lossless.Msg="Tem certeza que deseja usar qualidade lossless?"
Basic.Settings.Output.Simple.Warn.Lossless.Title="Aviso de qualidade lossless!" Basic.Settings.Output.Simple.Warn.Lossless.Title="Aviso de qualidade lossless!"
Basic.Settings.Output.Simple.Encoder.Software="Software (x264)" Basic.Settings.Output.Simple.Encoder.Software="Software (x264)"
Basic.Settings.Output.Simple.Encoder.Hardware.QSV="Hardware (QSV)"
Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="Hardware (NVENC)"
Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Software (preset x264 de baixa utilização de CPU, aumenta o tamanho do arquivo)" Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Software (preset x264 de baixa utilização de CPU, aumenta o tamanho do arquivo)"
Basic.Settings.Output.VideoBitrate="Taxa de Bits do Vídeo" Basic.Settings.Output.VideoBitrate="Taxa de Bits do Vídeo"
Basic.Settings.Output.AudioBitrate="Taxa de Bits do Áudio" Basic.Settings.Output.AudioBitrate="Taxa de Bits do Áudio"
@ -343,6 +353,7 @@ Basic.Settings.Output.MaxRetries="Número Máximo de Tentativas"
Basic.Settings.Output.Advanced="Ativar as configurações avançadas do encoder" Basic.Settings.Output.Advanced="Ativar as configurações avançadas do encoder"
Basic.Settings.Output.EncoderPreset="Predefinição de codificação (maior = menor uso de CPU)" Basic.Settings.Output.EncoderPreset="Predefinição de codificação (maior = menor uso de CPU)"
Basic.Settings.Output.CustomEncoderSettings="Configurações de codificador personalizadas" Basic.Settings.Output.CustomEncoderSettings="Configurações de codificador personalizadas"
Basic.Settings.Output.CustomMuxerSettings="Configurações personalizadas do Muxer"
Basic.Settings.Output.NoSpaceFileName="Gerar Nome de Arquivo sem Espaços" Basic.Settings.Output.NoSpaceFileName="Gerar Nome de Arquivo sem Espaços"
Basic.Settings.Output.Adv.Rescale="Redimensionar a saída" Basic.Settings.Output.Adv.Rescale="Redimensionar a saída"
@ -381,6 +392,7 @@ Basic.Settings.Output.Adv.FFmpeg.AEncoder="Codificador de áudio"
Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Configurações do codificador de áudio(se houver)" Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Configurações do codificador de áudio(se houver)"
Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="Configurações do Muxer (se houver)" Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="Configurações do Muxer (se houver)"
FilenameFormatting.completer="%CCYY-%MM-%DD %hh-%mm-%ss\n%YY-%MM-%DD %hh-%mm-%ss\n%Y-%m-%d %H-%M-%S\n%y-%m-%d %H-%M-%S\n%a %Y-%m-%d %H-%M-%S\n%A %Y-%m-%d %H-%M-%S\n%Y-%b-%d %H-%M-%S\n%Y-%B-%d %H-%M-%S\n%Y-%m-%d %I-%M-%S-%p\n%Y-%m-%d %H-%M-%S-%z\n%Y-%m-%d %H-%M-%S-%Z"
FilenameFormatting.TT="%CCYY Ano, quatro dígitos\n%YY Ano, dois dígitos (00-99)\n%MM Mês como um número decimal (01-12)\n%DD Dia do mês, começando com 0 (01-31)\n%hh Hora, em formato de 24h (00-23)\n%mm Minuto (00-59)\n%ss Segundo (00-61)\n%% A % sign\n%a Dia da Semana abreviado\n%A Nome da Semana completo\n%b Nome do Mês abreviado\n%B Nome do Mês completo\n%d Dia do Mês, começando com 0 (01-31)\n%H Hora, no formato de 24h (00-23)\n%I Hora no formato de 12h (01-12)\n%m Mês como um número decimal (01-12)\n%M Minuto (00-59)\n%p Designação AM ou PM\n%S Segundo (00-61)\n%y Ano, últimos dois dígitos (00-99)\n%Y Ano\n%z ISO 8601 diferença de fuso horário ou de UTC\n nome ou abreviação\n%Z Nome do Fuso Horário ou abreviação\n" FilenameFormatting.TT="%CCYY Ano, quatro dígitos\n%YY Ano, dois dígitos (00-99)\n%MM Mês como um número decimal (01-12)\n%DD Dia do mês, começando com 0 (01-31)\n%hh Hora, em formato de 24h (00-23)\n%mm Minuto (00-59)\n%ss Segundo (00-61)\n%% A % sign\n%a Dia da Semana abreviado\n%A Nome da Semana completo\n%b Nome do Mês abreviado\n%B Nome do Mês completo\n%d Dia do Mês, começando com 0 (01-31)\n%H Hora, no formato de 24h (00-23)\n%I Hora no formato de 12h (01-12)\n%m Mês como um número decimal (01-12)\n%M Minuto (00-59)\n%p Designação AM ou PM\n%S Segundo (00-61)\n%y Ano, últimos dois dígitos (00-99)\n%Y Ano\n%z ISO 8601 diferença de fuso horário ou de UTC\n nome ou abreviação\n%Z Nome do Fuso Horário ou abreviação\n"

View file

@ -39,6 +39,9 @@ Untitled="Sem título"
New="Novo" New="Novo"
Duplicate="Duplicar" Duplicate="Duplicar"
Enable="Ativar" Enable="Ativar"
DisableOSXVSync="Desabilitar o OSX V-Sync"
ResetOSXVSyncOnExit="Redefinir o OSX V-Sync na saída"
HighResourceUsage="Codificação sobrecarregado! Considere diminuir a configurações de vídeo ou usar uma predefinição mais rápido de codificação."
Transition="Transição" Transition="Transição"
QuickTransitions="Transições rápidas" QuickTransitions="Transições rápidas"
Left="Esquerda" Left="Esquerda"
@ -46,11 +49,21 @@ Right="Direita"
Top="Cima" Top="Cima"
Bottom="Baixo" Bottom="Baixo"
QuickTransitions.SwapScenes="Trocar pré-visualização/saída de cenas Depois de uma Transição"
QuickTransitions.DuplicateScene="Duplicar cena" QuickTransitions.DuplicateScene="Duplicar cena"
QuickTransitions.EditProperties="Fontes duplicadas"
QuickTransitions.EditPropertiesTT="Quando a editar a mesma cena, permite a edição das propriedades de fontes sem modificar a saida.\nIsto só pode ser usado se 'Duplicar Cena' está ativado.\nAlgumas fontes (como a captura e fontes de media) não suportam isto e não podem ser editados separadamente.\nModificar este valor vai redefinir a atual saída de cena (se ele ainda existir).\n\nAviso: Porque fontes vão ser duplicados, isto pode requisitar um sistema extra ou recursos de vídeo."
QuickTransitions.HotkeyName="Transição rápida: %1"
Basic.AddTransition="Adicionar Transição Configurável"
Basic.RemoveTransition="Remover transição configurável" Basic.RemoveTransition="Remover transição configurável"
Basic.TransitionProperties="Propriedades da transição" Basic.TransitionProperties="Propriedades da transição"
Basic.SceneTransitions="Transições de cena"
Basic.TransitionDuration="Duração"
Basic.TogglePreviewProgramMode="Modo de estúdio"
TransitionNameDlg.Text="Por favor, escreva o nome da transição"
TransitionNameDlg.Title="Nome da transição"
TitleBar.Profile="Perfil" TitleBar.Profile="Perfil"
TitleBar.Scenes="Cenas" TitleBar.Scenes="Cenas"
@ -61,7 +74,11 @@ NameExists.Text="O nome já encontra-se em utilização."
NoNameEntered.Title="Por favor, introduz um nome válido" NoNameEntered.Title="Por favor, introduz um nome válido"
NoNameEntered.Text="Não pode utilizar nomes vazios." NoNameEntered.Text="Não pode utilizar nomes vazios."
ConfirmStart.Title="Começar a transmitir?"
ConfirmStart.Text="Tem a certeza que quer começar a transmissão?"
ConfirmStop.Title="Parar a transmissão?"
ConfirmStop.Text="Tem a certeza que quer parar a transmissão?"
ConfirmExit.Title="Sair do OBS?" ConfirmExit.Title="Sair do OBS?"
ConfirmExit.Text="O OBS está ligado. Todas as transmissões e gravações serão paradas. Tem a certeza de que pretende sair?" ConfirmExit.Text="O OBS está ligado. Todas as transmissões e gravações serão paradas. Tem a certeza de que pretende sair?"
@ -72,6 +89,7 @@ ConfirmRemove.Text="Tem a certeza que quer remover '$1'?"
Output.ConnectFail.Title="Falha ao ligar" Output.ConnectFail.Title="Falha ao ligar"
Output.ConnectFail.BadPath="Caminho ou endereço de ligação inválido. Por favor, verifique as suas definições para confirmar que são válidas." Output.ConnectFail.BadPath="Caminho ou endereço de ligação inválido. Por favor, verifique as suas definições para confirmar que são válidas."
Output.ConnectFail.ConnectFailed="Falhou a ligação ao servidor" Output.ConnectFail.ConnectFailed="Falhou a ligação ao servidor"
Output.ConnectFail.InvalidStream="Não foi possível acessar o canal especificado ou chave de transmissão, por favor ré-verifique a sua chave de transmissão. Se é correto, pode haver um problema de conexão com o servidor."
Output.ConnectFail.Error="Ocurreu um erro inesperado ao ligar-se ao servidor. Mais informação no ficheiro Log." Output.ConnectFail.Error="Ocurreu um erro inesperado ao ligar-se ao servidor. Mais informação no ficheiro Log."
Output.ConnectFail.Disconnected="Desligado do servidor." Output.ConnectFail.Disconnected="Desligado do servidor."
@ -98,6 +116,7 @@ LicenseAgreement.Exit="Sair"
Remux.SourceFile="Gravação do OBS" Remux.SourceFile="Gravação do OBS"
Remux.TargetFile="Ficheiro de destino" Remux.TargetFile="Ficheiro de destino"
Remux.Remux="Remisturar" Remux.Remux="Remisturar"
Remux.OBSRecording="Gravação do OBS"
Remux.FinishedTitle="Remistura concluída" Remux.FinishedTitle="Remistura concluída"
Remux.Finished="Gravação remisturada" Remux.Finished="Gravação remisturada"
Remux.FinishedError="Gravação remisturada, mas o ficheiro pode estar incompleto" Remux.FinishedError="Gravação remisturada, mas o ficheiro pode estar incompleto"
@ -124,6 +143,18 @@ Basic.DisplayCapture="Captura de Ecrã"
Basic.Main.PreviewConextMenu.Enable="Ativar pré-visualização" Basic.Main.PreviewConextMenu.Enable="Ativar pré-visualização"
Deinterlacing="Desentrelaçamento"
Deinterlacing.Discard="Discartar"
Deinterlacing.Retro="Retro"
Deinterlacing.Blend="Misturar"
Deinterlacing.Blend2x="Misturar 2x"
Deinterlacing.Linear="Linear"
Deinterlacing.Linear2x="Linear 2x"
Deinterlacing.Yadif="Yadif"
Deinterlacing.Yadif2x="Yadif 2x"
Deinterlacing.TopFieldFirst="Campo Superior Primeiro"
Deinterlacing.BottomFieldFirst="Campo Inferior Primeiro"
Basic.Main.AddSceneDlg.Title="Adicionar Cena" Basic.Main.AddSceneDlg.Title="Adicionar Cena"
Basic.Main.AddSceneDlg.Text="Por favor introduza o nome da cena" Basic.Main.AddSceneDlg.Text="Por favor introduza o nome da cena"
@ -189,6 +220,7 @@ Basic.TransformWindow.Alignment="Alinhamento da Posição"
Basic.TransformWindow.BoundsType="Tipo da Caixa de Rebordo" Basic.TransformWindow.BoundsType="Tipo da Caixa de Rebordo"
Basic.TransformWindow.BoundsAlignment="Alinhamento da Caixa de Rebordo" Basic.TransformWindow.BoundsAlignment="Alinhamento da Caixa de Rebordo"
Basic.TransformWindow.Bounds="Tamanho da Caixa de Rebordo" Basic.TransformWindow.Bounds="Tamanho da Caixa de Rebordo"
Basic.TransformWindow.Crop="Recortar"
Basic.TransformWindow.Alignment.TopLeft="Superior Esquerdo" Basic.TransformWindow.Alignment.TopLeft="Superior Esquerdo"
Basic.TransformWindow.Alignment.TopCenter="Superior Central" Basic.TransformWindow.Alignment.TopCenter="Superior Central"
@ -228,6 +260,7 @@ Basic.MainMenu.File.Remux="Re&misturar gravações"
Basic.MainMenu.File.Settings="&Definições" Basic.MainMenu.File.Settings="&Definições"
Basic.MainMenu.File.ShowSettingsFolder="Mostrar pasta das definições" Basic.MainMenu.File.ShowSettingsFolder="Mostrar pasta das definições"
Basic.MainMenu.File.ShowProfileFolder="Mostrar pasta do perfil" Basic.MainMenu.File.ShowProfileFolder="Mostrar pasta do perfil"
Basic.MainMenu.AlwaysOnTop="&Sempre em Cima"
Basic.MainMenu.File.Exit="&Sair" Basic.MainMenu.File.Exit="&Sair"
Basic.MainMenu.Edit="&Editar" Basic.MainMenu.Edit="&Editar"
@ -253,6 +286,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="Mover para p &Topo"
Basic.MainMenu.Edit.Order.MoveToBottom="Mover para o Fundo" Basic.MainMenu.Edit.Order.MoveToBottom="Mover para o Fundo"
Basic.MainMenu.Edit.AdvAudio="Propriedades &avançadas de áudio" Basic.MainMenu.Edit.AdvAudio="Propriedades &avançadas de áudio"
Basic.MainMenu.SceneCollection="Coleção de cena" Basic.MainMenu.SceneCollection="Coleção de cena"
Basic.MainMenu.Profile="&Perfil" Basic.MainMenu.Profile="&Perfil"
@ -272,6 +306,10 @@ Basic.Settings.Confirm="Voçê tem alterações não salvadas. Deseja salvar as
Basic.Settings.General="Geral" Basic.Settings.General="Geral"
Basic.Settings.General.Theme="Tema" Basic.Settings.General.Theme="Tema"
Basic.Settings.General.Language="Idioma" Basic.Settings.General.Language="Idioma"
Basic.Settings.General.WarnBeforeStartingStream="Mostrar caixa de diálogo de confirmação ao iniciar transmissões"
Basic.Settings.General.WarnBeforeStoppingStream="Mostrar caixa de diálogo de confirmação ao parar transmissões"
Basic.Settings.General.Snapping="Alinhamentos com encaixe na Cena"
Basic.Settings.General.SnapDistance="Sensibilidade do Snap"
Basic.Settings.Stream="Transmissão" Basic.Settings.Stream="Transmissão"
Basic.Settings.Stream.StreamType="Tipo de transmissão" Basic.Settings.Stream.StreamType="Tipo de transmissão"
@ -281,6 +319,7 @@ Basic.Settings.Output.Format="Formato de gravação"
Basic.Settings.Output.Encoder="Codificador" Basic.Settings.Output.Encoder="Codificador"
Basic.Settings.Output.SelectDirectory="Selecione o diretório de gravação" Basic.Settings.Output.SelectDirectory="Selecione o diretório de gravação"
Basic.Settings.Output.SelectFile="Selecione ficheiro de gravação" Basic.Settings.Output.SelectFile="Selecione ficheiro de gravação"
Basic.Settings.Output.EnforceBitrate="Forçar limites de taxa de bits de serviço de transmissão"
Basic.Settings.Output.Mode="Modo de saída" Basic.Settings.Output.Mode="Modo de saída"
Basic.Settings.Output.Mode.Simple="Simples" Basic.Settings.Output.Mode.Simple="Simples"
Basic.Settings.Output.Mode.Adv="Avançado" Basic.Settings.Output.Mode.Adv="Avançado"
@ -289,8 +328,14 @@ Basic.Settings.Output.Simple.SavePath="Caminho da gravação"
Basic.Settings.Output.Simple.RecordingQuality="Qualidade da gravação" Basic.Settings.Output.Simple.RecordingQuality="Qualidade da gravação"
Basic.Settings.Output.Simple.RecordingQuality.Stream="A mesma da transmissão" Basic.Settings.Output.Simple.RecordingQuality.Stream="A mesma da transmissão"
Basic.Settings.Output.Simple.RecordingQuality.Small="Alta qualidade, Tamanho médio" Basic.Settings.Output.Simple.RecordingQuality.Small="Alta qualidade, Tamanho médio"
Basic.Settings.Output.Simple.RecordingQuality.HQ="Qualidade indistinguível, Tamanho de Arquivo Grande"
Basic.Settings.Output.Simple.RecordingQuality.Lossless="Sem perda de qualidade, Tamanho de Arquivo Enorme"
Basic.Settings.Output.Simple.Warn.Lossless.Msg="Tem a certeza de que pretende utilizar a qualidade sem perdas?" Basic.Settings.Output.Simple.Warn.Lossless.Msg="Tem a certeza de que pretende utilizar a qualidade sem perdas?"
Basic.Settings.Output.Simple.Warn.Lossless.Title="Aviso de qualidade sem perda!"
Basic.Settings.Output.Simple.Encoder.Software="Software (x264)" Basic.Settings.Output.Simple.Encoder.Software="Software (x264)"
Basic.Settings.Output.Simple.Encoder.Hardware.QSV="Hardware (QSV)"
Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="Hardware (NVENC)"
Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Software (x264 baixa utilização da CPU pré-ajustada, aumenta o tamanho do arquivo)"
Basic.Settings.Output.VideoBitrate="Bitrate de Vídeo" Basic.Settings.Output.VideoBitrate="Bitrate de Vídeo"
Basic.Settings.Output.AudioBitrate="Bitrate de Áudio" Basic.Settings.Output.AudioBitrate="Bitrate de Áudio"
Basic.Settings.Output.Reconnect="Religar Automaticamente" Basic.Settings.Output.Reconnect="Religar Automaticamente"
@ -299,6 +344,8 @@ Basic.Settings.Output.MaxRetries="Número Máximo de Tentativas de Religação"
Basic.Settings.Output.Advanced="Ativar definições avançadas de codificação" Basic.Settings.Output.Advanced="Ativar definições avançadas de codificação"
Basic.Settings.Output.EncoderPreset="Predefinição de codificação (maior = menor processamento)" Basic.Settings.Output.EncoderPreset="Predefinição de codificação (maior = menor processamento)"
Basic.Settings.Output.CustomEncoderSettings="Definições de codificação personalizadas" Basic.Settings.Output.CustomEncoderSettings="Definições de codificação personalizadas"
Basic.Settings.Output.CustomMuxerSettings="Configurações personalizadas do Muxer"
Basic.Settings.Output.NoSpaceFileName="Gerar o Nome do Arquivo sem espaço"
Basic.Settings.Output.Adv.Rescale="Redimensionar saída" Basic.Settings.Output.Adv.Rescale="Redimensionar saída"
Basic.Settings.Output.Adv.AudioTrack="Faixa de áudio" Basic.Settings.Output.Adv.AudioTrack="Faixa de áudio"
@ -314,6 +361,8 @@ Basic.Settings.Output.Adv.Recording.Type="Tipo"
Basic.Settings.Output.Adv.Recording.Type.Standard="Padrão" Basic.Settings.Output.Adv.Recording.Type.Standard="Padrão"
Basic.Settings.Output.Adv.Recording.Type.FFmpegOutput="Saída personalizada (FFmpeg)" Basic.Settings.Output.Adv.Recording.Type.FFmpegOutput="Saída personalizada (FFmpeg)"
Basic.Settings.Output.Adv.Recording.UseStreamEncoder="(Utilizar o codificador da transmissão)" Basic.Settings.Output.Adv.Recording.UseStreamEncoder="(Utilizar o codificador da transmissão)"
Basic.Settings.Output.Adv.Recording.Filename="Formatação do nome do arquivo"
Basic.Settings.Output.Adv.Recording.OverwriteIfExists="Substituir, se o arquivo existe"
Basic.Settings.Output.Adv.FFmpeg.Type="Tipo de saída FFmpeg" Basic.Settings.Output.Adv.FFmpeg.Type="Tipo de saída FFmpeg"
Basic.Settings.Output.Adv.FFmpeg.Type.URL="Exportar para endereço" Basic.Settings.Output.Adv.FFmpeg.Type.URL="Exportar para endereço"
Basic.Settings.Output.Adv.FFmpeg.Type.RecordToFile="Exportar para ficheiro" Basic.Settings.Output.Adv.FFmpeg.Type.RecordToFile="Exportar para ficheiro"
@ -332,11 +381,15 @@ Basic.Settings.Output.Adv.FFmpeg.VEncoder="Codificador de vídeo"
Basic.Settings.Output.Adv.FFmpeg.VEncoderSettings="Definições do codificador de vídeo (se houver)" Basic.Settings.Output.Adv.FFmpeg.VEncoderSettings="Definições do codificador de vídeo (se houver)"
Basic.Settings.Output.Adv.FFmpeg.AEncoder="Codificador de áudio" Basic.Settings.Output.Adv.FFmpeg.AEncoder="Codificador de áudio"
Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Definições do codificador de áudio (se houver)" Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Definições do codificador de áudio (se houver)"
Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="Configurações Muxer (se houver)"
FilenameFormatting.completer="%CCYY-%MM-%DD %hh-%mm-%ss\n%YY-%MM-%DD %hh-%mm-%ss\n%Y-%m-%d %H-%M-%S\n%y-%m-%d %H-%M-%S\n%a %Y-%m-%d %H-%M-%S\n%A %Y-%m-%d %H-%M-%S\n%Y-%b-%d %H-%M-%S\n%Y-%B-%d %H-%M-%S\n%Y-%m-%d %I-%M-%S-%p\n%Y-%m-%d %H-%M-%S-%z\n%Y-%m-%d %H-%M-%S-%Z"
Basic.Settings.Video="Vídeo" Basic.Settings.Video="Vídeo"
Basic.Settings.Video.Adapter="Adaptador de Vídeo:" Basic.Settings.Video.Adapter="Adaptador de Vídeo:"
Basic.Settings.Video.BaseResolution="Resolução de base (tela):"
Basic.Settings.Video.ScaledResolution="Resolução de saída (escalado):"
Basic.Settings.Video.DownscaleFilter="Filtro de Escalamento:" Basic.Settings.Video.DownscaleFilter="Filtro de Escalamento:"
Basic.Settings.Video.DisableAeroWindows="Desactivar Aero (apenas no Windows)" Basic.Settings.Video.DisableAeroWindows="Desactivar Aero (apenas no Windows)"
Basic.Settings.Video.FPS="FPS:" Basic.Settings.Video.FPS="FPS:"
@ -366,6 +419,7 @@ Basic.Settings.Audio.EnablePushToMute="Ativar o push-to-mute"
Basic.Settings.Audio.PushToMuteDelay="Atrado do push-to-mute" Basic.Settings.Audio.PushToMuteDelay="Atrado do push-to-mute"
Basic.Settings.Audio.EnablePushToTalk="Ativar o push-to-talk" Basic.Settings.Audio.EnablePushToTalk="Ativar o push-to-talk"
Basic.Settings.Audio.PushToTalkDelay="Atraso do push-to-talk" Basic.Settings.Audio.PushToTalkDelay="Atraso do push-to-talk"
Basic.Settings.Audio.UnknownAudioDevice="[Dispositivo não conectado ou não disponível]"
Basic.Settings.Advanced="Avançado" Basic.Settings.Advanced="Avançado"
Basic.Settings.Advanced.FormatWarning="Aviso: Formatos de cor diferentes de NV12 destinam-se principalmente a gravação e não são recomendados durante a transmissão. A transmissão pode incorrer numa maior utilização do processador devido à conversão do formato de cor." Basic.Settings.Advanced.FormatWarning="Aviso: Formatos de cor diferentes de NV12 destinam-se principalmente a gravação e não são recomendados durante a transmissão. A transmissão pode incorrer numa maior utilização do processador devido à conversão do formato de cor."
@ -377,6 +431,7 @@ Basic.Settings.Advanced.Video.ColorRange.Partial="Parcial"
Basic.Settings.Advanced.Video.ColorRange.Full="Total" Basic.Settings.Advanced.Video.ColorRange.Full="Total"
Basic.Settings.Advanced.StreamDelay="Atraso na trasmissão" Basic.Settings.Advanced.StreamDelay="Atraso na trasmissão"
Basic.Settings.Advanced.StreamDelay.Duration="Duração (segundos)" Basic.Settings.Advanced.StreamDelay.Duration="Duração (segundos)"
Basic.Settings.Advanced.StreamDelay.Preserve="Preservar o ponto de corte (aumentar atraso) quando reconectar"
Basic.Settings.Advanced.StreamDelay.MemoryUsage="Utilização estimada de memória: %1 MB" Basic.Settings.Advanced.StreamDelay.MemoryUsage="Utilização estimada de memória: %1 MB"
Basic.AdvAudio="Propriedades avançadas de áudio" Basic.AdvAudio="Propriedades avançadas de áudio"

View file

@ -143,6 +143,7 @@ Basic.DisplayCapture="Captură de display"
Basic.Main.PreviewConextMenu.Enable="Activează previzualizarea" Basic.Main.PreviewConextMenu.Enable="Activează previzualizarea"
Deinterlacing="Deîntrețesere" Deinterlacing="Deîntrețesere"
Deinterlacing.Discard="Înlătură" Deinterlacing.Discard="Înlătură"
Deinterlacing.Retro="Retro" Deinterlacing.Retro="Retro"
@ -286,6 +287,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="Mu&tă în vârf"
Basic.MainMenu.Edit.Order.MoveToBottom="Mută la fu&nd" Basic.MainMenu.Edit.Order.MoveToBottom="Mută la fu&nd"
Basic.MainMenu.Edit.AdvAudio="Proprietăți audio &avansate" Basic.MainMenu.Edit.AdvAudio="Proprietăți audio &avansate"
Basic.MainMenu.SceneCollection="Colecție de &scene" Basic.MainMenu.SceneCollection="Colecție de &scene"
Basic.MainMenu.Profile="&Profil" Basic.MainMenu.Profile="&Profil"

View file

@ -87,6 +87,7 @@ ConfirmExit.Text="В настоящее время OBS активен. Все п
ConfirmRemove.Title="Подтвердить удаление" ConfirmRemove.Title="Подтвердить удаление"
ConfirmRemove.Text="Вы уверены, что хотите удалить '$1'?" ConfirmRemove.Text="Вы уверены, что хотите удалить '$1'?"
ConfirmRemove.TextMultiple="Вы уверены, что вы хотите удалить %1 элементов?"
Output.ConnectFail.Title="Не удалось подключиться" Output.ConnectFail.Title="Не удалось подключиться"
Output.ConnectFail.BadPath="Неверный путь или URL соединения. Пожалуйста, проверьте настройки, чтобы подтвердить, что они являются действительными." Output.ConnectFail.BadPath="Неверный путь или URL соединения. Пожалуйста, проверьте настройки, чтобы подтвердить, что они являются действительными."
@ -144,6 +145,12 @@ Basic.DisplayCapture="Захват экрана"
Basic.Main.PreviewConextMenu.Enable="Включить предпросмотр" Basic.Main.PreviewConextMenu.Enable="Включить предпросмотр"
ScaleFiltering="Фильтрация масштаба"
ScaleFiltering.Point="Точечная"
ScaleFiltering.Bilinear="Билинейная"
ScaleFiltering.Bicubic="Бикубическая"
ScaleFiltering.Lanczos="Ланцошная"
Deinterlacing="Устранение чересстрочности" Deinterlacing="Устранение чересстрочности"
Deinterlacing.Discard="Отклонить" Deinterlacing.Discard="Отклонить"
Deinterlacing.Retro="Ретро" Deinterlacing.Retro="Ретро"
@ -186,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="Настройки изменены"
Basic.PropertiesWindow.Confirm="Имеются несохранённые изменения. Желаете сохранить их?" Basic.PropertiesWindow.Confirm="Имеются несохранённые изменения. Желаете сохранить их?"
Basic.PropertiesWindow.NoProperties="Нет доступных параметров" Basic.PropertiesWindow.NoProperties="Нет доступных параметров"
Basic.PropertiesWindow.AddFiles="Добавить файлы" Basic.PropertiesWindow.AddFiles="Добавить файлы"
Basic.PropertiesWindow.AddDir="Добавить папку"
Basic.PropertiesWindow.AddURL="Добавить путь/URL" Basic.PropertiesWindow.AddURL="Добавить путь/URL"
Basic.PropertiesWindow.AddEditableListDir="Добавить папку в '%1'"
Basic.PropertiesWindow.AddEditableListFiles="Добавить файлы в '%1'" Basic.PropertiesWindow.AddEditableListFiles="Добавить файлы в '%1'"
Basic.PropertiesWindow.AddEditableListEntry="Добавить запись в '%1'" Basic.PropertiesWindow.AddEditableListEntry="Добавить запись в '%1'"
Basic.PropertiesWindow.EditEditableListEntry="Редактировать запись из '%1'" Basic.PropertiesWindow.EditEditableListEntry="Редактировать запись из '%1'"
@ -250,7 +259,9 @@ Basic.Main.Connecting="Соединение..."
Basic.Main.StartRecording="Начать запись" Basic.Main.StartRecording="Начать запись"
Basic.Main.StartStreaming="Запустить трансляцию" Basic.Main.StartStreaming="Запустить трансляцию"
Basic.Main.StopRecording="Остановить запись" Basic.Main.StopRecording="Остановить запись"
Basic.Main.StoppingRecording="Остановка Записи..."
Basic.Main.StopStreaming="Остановить трансляцию" Basic.Main.StopStreaming="Остановить трансляцию"
Basic.Main.StoppingStreaming="Остановка вещания..."
Basic.Main.ForceStopStreaming="Остановить передачу (отменить задержку)" Basic.Main.ForceStopStreaming="Остановить передачу (отменить задержку)"
Basic.MainMenu.File="&Файл" Basic.MainMenu.File="&Файл"
@ -287,6 +298,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="Переместить &Наверх"
Basic.MainMenu.Edit.Order.MoveToBottom="Переместить &Вниз" Basic.MainMenu.Edit.Order.MoveToBottom="Переместить &Вниз"
Basic.MainMenu.Edit.AdvAudio="&Расширенные свойства аудио" Basic.MainMenu.Edit.AdvAudio="&Расширенные свойства аудио"
Basic.MainMenu.View="&Посмотреть"
Basic.MainMenu.View.Toolbars="&Панель инструментов"
Basic.MainMenu.View.Toolbars.Listboxes="&Списки"
Basic.MainMenu.View.SceneTransitions="Сцена переходов"
Basic.MainMenu.View.StatusBar="&Строка состояния"
Basic.MainMenu.SceneCollection="Коллекция сцен" Basic.MainMenu.SceneCollection="Коллекция сцен"
Basic.MainMenu.Profile="Профиль" Basic.MainMenu.Profile="Профиль"
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="Тема"
Basic.Settings.General.Language="Язык" Basic.Settings.General.Language="Язык"
Basic.Settings.General.WarnBeforeStartingStream="Показывать окно подтверждения при запуске трансляции" Basic.Settings.General.WarnBeforeStartingStream="Показывать окно подтверждения при запуске трансляции"
Basic.Settings.General.WarnBeforeStoppingStream="Показывать окно подтверждения при остановке трансляции" Basic.Settings.General.WarnBeforeStoppingStream="Показывать окно подтверждения при остановке трансляции"
Basic.Settings.General.HideProjectorCursor="Скрыть курсор за проекторы"
Basic.Settings.General.Snapping="Привязка расположения источника" Basic.Settings.General.Snapping="Привязка расположения источника"
Basic.Settings.General.ScreenSnapping="Привязка к краю экрана" Basic.Settings.General.ScreenSnapping="Привязка к краю экрана"
Basic.Settings.General.CenterSnapping="Привязка к центру по горизонтали и вертикали" Basic.Settings.General.CenterSnapping="Привязка к центру по горизонтали и вертикали"
Basic.Settings.General.SourceSnapping="Привязка к другим источникам" Basic.Settings.General.SourceSnapping="Привязка к другим источникам"
Basic.Settings.General.SnapDistance="Чувствительность привязки" Basic.Settings.General.SnapDistance="Чувствительность привязки"
Basic.Settings.General.RecordWhenStreaming="Автоматическая запись при стриме"
Basic.Settings.General.KeepRecordingWhenStreamStops="Сохранить запись, когда стрим остановится"
Basic.Settings.Stream="Вещание" Basic.Settings.Stream="Вещание"
Basic.Settings.Stream.StreamType="Тип вещания" Basic.Settings.Stream.StreamType="Тип вещания"
@ -431,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="Задержка включения мик
Basic.Settings.Audio.UnknownAudioDevice="[Устройство не подключено или недоступно]" Basic.Settings.Audio.UnknownAudioDevice="[Устройство не подключено или недоступно]"
Basic.Settings.Advanced="Расширенные" Basic.Settings.Advanced="Расширенные"
Basic.Settings.Advanced.General.ProcessPriority="Приоритет процесса"
Basic.Settings.Advanced.General.ProcessPriority.High="Высокий"
Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="Выше нормального"
Basic.Settings.Advanced.General.ProcessPriority.Normal="Средний"
Basic.Settings.Advanced.General.ProcessPriority.Idle="Низкий"
Basic.Settings.Advanced.FormatWarning="Предупреждение: цветовые форматы, отличные от NV12, прежде всего предназначены для записи и не рекомендуются для потокового вещания. Преобразование цветового формата во время вещания может потребовать дополнительную нагрузку на ЦП." Basic.Settings.Advanced.FormatWarning="Предупреждение: цветовые форматы, отличные от NV12, прежде всего предназначены для записи и не рекомендуются для потокового вещания. Преобразование цветового формата во время вещания может потребовать дополнительную нагрузку на ЦП."
Basic.Settings.Advanced.Audio.BufferingTime="Время буферизации аудио" Basic.Settings.Advanced.Audio.BufferingTime="Время буферизации аудио"
Basic.Settings.Advanced.Video.ColorFormat="Цветовой формат" Basic.Settings.Advanced.Video.ColorFormat="Цветовой формат"

View file

@ -82,6 +82,7 @@ Basic.DisplayCapture="Zachytávanie monitora"
Basic.Main.AddSceneDlg.Title="Pridať scénu" Basic.Main.AddSceneDlg.Title="Pridať scénu"
Basic.Main.AddSceneDlg.Text="Prosím, zadajte názov scény" Basic.Main.AddSceneDlg.Text="Prosím, zadajte názov scény"
@ -175,6 +176,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="Premies&tniť navrch"
Basic.MainMenu.Edit.Order.MoveToBottom="Premiestniť naspodok (&B)" Basic.MainMenu.Edit.Order.MoveToBottom="Premiestniť naspodok (&B)"
Basic.MainMenu.Help="Pomoc (&H)" Basic.MainMenu.Help="Pomoc (&H)"
Basic.MainMenu.Help.Logs="&Log súbory" Basic.MainMenu.Help.Logs="&Log súbory"
Basic.MainMenu.Help.Logs.ShowLogs="Zobraziť log &súbory" Basic.MainMenu.Help.Logs.ShowLogs="Zobraziť log &súbory"

View file

@ -80,6 +80,7 @@ Basic.DisplayCapture="Zajemanje zaslona"
Basic.Main.AddSceneDlg.Title="Dodaj seceno" Basic.Main.AddSceneDlg.Title="Dodaj seceno"
Basic.Main.AddSceneDlg.Text="Prosimo, vnesite ime scene" Basic.Main.AddSceneDlg.Text="Prosimo, vnesite ime scene"
@ -172,6 +173,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="Premakni na &Vrh"
Basic.MainMenu.Edit.Order.MoveToBottom="Premakni na &Dno" Basic.MainMenu.Edit.Order.MoveToBottom="Premakni na &Dno"
Basic.MainMenu.Help="&Pomoč" Basic.MainMenu.Help="&Pomoč"
Basic.MainMenu.Help.Logs="&Dnevniki" Basic.MainMenu.Help.Logs="&Dnevniki"
Basic.MainMenu.Help.Logs.ShowLogs="&Pokaži Zapisnik" Basic.MainMenu.Help.Logs.ShowLogs="&Pokaži Zapisnik"

View file

@ -118,6 +118,7 @@ LicenseAgreement.Exit="Izlaz"
Remux.SourceFile="OBS snimak" Remux.SourceFile="OBS snimak"
Remux.TargetFile="Datoteka" Remux.TargetFile="Datoteka"
Remux.Remux="Remux" Remux.Remux="Remux"
Remux.OBSRecording="OBS snimak"
Remux.FinishedTitle="Remux završen" Remux.FinishedTitle="Remux završen"
Remux.Finished="Završen remux snimka" Remux.Finished="Završen remux snimka"
Remux.FinishedError="Remux završen, ali datoteka možda nije kompletirana" Remux.FinishedError="Remux završen, ali datoteka možda nije kompletirana"
@ -143,6 +144,7 @@ Basic.DisplayCapture="Prikaži ulaz"
Basic.Main.PreviewConextMenu.Enable="Omogući pregled" Basic.Main.PreviewConextMenu.Enable="Omogući pregled"
Deinterlacing="Deinterlejsing" Deinterlacing="Deinterlejsing"
Deinterlacing.Discard="Odbaci" Deinterlacing.Discard="Odbaci"
Deinterlacing.Retro="Retro" Deinterlacing.Retro="Retro"
@ -185,7 +187,9 @@ Basic.PropertiesWindow.ConfirmTitle="Podešavanja promenjena"
Basic.PropertiesWindow.Confirm="Postoje podešavanja koja nisu sačuvana. Da li želite da ih sačuvate?" Basic.PropertiesWindow.Confirm="Postoje podešavanja koja nisu sačuvana. Da li želite da ih sačuvate?"
Basic.PropertiesWindow.NoProperties="Nema dostupnih svojstava" Basic.PropertiesWindow.NoProperties="Nema dostupnih svojstava"
Basic.PropertiesWindow.AddFiles="Dodaj datoteke" Basic.PropertiesWindow.AddFiles="Dodaj datoteke"
Basic.PropertiesWindow.AddDir="Dodaj direktorijum"
Basic.PropertiesWindow.AddURL="Dodaj putanju/URL" Basic.PropertiesWindow.AddURL="Dodaj putanju/URL"
Basic.PropertiesWindow.AddEditableListDir="Dodaj direktorijum u '%1'"
Basic.PropertiesWindow.AddEditableListFiles="Dodaj datoteke u '%1'" Basic.PropertiesWindow.AddEditableListFiles="Dodaj datoteke u '%1'"
Basic.PropertiesWindow.AddEditableListEntry="Dodaj zapise u '%1'" Basic.PropertiesWindow.AddEditableListEntry="Dodaj zapise u '%1'"
Basic.PropertiesWindow.EditEditableListEntry="Izmeni zapise za '%1'" Basic.PropertiesWindow.EditEditableListEntry="Izmeni zapise za '%1'"
@ -249,7 +253,9 @@ Basic.Main.Connecting="Povezivanje..."
Basic.Main.StartRecording="Počni snimanje" Basic.Main.StartRecording="Počni snimanje"
Basic.Main.StartStreaming="Počni strimovanje" Basic.Main.StartStreaming="Počni strimovanje"
Basic.Main.StopRecording="Zaustavi snimanje" Basic.Main.StopRecording="Zaustavi snimanje"
Basic.Main.StoppingRecording="Zaustavljanje snimanja..."
Basic.Main.StopStreaming="Zaustavi strimovanje" Basic.Main.StopStreaming="Zaustavi strimovanje"
Basic.Main.StoppingStreaming="Zaustavljanje emitovanja..."
Basic.Main.ForceStopStreaming="Zaustavi strimovanje (poništi odlaganje)" Basic.Main.ForceStopStreaming="Zaustavi strimovanje (poništi odlaganje)"
Basic.MainMenu.File="&Fajl" Basic.MainMenu.File="&Fajl"
@ -286,6 +292,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="Pomeri na vrh (&T)"
Basic.MainMenu.Edit.Order.MoveToBottom="Pomeri na dno (&B)" Basic.MainMenu.Edit.Order.MoveToBottom="Pomeri na dno (&B)"
Basic.MainMenu.Edit.AdvAudio="N&apredna podešavanja zvuka" Basic.MainMenu.Edit.AdvAudio="N&apredna podešavanja zvuka"
Basic.MainMenu.SceneCollection="Kolekcija &scena" Basic.MainMenu.SceneCollection="Kolekcija &scena"
Basic.MainMenu.Profile="&Profil" Basic.MainMenu.Profile="&Profil"
@ -307,6 +314,7 @@ Basic.Settings.General.Theme="Tema"
Basic.Settings.General.Language="Jezik" Basic.Settings.General.Language="Jezik"
Basic.Settings.General.WarnBeforeStartingStream="Prikaži prozor za potvrdu kada se započinju strimovi" Basic.Settings.General.WarnBeforeStartingStream="Prikaži prozor za potvrdu kada se započinju strimovi"
Basic.Settings.General.WarnBeforeStoppingStream="Prikaži prozor za potvrdu kada se zaustavljaju strimovi" Basic.Settings.General.WarnBeforeStoppingStream="Prikaži prozor za potvrdu kada se zaustavljaju strimovi"
Basic.Settings.General.HideProjectorCursor="Sakrij pokazivač na projektorima"
Basic.Settings.General.Snapping="Poravnavanje privlačenjem izvora" Basic.Settings.General.Snapping="Poravnavanje privlačenjem izvora"
Basic.Settings.General.ScreenSnapping="Privuci izvore ivici ekrana" Basic.Settings.General.ScreenSnapping="Privuci izvore ivici ekrana"
Basic.Settings.General.CenterSnapping="Privuci izvore horizontalnoj i vertikalnoj sredini" Basic.Settings.General.CenterSnapping="Privuci izvore horizontalnoj i vertikalnoj sredini"

View file

@ -118,6 +118,7 @@ LicenseAgreement.Exit="Излаз"
Remux.SourceFile="OBS снимак" Remux.SourceFile="OBS снимак"
Remux.TargetFile="Датотека" Remux.TargetFile="Датотека"
Remux.Remux="Remux" Remux.Remux="Remux"
Remux.OBSRecording="OBS снимак"
Remux.FinishedTitle="Remux завршен" Remux.FinishedTitle="Remux завршен"
Remux.Finished="Завршен remux снимка" Remux.Finished="Завршен remux снимка"
Remux.FinishedError="Remux завршен, али датотека можда није комплетирана" Remux.FinishedError="Remux завршен, али датотека можда није комплетирана"
@ -143,6 +144,7 @@ Basic.DisplayCapture="Прикажи улаз"
Basic.Main.PreviewConextMenu.Enable="Омогући преглед" Basic.Main.PreviewConextMenu.Enable="Омогући преглед"
Deinterlacing="Деинтерлејсинг" Deinterlacing="Деинтерлејсинг"
Deinterlacing.Discard="Одбаци" Deinterlacing.Discard="Одбаци"
Deinterlacing.Retro="Ретро" Deinterlacing.Retro="Ретро"
@ -185,7 +187,9 @@ Basic.PropertiesWindow.ConfirmTitle="Подешавања промењена"
Basic.PropertiesWindow.Confirm="Постоје подешавања која нису сачувана. Да ли желите да их сачувате?" Basic.PropertiesWindow.Confirm="Постоје подешавања која нису сачувана. Да ли желите да их сачувате?"
Basic.PropertiesWindow.NoProperties="Нема доступних својстава" Basic.PropertiesWindow.NoProperties="Нема доступних својстава"
Basic.PropertiesWindow.AddFiles="Додај датотеке" Basic.PropertiesWindow.AddFiles="Додај датотеке"
Basic.PropertiesWindow.AddDir="Додај директоријум"
Basic.PropertiesWindow.AddURL="Додај путању/URL" Basic.PropertiesWindow.AddURL="Додај путању/URL"
Basic.PropertiesWindow.AddEditableListDir="Додај директоријум у '%1'"
Basic.PropertiesWindow.AddEditableListFiles="Додај датотеке у '%1'" Basic.PropertiesWindow.AddEditableListFiles="Додај датотеке у '%1'"
Basic.PropertiesWindow.AddEditableListEntry="Додај записе у '%1'" Basic.PropertiesWindow.AddEditableListEntry="Додај записе у '%1'"
Basic.PropertiesWindow.EditEditableListEntry="Измени записе за '%1'" Basic.PropertiesWindow.EditEditableListEntry="Измени записе за '%1'"
@ -249,7 +253,9 @@ Basic.Main.Connecting="Повезивање..."
Basic.Main.StartRecording="Почни снимање" Basic.Main.StartRecording="Почни снимање"
Basic.Main.StartStreaming="Почни стримовање" Basic.Main.StartStreaming="Почни стримовање"
Basic.Main.StopRecording="Заустави снимање" Basic.Main.StopRecording="Заустави снимање"
Basic.Main.StoppingRecording="Заустављање снимања..."
Basic.Main.StopStreaming="Заустави стримовање" Basic.Main.StopStreaming="Заустави стримовање"
Basic.Main.StoppingStreaming="Заустављање емитовања..."
Basic.Main.ForceStopStreaming="Заустави стримовање (поништи одлагање)" Basic.Main.ForceStopStreaming="Заустави стримовање (поништи одлагање)"
Basic.MainMenu.File="Фајл (&F)" Basic.MainMenu.File="Фајл (&F)"
@ -286,6 +292,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="Помери на врх (&T)"
Basic.MainMenu.Edit.Order.MoveToBottom="Помери на дно (&B)" Basic.MainMenu.Edit.Order.MoveToBottom="Помери на дно (&B)"
Basic.MainMenu.Edit.AdvAudio="Н&апредна подешавања звука" Basic.MainMenu.Edit.AdvAudio="Н&апредна подешавања звука"
Basic.MainMenu.SceneCollection="Колекција сцена (&S)" Basic.MainMenu.SceneCollection="Колекција сцена (&S)"
Basic.MainMenu.Profile="Профил (&P)" Basic.MainMenu.Profile="Профил (&P)"
@ -307,6 +314,7 @@ Basic.Settings.General.Theme="Тема"
Basic.Settings.General.Language="Језик" Basic.Settings.General.Language="Језик"
Basic.Settings.General.WarnBeforeStartingStream="Прикажи прозор за потврду када се започињу стримови" Basic.Settings.General.WarnBeforeStartingStream="Прикажи прозор за потврду када се започињу стримови"
Basic.Settings.General.WarnBeforeStoppingStream="Прикажи прозор за потврду када се заустављају стримови" Basic.Settings.General.WarnBeforeStoppingStream="Прикажи прозор за потврду када се заустављају стримови"
Basic.Settings.General.HideProjectorCursor="Сакриј показивач на пројекторима"
Basic.Settings.General.Snapping="Поравнавање привлачењем извора" Basic.Settings.General.Snapping="Поравнавање привлачењем извора"
Basic.Settings.General.ScreenSnapping="Привуци изворе ивици екрана" Basic.Settings.General.ScreenSnapping="Привуци изворе ивици екрана"
Basic.Settings.General.CenterSnapping="Привуци изворе хоризонталној и вертикалној средини" Basic.Settings.General.CenterSnapping="Привуци изворе хоризонталној и вертикалној средини"

View file

@ -82,10 +82,12 @@ ConfirmExit.Text="OBS är aktivt. Alla strömmar/inspelningar kommer att stäng
ConfirmRemove.Title="Bekräfta borttagning" ConfirmRemove.Title="Bekräfta borttagning"
ConfirmRemove.Text="Vill du verkligen ta bort '$1'?" ConfirmRemove.Text="Vill du verkligen ta bort '$1'?"
ConfirmRemove.TextMultiple="Är du säker på att du vill ta bort %1 poster?"
Output.ConnectFail.Title="Anslutning misslyckades" Output.ConnectFail.Title="Anslutning misslyckades"
Output.ConnectFail.BadPath="Ogiltig sökväg eller anslutnings-URL. Kontrollera att dina inställningar är korrekta." Output.ConnectFail.BadPath="Ogiltig sökväg eller anslutnings-URL. Kontrollera att dina inställningar är korrekta."
Output.ConnectFail.ConnectFailed="Kunde inte ansluta till servern" Output.ConnectFail.ConnectFailed="Kunde inte ansluta till servern"
Output.ConnectFail.InvalidStream="Kunde inte komma åt den valda kanalen eller strömnyckeln, var god dubbelkolla din strömnyckel. Om den stämmer kan det finnas något anslutningsproblem till servern."
Output.ConnectFail.Error="Ett oväntat fel uppstod vid anslutning till servern. Se loggfilen för ytterligare information." Output.ConnectFail.Error="Ett oväntat fel uppstod vid anslutning till servern. Se loggfilen för ytterligare information."
Output.ConnectFail.Disconnected="Nedkopplad från servern." Output.ConnectFail.Disconnected="Nedkopplad från servern."
@ -138,10 +140,17 @@ Basic.DisplayCapture="Bildskärmskälla"
Basic.Main.PreviewConextMenu.Enable="Förhandsvisa" Basic.Main.PreviewConextMenu.Enable="Förhandsvisa"
ScaleFiltering="Skalningsfiltrering"
ScaleFiltering.Bilinear="Bilinjär"
ScaleFiltering.Bicubic="Bikubisk"
ScaleFiltering.Lanczos="Lanczos"
Deinterlacing.Discard="Avfärda" Deinterlacing.Discard="Avfärda"
Deinterlacing.Retro="Retro" Deinterlacing.Retro="Retro"
Deinterlacing.Linear="Linjär" Deinterlacing.Linear="Linjär"
Deinterlacing.Linear2x="Linjär 2x" Deinterlacing.Linear2x="Linjär 2x"
Deinterlacing.Yadif="Yadif"
Deinterlacing.Yadif2x="Yadif 2x"
Deinterlacing.TopFieldFirst="Övre fältet först" Deinterlacing.TopFieldFirst="Övre fältet först"
Deinterlacing.BottomFieldFirst="Nedre fältet först" Deinterlacing.BottomFieldFirst="Nedre fältet först"
@ -175,7 +184,9 @@ Basic.PropertiesWindow.ConfirmTitle="Inställningarna har ändrats"
Basic.PropertiesWindow.Confirm="Det finns osparade ändringar. Vill du behålla dem?" Basic.PropertiesWindow.Confirm="Det finns osparade ändringar. Vill du behålla dem?"
Basic.PropertiesWindow.NoProperties="Inga inställningar tillgängliga" Basic.PropertiesWindow.NoProperties="Inga inställningar tillgängliga"
Basic.PropertiesWindow.AddFiles="Lägg till Filer" Basic.PropertiesWindow.AddFiles="Lägg till Filer"
Basic.PropertiesWindow.AddDir="Lägg till mapp"
Basic.PropertiesWindow.AddURL="Lägg till Sökväg/URL" Basic.PropertiesWindow.AddURL="Lägg till Sökväg/URL"
Basic.PropertiesWindow.AddEditableListDir="Lägg till mapp i '%1'"
Basic.PropertiesWindow.AddEditableListFiles="Lägg till filer i '%1'" Basic.PropertiesWindow.AddEditableListFiles="Lägg till filer i '%1'"
Basic.PropertiesView.FPS.Simple="Enkla bildfrekvensvärden" Basic.PropertiesView.FPS.Simple="Enkla bildfrekvensvärden"
@ -237,7 +248,9 @@ Basic.Main.Connecting="Ansluter..."
Basic.Main.StartRecording="Starta inspelning" Basic.Main.StartRecording="Starta inspelning"
Basic.Main.StartStreaming="Börja strömma" Basic.Main.StartStreaming="Börja strömma"
Basic.Main.StopRecording="Stoppa inspelning" Basic.Main.StopRecording="Stoppa inspelning"
Basic.Main.StoppingRecording="Stoppar inspelning..."
Basic.Main.StopStreaming="Sluta strömma" Basic.Main.StopStreaming="Sluta strömma"
Basic.Main.StoppingStreaming="Stoppar ström..."
Basic.Main.ForceStopStreaming="Sluta strömma (ignorera fördröjning)" Basic.Main.ForceStopStreaming="Sluta strömma (ignorera fördröjning)"
Basic.MainMenu.File="&Arkiv" Basic.MainMenu.File="&Arkiv"
@ -274,6 +287,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="Lägg &överst"
Basic.MainMenu.Edit.Order.MoveToBottom="Lägg unders&t" Basic.MainMenu.Edit.Order.MoveToBottom="Lägg unders&t"
Basic.MainMenu.Edit.AdvAudio="&Avancerade ljudinställningar" Basic.MainMenu.Edit.AdvAudio="&Avancerade ljudinställningar"
Basic.MainMenu.View="&Visa"
Basic.MainMenu.View.Toolbars="&Verktygsfält"
Basic.MainMenu.View.Toolbars.Listboxes="&Listrutor"
Basic.MainMenu.View.SceneTransitions="S&cenövergångar"
Basic.MainMenu.View.StatusBar="&Statusfält"
Basic.MainMenu.SceneCollection="&Scensamling" Basic.MainMenu.SceneCollection="&Scensamling"
Basic.MainMenu.Profile="&Profil" Basic.MainMenu.Profile="&Profil"
@ -295,13 +314,16 @@ Basic.Settings.General.Theme=" Tema"
Basic.Settings.General.Language="Språk" Basic.Settings.General.Language="Språk"
Basic.Settings.General.WarnBeforeStartingStream="Visa bekräftelsedialog när ström startas" Basic.Settings.General.WarnBeforeStartingStream="Visa bekräftelsedialog när ström startas"
Basic.Settings.General.WarnBeforeStoppingStream="Visa bekräftelsedialog när ström stoppas" Basic.Settings.General.WarnBeforeStoppingStream="Visa bekräftelsedialog när ström stoppas"
Basic.Settings.General.HideProjectorCursor="Dölj pekaren över projektorer"
Basic.Settings.General.ScreenSnapping="Fäst källor till skärmens kant" Basic.Settings.General.ScreenSnapping="Fäst källor till skärmens kant"
Basic.Settings.General.CenterSnapping="Fäst källor till den horisontala och vertikala mittenlinjen" Basic.Settings.General.CenterSnapping="Fäst källor till den horisontala och vertikala mittenlinjen"
Basic.Settings.General.SourceSnapping="Fäst källor till andra källor" Basic.Settings.General.SourceSnapping="Fäst källor till andra källor"
Basic.Settings.General.SnapDistance="Fästkänslighet" Basic.Settings.General.SnapDistance="Fästkänslighet"
Basic.Settings.General.RecordWhenStreaming="Spela automatiskt in vid strömning"
Basic.Settings.General.KeepRecordingWhenStreamStops="Fortsätt spela in när strömmen stoppas"
Basic.Settings.Stream="Stream" Basic.Settings.Stream="Ström"
Basic.Settings.Stream.StreamType="Streamtyp" Basic.Settings.Stream.StreamType="Strömtyp"
Basic.Settings.Output="Utmatning" Basic.Settings.Output="Utmatning"
Basic.Settings.Output.Format="Inspelningsformat" Basic.Settings.Output.Format="Inspelningsformat"
@ -371,6 +393,7 @@ Basic.Settings.Output.Adv.FFmpeg.AEncoder="Ljudkodare"
Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Ljudkodar-inställningar (om något)" Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Ljudkodar-inställningar (om något)"
Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="Muxerinställningar (om det finns)" Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="Muxerinställningar (om det finns)"
FilenameFormatting.completer="%CCYY-%MM-%DD %hh-%mm-%ss\n%YY-%MM-%DD %hh-%mm-%ss\n%Y-%m-%d %H-%M-%S\n%y-%m-%d %H-%M-%S\n%a %Y-%m-%d %H-%M-%S\n%A %Y-%m-%d %H-%M-%S\n%Y-%b-%d %H-%M-%S\n%Y-%B-%d %H-%M-%S\n%Y-%m-%d %I-%M-%S-%p\n%Y-%m-%d %H-%M-%S-%z\n%Y-%m-%d %H-%M-%S-%Z"
FilenameFormatting.TT="%CCYY År, fyra siffror\n%YY År, de två sista siffrorna (00-99)\n%MM Månad som en siffra (01-12)\n%DD Månadens dag, inledande nolla (01-31)\n%hh Timme i 24-timmarsformat (00-23)\n%mm Minut (00-59)\n%ss Sekund (00-61)\n%% Ett procenttecken\n%a Förkortad veckodag\n%A Fullständig veckodag\n%b Förkortat månadsnamn\n%B Fullständigt månadsnamn\n%d Månadens dag, inledande nolla (01-31)\n%H Timme i 24-timmarsformat (00-23)\n%I Timme i 12-timmarsformat (01-12)\n%m Månad som en siffra (01-12)\n%M Minut (00-59)\n%p AM eller PM\n%S Sekund (00-61)\n%y År, de två sista siffrorna (00-99)\n%Y År\n%z ISO 8601-offset från UTC eller tidszonens\n namn eller förkortning\n%Z Tidszonens namn eller förkortning\n" FilenameFormatting.TT="%CCYY År, fyra siffror\n%YY År, de två sista siffrorna (00-99)\n%MM Månad som en siffra (01-12)\n%DD Månadens dag, inledande nolla (01-31)\n%hh Timme i 24-timmarsformat (00-23)\n%mm Minut (00-59)\n%ss Sekund (00-61)\n%% Ett procenttecken\n%a Förkortad veckodag\n%A Fullständig veckodag\n%b Förkortat månadsnamn\n%B Fullständigt månadsnamn\n%d Månadens dag, inledande nolla (01-31)\n%H Timme i 24-timmarsformat (00-23)\n%I Timme i 12-timmarsformat (01-12)\n%m Månad som en siffra (01-12)\n%M Minut (00-59)\n%p AM eller PM\n%S Sekund (00-61)\n%y År, de två sista siffrorna (00-99)\n%Y År\n%z ISO 8601-offset från UTC eller tidszonens\n namn eller förkortning\n%Z Tidszonens namn eller förkortning\n"
@ -410,6 +433,11 @@ Basic.Settings.Audio.PushToTalkDelay="Fördröjning för tryck för att tala"
Basic.Settings.Audio.UnknownAudioDevice="[Enheten är inte ansluten eller tillgänglig]" Basic.Settings.Audio.UnknownAudioDevice="[Enheten är inte ansluten eller tillgänglig]"
Basic.Settings.Advanced="Avancerat" Basic.Settings.Advanced="Avancerat"
Basic.Settings.Advanced.General.ProcessPriority="Processprioritet"
Basic.Settings.Advanced.General.ProcessPriority.High="Hög"
Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="Över normal"
Basic.Settings.Advanced.General.ProcessPriority.Normal="Normal"
Basic.Settings.Advanced.General.ProcessPriority.Idle="Inaktiv"
Basic.Settings.Advanced.FormatWarning="Varning: Andra färgformat än NV12 är avsedda för inspelning och rekommenderas inte för att strömma. Högre processoranvändning kan uppstå vid strömning p.g.a. konvertering av färgformat." Basic.Settings.Advanced.FormatWarning="Varning: Andra färgformat än NV12 är avsedda för inspelning och rekommenderas inte för att strömma. Högre processoranvändning kan uppstå vid strömning p.g.a. konvertering av färgformat."
Basic.Settings.Advanced.Audio.BufferingTime="Ljudbuffringstid" Basic.Settings.Advanced.Audio.BufferingTime="Ljudbuffringstid"
Basic.Settings.Advanced.Video.ColorFormat="Färgformat" Basic.Settings.Advanced.Video.ColorFormat="Färgformat"

View file

@ -84,6 +84,8 @@ New="புதிய"

View file

@ -50,6 +50,7 @@ Basic.Scene="ฉาก"
Basic.Main.AddSceneDlg.Title="เพิ่มฉาก" Basic.Main.AddSceneDlg.Title="เพิ่มฉาก"
Basic.Main.DefaultSceneName.Text="ฉาก %1" Basic.Main.DefaultSceneName.Text="ฉาก %1"
@ -87,6 +88,7 @@ Basic.MainMenu.File.Exit="อ&อก"
Basic.MainMenu.Help.CheckForUpdates="ตรวจสอบการอัพเดต" Basic.MainMenu.Help.CheckForUpdates="ตรวจสอบการอัพเดต"
Basic.Settings.ConfirmTitle="ยืนยันการเปลี่ยนแปลง" Basic.Settings.ConfirmTitle="ยืนยันการเปลี่ยนแปลง"

View file

@ -121,6 +121,7 @@ Basic.DisplayCapture="Ekran Yakalama"
Basic.Main.PreviewConextMenu.Enable="Önizlemeyi Etkinleştir" Basic.Main.PreviewConextMenu.Enable="Önizlemeyi Etkinleştir"
Basic.Main.AddSceneDlg.Title="Sahne Ekle" Basic.Main.AddSceneDlg.Title="Sahne Ekle"
Basic.Main.AddSceneDlg.Text="Lütfen sahne adını giriniz" Basic.Main.AddSceneDlg.Text="Lütfen sahne adını giriniz"
@ -246,6 +247,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="En &Üste Taşı"
Basic.MainMenu.Edit.Order.MoveToBottom="En &Alta Taşı" Basic.MainMenu.Edit.Order.MoveToBottom="En &Alta Taşı"
Basic.MainMenu.Edit.AdvAudio="&Gelişmiş Ses Özellikleri" Basic.MainMenu.Edit.AdvAudio="&Gelişmiş Ses Özellikleri"
Basic.MainMenu.SceneCollection="&Sahne Koleksiyonu" Basic.MainMenu.SceneCollection="&Sahne Koleksiyonu"
Basic.MainMenu.Profile="&Profil" Basic.MainMenu.Profile="&Profil"

View file

@ -6,8 +6,9 @@ OK="Так"
Apply="Застосувати" Apply="Застосувати"
Cancel="Скасувати" Cancel="Скасувати"
Close="Закрити" Close="Закрити"
Save="зберегти" Save="Зберегти"
Discard="Відхилити" Discard="Відхилити"
Disable="Вимкнено"
Yes="Так" Yes="Так"
No="Ні" No="Ні"
Add="Додати" Add="Додати"
@ -26,6 +27,10 @@ Mixer="Мікшер"
Browse="Огляд" Browse="Огляд"
Mono="Моно" Mono="Моно"
Stereo="Стерео" Stereo="Стерео"
DroppedFrames="Пропущено кадрів %1 (%2%)"
PreviewProjector="Повноекранний Проектор (вікно Перегляду)"
SceneProjector="Повноекранний Проектор (Сцена)"
SourceProjector="Повноекранний Проектор (Джерело)"
Clear="Очистити" Clear="Очистити"
Revert="Відмінити" Revert="Відмінити"
Show="Показати" Show="Показати"
@ -34,9 +39,33 @@ Untitled="Без назви"
New="Новий" New="Новий"
Duplicate="Дублювати" Duplicate="Дублювати"
Enable="Увімкнути" Enable="Увімкнути"
DisableOSXVSync="Вимкнути OSX V-Sync"
ResetOSXVSyncOnExit="Відновити OSX V-Sync при виході"
HighResourceUsage="Кодування перевантажено! Треба знизити вимоги до налаштування відео або спробувати швидші налаштування енкодера."
Transition="Відео-перехід"
QuickTransitions="Швидкі відео-переходи"
Left="Зліва"
Right="Зправа"
Top="Зверху"
Bottom="Знизу"
QuickTransitions.SwapScenes="Поміняти місцями сцени Перегляд/Вивід після Відео-переходу"
QuickTransitions.SwapScenesTT="Міняє місцями сцени Перегляд та Вивід після закінчення Відео-переходу (якщо сцена Вивід ще існує).\nЗміні внесені до обох сцен залишаються."
QuickTransitions.DuplicateScene="Використовувати копію сцени"
QuickTransitions.DuplicateSceneTT="Під час редагування поточної сцени дозволяє зберегти Вивід без змін.\nДля можливості редагувати властивості Джерел, увімкніть також 'Використовувати копію Джерел'.\nЗміна цієї опції призведе до оновлення поточної сцени, яка йде на Вивід (якщо вона ще існує)."
QuickTransitions.EditProperties="Використовувати копію Джерел"
QuickTransitions.EditPropertiesTT="Під час редагування поточної сцени, дозволяє редагувати властивості Джерел не змінюючи Вивід.\nЦя опція можлива якщо 'Використовувати копію сцени' вибрана.\nДеякі джерела (наприклад медіа або прилади захвату зображень) не підтримують копіювання, тобто не можна внести окремі зміни у джерело.\nЗміна властивостей таких джерел миттєво змінить Вивід (якщо він ще існує).\n\nУвага: Так як джерела внутрішньо копіюються, то це може призвести до додаткового навантаження на систему та використання відео ресурсів."
QuickTransitions.HotkeyName="Швидкий відео-перехід: %1"
Basic.AddTransition="Додати Відео-перехід що конфігурується"
Basic.RemoveTransition="Видалити Відео-перехід що конфігурується"
Basic.TransitionProperties="Властивості Відео-переходу"
Basic.SceneTransitions="Відео-переходи між Сценами"
Basic.TransitionDuration="Тривалість"
Basic.TogglePreviewProgramMode="Режим Студії"
TransitionNameDlg.Text="Будь ласка, введіть назву для Відео-переходу"
TransitionNameDlg.Title="Назва Відео-переходу"
TitleBar.Profile="Профіль" TitleBar.Profile="Профіль"
TitleBar.Scenes="Сцени" TitleBar.Scenes="Сцени"
@ -47,29 +76,139 @@ NameExists.Text="Ім'я вже використовується."
NoNameEntered.Title="Невірно введено ім'я" NoNameEntered.Title="Невірно введено ім'я"
NoNameEntered.Text="Не можна використовувати порожні назви." NoNameEntered.Text="Не можна використовувати порожні назви."
ConfirmStart.Title="Почати трансляцію?"
ConfirmStart.Text="Ви впевнені, що хочете почати трансляцію?"
ConfirmStop.Title="Закінчити трансляцію?"
ConfirmStop.Text="Ви впевнені, що хочете закінчити трансляцію?"
ConfirmExit.Title="Вийти з OBS?" ConfirmExit.Title="Вийти з OBS?"
ConfirmExit.Text="OBS ще працює. Всі розпочаті трансляції та записи буде припинено. Ви дійсно хочете вийти?"
ConfirmRemove.Title="Підтвердження видалення" ConfirmRemove.Title="Підтвердження видалення"
ConfirmRemove.Text="Ви дійсно бажаєте видалити \"$1\"?" ConfirmRemove.Text="Ви дійсно бажаєте видалити \"$1\"?"
ConfirmRemove.TextMultiple="Ви впевнені, що хочете видалити %1 елементів?"
Output.ConnectFail.Title="Не вдалося підключитися" Output.ConnectFail.Title="Не вдалося підключитися"
Output.ConnectFail.BadPath="Шлях або URL-адреса недосяжні. Будь ласка, перевірте налаштування програмного забезпечення."
Output.ConnectFail.ConnectFailed="Не вдалося підключитися до сервера" Output.ConnectFail.ConnectFailed="Не вдалося підключитися до сервера"
Output.ConnectFail.InvalidStream="Немає доступу до вказаного каналу або до ключа трансляції, будь ласка перевірте свій ключ для трансляцій. Якщо він дійсний, то можливо є проблеми зв'язку з сервером."
Output.ConnectFail.Error="Під час зв'язку з сервером відбулася несподівана помилка. Подробиці знаходяться у лог-файлі."
Output.ConnectFail.Disconnected="Від'єднаний від серверу." Output.ConnectFail.Disconnected="Від'єднаний від серверу."
Output.RecordFail.Title="Не вдалося розпочати запис" Output.RecordFail.Title="Не вдалося розпочати запис"
Output.RecordFail.Unsupported="Формат виводу на жаль не підтримується або форматом не підтримується більш однієї звукової доріжки. Будь ласка, перевірте налаштування та повторіть спробу."
Output.RecordNoSpace.Title="Недостатньо простору на диску"
Output.RecordNoSpace.Msg="На диску недостатньо простору для запису."
Output.RecordError.Title="Помилка запису"
Output.RecordError.Msg="Під час запису відбулася несподівана помилка."
Output.BadPath.Title="Недійсний шлях до файлу"
Output.BadPath.Text="Шлях вказаний для виводу файлу недійсний. Будь ласка, перевірте у налаштуваннях, що шлях було вказано вірно."
LogReturnDialog="Лог успішно завантажено"
LogReturnDialog.CopyURL="Копіювати посилання" LogReturnDialog.CopyURL="Копіювати посилання"
LogReturnDialog.ErrorUploadingLog="Помилка завантаження файлу журналу" LogReturnDialog.ErrorUploadingLog="Помилка завантаження файлу журналу"
LicenseAgreement="Ліцензійна угода"
LicenseAgreement.PleaseReview="Будь ласка, ознайомтеся з умовами ліцензії, перш ніж використовувати OBS. Використовуючи цю програму, ви підтверджуєте, що ви прочитали і згодні з умовами <a href='http://www.gnu.org/licenses/gpl-2.0.html'> GNU General Public License v 2.0</a>. Будь ласка, прокрутіть вниз, щоб побачити весь текст угоди."
LicenseAgreement.ClickIAgreeToContinue="Якщо ви згодні з умовами угоди, натисніть кнопку Я згоден(-а), щоб продовжити. Ви повинні прийняти угоду для використання OBS."
LicenseAgreement.IAgree="Я згоден(-а)"
LicenseAgreement.Exit="Вихід" LicenseAgreement.Exit="Вихід"
Remux.SourceFile="OBS запис"
Remux.TargetFile="Кінцевий файл"
Remux.Remux="Ремультиплексація"
Remux.OBSRecording="OBS запис"
Remux.FinishedTitle="Ремультиплексацію завершено"
Remux.Finished="Запис ремультиплексовано"
Remux.FinishedError="Запис ремультиплексовано, але схоже файл неповний"
Remux.SelectRecording="Виберіть OBS запис …"
Remux.SelectTarget="Виберіть кінцевий файл …"
Remux.FileExistsTitle="Кінцевий файл існує"
Remux.FileExists="Кінцевий файл існує, ви хочете його замінити?"
Remux.ExitUnfinishedTitle="Ремультиплексація триває"
Remux.ExitUnfinished="Ремультиплексацію не завершено, якщо зупинити зараз, то файл може лишитись пошкодженим.\nВи впевнені, що хочете зупинити ремультиплексацію?"
UpdateAvailable="Доступне оновлення"
UpdateAvailable.Text="Доступна версія %1.%2.%3. <a href='%4'>Натисніть тут, щоб завантажити</a>"
Basic.Scene="Сцена" Basic.Scene="Сцена"
Basic.DisplayCapture="Захват екрану"
Basic.Main.PreviewConextMenu.Enable="Увімкнути вікно Перегляду"
ScaleFiltering="Фільтр масштабування"
ScaleFiltering.Point="Ступінчастий"
ScaleFiltering.Bilinear="Білінійний"
ScaleFiltering.Bicubic="Бікубічний"
ScaleFiltering.Lanczos="Ланцош"
Deinterlacing="Деінтерлейсинг"
Deinterlacing.Discard="Discard"
Deinterlacing.Retro="Retro"
Deinterlacing.Blend="Blend"
Deinterlacing.Blend2x="Blend 2x"
Deinterlacing.Linear="Linear"
Deinterlacing.Linear2x="Linear 2x"
Deinterlacing.Yadif="Yadif"
Deinterlacing.Yadif2x="Yadif 2x"
Deinterlacing.TopFieldFirst="Спочатку непарні рядки"
Deinterlacing.BottomFieldFirst="Спочатку парні рядки"
Basic.Main.AddSceneDlg.Title="Додати Сцену"
Basic.Main.AddSceneDlg.Text="Будь ласка, введіть назву для Сцени"
Basic.Main.DefaultSceneName.Text="Сцена %1"
Basic.Main.AddSceneCollection.Title="Додати Набір Сцен"
Basic.Main.AddSceneCollection.Text="Будь ласка, введіть назву для Набору Сцен"
Basic.Main.RenameSceneCollection.Title="Перейменування Набору Сцен"
AddProfile.Title="Додати Профіль"
AddProfile.Text="Будь ласка, введіть назву для Профілю"
RenameProfile.Title="Перейменування Профілю"
Basic.Main.PreviewDisabled="Вікно Перегляду вимкнено"
Basic.SourceSelect="Створити/Вибрати Джерело"
Basic.SourceSelect.CreateNew="Створити нове"
Basic.SourceSelect.AddExisting="Додати вже існуюче"
Basic.SourceSelect.AddVisible="Зробити джерело видимим"
Basic.PropertiesWindow="Властивості для '%1'"
Basic.PropertiesWindow.SelectColor="Вибір кольору"
Basic.PropertiesWindow.SelectFont="Вибір шрифту"
Basic.PropertiesWindow.ConfirmTitle="Змінено налаштування"
Basic.PropertiesWindow.Confirm="Зміни незбережені. Ви хочете їх зберегти?"
Basic.PropertiesWindow.NoProperties="Немає доступних властивостей"
Basic.TransformWindow.BoundsType="Тип рамки розміру"
Basic.TransformWindow.BoundsAlignment="Вирівнювання у рамці розміру"
Basic.TransformWindow.BoundsType.ScaleInner="Масштабувати до внутрішніх границь"
Basic.TransformWindow.BoundsType.ScaleOuter="Масштабувати до зовнішніх границь"
Basic.TransformWindow.BoundsType.ScaleToWidth="Масштабувати в ширину границь"
Basic.TransformWindow.BoundsType.ScaleToHeight="Масштабувати в висоту границь"
Basic.TransformWindow.BoundsType.Stretch="Розтягнути до границь"
Basic.Main.Scenes="Сцени"
Basic.Main.Sources="Джерела"
Basic.Main.Connecting="З'єднання..."
Basic.Main.StopRecording="Зупинити запис"
Basic.Main.StoppingRecording="Запис зупиняється..."
Basic.Main.StopStreaming="Закінчити трансляцію"
Basic.Main.StoppingStreaming="Припинення трансляції..."
Basic.Main.ForceStopStreaming="Закінчити трансляцію (миттєво)"
@ -83,6 +222,7 @@ Basic.Scene="Сцена"
FilenameFormatting.TT="%CCYY Рік, чотири цифри\n%YY Рік, останні дві цифри (00-99)\n%MM Місяць за номером (01-12)\n%DD День місяця, ноль попереду (01-31)\n%hh Години у 24-год. форматі (00-23)\n%mm Мінути (00-59)\n%ss Секунди (00-61)\n%% Знак % \n%a Абревіатура дня тижня\n%A День тижня повністю\n%b Абревіатура місяця\n%B Місяць повністю\n%d День місяця, ноль попереду (01-31)\n%H Години у 24-год. форматі (00-23)\n%I Години у 12-год. форматі (01-12)\n%m Місяць за номером (01-12)\n%M Мінути (00-59)\n%p ДП або ПП позначення\n%S Секунди (00-61)\n%y Рік, останні дві цифри (00-99)\n%Y Рік\n%z ISO 8601 поправка від UTC або часовий\n пояс чи абревіатура\n%Z Часовий пояс чи абревіатура\n"
@ -90,26 +230,44 @@ Basic.Scene="Сцена"
Basic.Hotkeys.StopStreaming="Закінчити трансляцію"
Basic.Hotkeys.StartRecording="Почати запис"
Basic.Hotkeys.StopRecording="Зупинити запис"
Basic.Hotkeys.SelectScene="Перейти до сцени"
Hotkeys.Insert="Insert"
Hotkeys.Delete="Delete"
Hotkeys.Home="Home"
Hotkeys.End="End"
Hotkeys.PageUp="Page Up"
Hotkeys.PageDown="Page Down"
Hotkeys.NumLock="Num Lock"
Hotkeys.ScrollLock="Scroll Lock"
Hotkeys.CapsLock="Caps Lock"
Hotkeys.Backspace="Backspace"
Hotkeys.Tab="Tab"
Hotkeys.Print="Print"
Hotkeys.Pause="Pause"
Hotkeys.Left="Left"
Hotkeys.Right="Right"
Hotkeys.Up="Up"
Hotkeys.Down="Down"
Hotkeys.Windows="Windows"
Hotkeys.Super="Super"
Hotkeys.Menu="Menu"
Hotkeys.Space="Пробіл"
Hotkeys.NumpadNum="Numpad %1"
Hotkeys.NumpadMultiply="Numpad Multiply"
Hotkeys.NumpadDivide="Numpad Divide"
Hotkeys.NumpadAdd="Numpad Add"
Hotkeys.NumpadSubtract="Numpad Subtract"
Hotkeys.NumpadDecimal="Numpad Decimal"
Hotkeys.AppleKeypadNum="%1 (Keypad)"
Hotkeys.AppleKeypadMultiply="* (Keypad)"
Hotkeys.AppleKeypadDivide="/ (Keypad)"
Hotkeys.AppleKeypadAdd="+ (Keypad)"
Hotkeys.AppleKeypadSubtract="- (Keypad)"
Hotkeys.AppleKeypadDecimal=". (Keypad)"

View file

@ -7,7 +7,8 @@ Apply="Áp dụng"
Cancel="Hùy" Cancel="Hùy"
Close="Đóng" Close="Đóng"
Save="Lưu" Save="Lưu"
Discard="Loại bỏ" Discard="Bỏ"
Disable="Tắt"
Yes="Có" Yes="Có"
No="Không" No="Không"
Add="Thêm" Add="Thêm"
@ -26,29 +27,40 @@ Mixer="Máy trộn"
Browse="trình duyệt" Browse="trình duyệt"
Mono="Âm thanh đơn" Mono="Âm thanh đơn"
Stereo="Âm thanh nổi" Stereo="Âm thanh nổi"
DroppedFrames="Khung bị bỏ %1 (%2%)" DroppedFrames="Khung rớt %1 (%2%)"
PreviewProjector="Toàn màn hình (xem trước)" PreviewProjector="Toàn màn hình (xem trước)"
SceneProjector="Toàn màn hình (cảnh)" SceneProjector="Toàn màn hình (cảnh)"
SourceProjector="Toàn màn hình (nguồn)" SourceProjector="Toàn màn hình (nguồn)"
Clear="Xóa" Clear="Xóa"
Revert="Phục hồi" Revert="Phục hồi"
Show="Hiện" Show="Hiện"
Hide="Ẩn" Hide="Ẩn"
Untitled="Chưa Đặt Tên" Untitled="Chưa Đặt Tên"
New="Tài liệu mới" New="Mới"
Duplicate="tạo bản sao" Duplicate="Tạo bản sao"
Enable="Kích hoạt" Enable="Kích hoạt"
DisableOSXVSync="Tắt OSX V-Sync"
ResetOSXVSyncOnExit="Đặt lại OSX V-Sync khi Thoát"
Transition="Chuyển tiếp"
QuickTransitions="C. cảnh nhanh"
Left="Trái"
Right="Phải"
Top="Trên"
Bottom="Dưới"
QuickTransitions.SwapScenes="Hoán đổi cảnh Xem trước/Đầu ra sau khi Chuyển cảnh"
QuickTransitions.SwapScenesTT="Hoán đổi cảnh xem trước và cảnh đầu ra sau khi chuyển cảnh (nếu cảnh đầu ra gốc vẫn tồn tại).\nMọi thay đổi với cảnh đầu ra gốc sẽ không hoàn tác."
QuickTransitions.DuplicateScene="Tạo bản sao cảnh"
TitleBar.Profile="Cấu hình"
TitleBar.Profile="Hồ sơ cá nhân"
TitleBar.Scenes="Cảnh" TitleBar.Scenes="Cảnh"
NameExists.Title="Tên đã tồn tại" NameExists.Title="Tên đã tồn tại"
NameExists.Text="Tên hiện đang sử dụng." NameExists.Text="Tên hiện đang sử dụng."
NoNameEntered.Title="Vui lòng nhập tuổi hợp lệ" NoNameEntered.Title="Vui lòng nhập tên hợp lệ"
NoNameEntered.Text="Bạn không thể sử dụng tên có sản phẩm nào." NoNameEntered.Text="Bạn không thể sử dụng tên có sản phẩm nào."
@ -114,6 +126,7 @@ Basic.DisplayCapture="Chụp màn hình"
Basic.Main.PreviewConextMenu.Enable="Bật xem trước" Basic.Main.PreviewConextMenu.Enable="Bật xem trước"
Basic.Main.AddSceneDlg.Title="Thêm cảnh" Basic.Main.AddSceneDlg.Title="Thêm cảnh"
Basic.Main.AddSceneDlg.Text="Vui lòng nhập tên của cảnh" Basic.Main.AddSceneDlg.Text="Vui lòng nhập tên của cảnh"
@ -243,6 +256,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="Chuyển đến đầu trang"
Basic.MainMenu.Edit.Order.MoveToBottom="Chuyển đến dưới cùng" Basic.MainMenu.Edit.Order.MoveToBottom="Chuyển đến dưới cùng"
Basic.MainMenu.Edit.AdvAudio="Thuộc tính âm thanh nâng cao" Basic.MainMenu.Edit.AdvAudio="Thuộc tính âm thanh nâng cao"
Basic.MainMenu.SceneCollection="& Cảnh bộ sưu tập" Basic.MainMenu.SceneCollection="& Cảnh bộ sưu tập"
Basic.MainMenu.Profile="& Hồ sơ" Basic.MainMenu.Profile="& Hồ sơ"

View file

@ -87,6 +87,7 @@ ConfirmExit.Text="OBS工作中. 所有的流/录像将会停止. 你确定想要
ConfirmRemove.Title="确认移除" ConfirmRemove.Title="确认移除"
ConfirmRemove.Text="确定要删除 '$1' 吗?" ConfirmRemove.Text="确定要删除 '$1' 吗?"
ConfirmRemove.TextMultiple="您确定要删除 %1 项目吗?"
Output.ConnectFail.Title="连接失败" Output.ConnectFail.Title="连接失败"
Output.ConnectFail.BadPath="无效的路径或URL。请检查您的设置以确认它们是有效的。" Output.ConnectFail.BadPath="无效的路径或URL。请检查您的设置以确认它们是有效的。"
@ -144,6 +145,12 @@ Basic.DisplayCapture="显示捕获"
Basic.Main.PreviewConextMenu.Enable="开启预览" Basic.Main.PreviewConextMenu.Enable="开启预览"
ScaleFiltering="尺度滤波"
ScaleFiltering.Point="点"
ScaleFiltering.Bilinear="双线性算法"
ScaleFiltering.Bicubic="双立方算法"
ScaleFiltering.Lanczos="兰索斯算法"
Deinterlacing="去隔行扫描" Deinterlacing="去隔行扫描"
Deinterlacing.Discard="舍弃" Deinterlacing.Discard="舍弃"
Deinterlacing.Retro="复古" Deinterlacing.Retro="复古"
@ -186,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="设置已更改"
Basic.PropertiesWindow.Confirm="有未保存的更改. 你想要保存他们吗?" Basic.PropertiesWindow.Confirm="有未保存的更改. 你想要保存他们吗?"
Basic.PropertiesWindow.NoProperties="没有可用的属性" Basic.PropertiesWindow.NoProperties="没有可用的属性"
Basic.PropertiesWindow.AddFiles="添加文件" Basic.PropertiesWindow.AddFiles="添加文件"
Basic.PropertiesWindow.AddDir="添加目录"
Basic.PropertiesWindow.AddURL="添加路径 /URL" Basic.PropertiesWindow.AddURL="添加路径 /URL"
Basic.PropertiesWindow.AddEditableListDir="将目录添加到 '%1'"
Basic.PropertiesWindow.AddEditableListFiles="将文件添加到 '%1'" Basic.PropertiesWindow.AddEditableListFiles="将文件添加到 '%1'"
Basic.PropertiesWindow.AddEditableListEntry="将条目添加到 '%1'" Basic.PropertiesWindow.AddEditableListEntry="将条目添加到 '%1'"
Basic.PropertiesWindow.EditEditableListEntry="编辑条目从 '%1'" Basic.PropertiesWindow.EditEditableListEntry="编辑条目从 '%1'"
@ -250,7 +259,9 @@ Basic.Main.Connecting="连接中..."
Basic.Main.StartRecording="开始录制" Basic.Main.StartRecording="开始录制"
Basic.Main.StartStreaming="开始串流" Basic.Main.StartStreaming="开始串流"
Basic.Main.StopRecording="停止录制" Basic.Main.StopRecording="停止录制"
Basic.Main.StoppingRecording="停止录制..."
Basic.Main.StopStreaming="停止串流" Basic.Main.StopStreaming="停止串流"
Basic.Main.StoppingStreaming="停止推流..."
Basic.Main.ForceStopStreaming="停止流 (放弃延迟)" Basic.Main.ForceStopStreaming="停止流 (放弃延迟)"
Basic.MainMenu.File="& 文件" Basic.MainMenu.File="& 文件"
@ -287,6 +298,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="移至顶部"
Basic.MainMenu.Edit.Order.MoveToBottom="移至底部" Basic.MainMenu.Edit.Order.MoveToBottom="移至底部"
Basic.MainMenu.Edit.AdvAudio="&高级音频属性" Basic.MainMenu.Edit.AdvAudio="&高级音频属性"
Basic.MainMenu.View="查看(&V)"
Basic.MainMenu.View.Toolbars="工具栏(&T)"
Basic.MainMenu.View.Toolbars.Listboxes="列表框(&L)"
Basic.MainMenu.View.SceneTransitions="场景过渡(&C)"
Basic.MainMenu.View.StatusBar="状态栏(&S)"
Basic.MainMenu.SceneCollection="&场景集合" Basic.MainMenu.SceneCollection="&场景集合"
Basic.MainMenu.Profile="&档案" Basic.MainMenu.Profile="&档案"
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="主题"
Basic.Settings.General.Language="语言" Basic.Settings.General.Language="语言"
Basic.Settings.General.WarnBeforeStartingStream="启动流时显示确认对话框" Basic.Settings.General.WarnBeforeStartingStream="启动流时显示确认对话框"
Basic.Settings.General.WarnBeforeStoppingStream="停止流时显示确认对话框" Basic.Settings.General.WarnBeforeStoppingStream="停止流时显示确认对话框"
Basic.Settings.General.HideProjectorCursor="隐藏投影仪上的光标"
Basic.Settings.General.Snapping="源对齐方式" Basic.Settings.General.Snapping="源对齐方式"
Basic.Settings.General.ScreenSnapping="对齐源到屏幕边缘" Basic.Settings.General.ScreenSnapping="对齐源到屏幕边缘"
Basic.Settings.General.CenterSnapping="水平和垂直居中对齐源" Basic.Settings.General.CenterSnapping="水平和垂直居中对齐源"
Basic.Settings.General.SourceSnapping="对齐源跟其他的源" Basic.Settings.General.SourceSnapping="对齐源跟其他的源"
Basic.Settings.General.SnapDistance="对齐的敏感性" Basic.Settings.General.SnapDistance="对齐的敏感性"
Basic.Settings.General.RecordWhenStreaming="当推流时自动录像"
Basic.Settings.General.KeepRecordingWhenStreamStops="当推流停止时保持录像"
Basic.Settings.Stream="串流" Basic.Settings.Stream="串流"
Basic.Settings.Stream.StreamType="串流类型" Basic.Settings.Stream.StreamType="串流类型"
@ -431,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="按住讲话延时"
Basic.Settings.Audio.UnknownAudioDevice="[设备未连接或不可用]" Basic.Settings.Audio.UnknownAudioDevice="[设备未连接或不可用]"
Basic.Settings.Advanced="高级" Basic.Settings.Advanced="高级"
Basic.Settings.Advanced.General.ProcessPriority="进程优先级"
Basic.Settings.Advanced.General.ProcessPriority.High="高"
Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="高于正常"
Basic.Settings.Advanced.General.ProcessPriority.Normal="常规"
Basic.Settings.Advanced.General.ProcessPriority.Idle="空闲"
Basic.Settings.Advanced.FormatWarning="警告: NV12 之外的颜色格式主要用于录像, 并不推荐在流式传输时使用. 流可能导致更多的 CPU 使用率, 因为需要颜色格式转换." Basic.Settings.Advanced.FormatWarning="警告: NV12 之外的颜色格式主要用于录像, 并不推荐在流式传输时使用. 流可能导致更多的 CPU 使用率, 因为需要颜色格式转换."
Basic.Settings.Advanced.Audio.BufferingTime="音频缓冲时间" Basic.Settings.Advanced.Audio.BufferingTime="音频缓冲时间"
Basic.Settings.Advanced.Video.ColorFormat="颜色格式" Basic.Settings.Advanced.Video.ColorFormat="颜色格式"

View file

@ -20,10 +20,10 @@ Properties="屬性"
MoveUp="向上移動" MoveUp="向上移動"
MoveDown="向下移動" MoveDown="向下移動"
Settings="設定" Settings="設定"
Display="顯示器" Display="螢幕"
Name="名稱" Name="名稱"
Exit="離開" Exit="離開"
Mixer="混器" Mixer="混器"
Browse="瀏覽" Browse="瀏覽"
Mono="單聲道" Mono="單聲道"
Stereo="立體聲" Stereo="立體聲"
@ -40,7 +40,7 @@ New="新增"
Duplicate="複製" Duplicate="複製"
Enable="啟用" Enable="啟用"
DisableOSXVSync="關閉OSX垂直同步" DisableOSXVSync="關閉OSX垂直同步"
ResetOSXVSyncOnExit="離開時重OSX垂直同步" ResetOSXVSyncOnExit="離開時重OSX垂直同步"
HighResourceUsage="編碼過載!考慮降低影像設定或使用更快的編碼預設。" HighResourceUsage="編碼過載!考慮降低影像設定或使用更快的編碼預設。"
Transition="轉場" Transition="轉場"
QuickTransitions="快速轉場" QuickTransitions="快速轉場"
@ -57,15 +57,15 @@ QuickTransitions.EditProperties="複製來源"
QuickTransitions.EditPropertiesTT="在修改同樣的場景時,讓修改影像來源的屬性時不需要修改輸出。\n這只能在'複製場景'被啟動時使用。\n某些來源 (如擷取或是媒體來源) 並不支援此功能且無法被單獨修改。\n變更這個值將會 (如果還存在的話) 重置目前的輸出場景。\n\n警告由於來源會被複製這功能可能會使用額外的系統或是影像資源。" QuickTransitions.EditPropertiesTT="在修改同樣的場景時,讓修改影像來源的屬性時不需要修改輸出。\n這只能在'複製場景'被啟動時使用。\n某些來源 (如擷取或是媒體來源) 並不支援此功能且無法被單獨修改。\n變更這個值將會 (如果還存在的話) 重置目前的輸出場景。\n\n警告由於來源會被複製這功能可能會使用額外的系統或是影像資源。"
QuickTransitions.HotkeyName="快速轉場:%1" QuickTransitions.HotkeyName="快速轉場:%1"
Basic.AddTransition="添加設置轉換動畫" Basic.AddTransition="添加設置轉換"
Basic.RemoveTransition="移除設置轉換動畫" Basic.RemoveTransition="移除可選的轉場特效"
Basic.TransitionProperties="轉換動畫屬性" Basic.TransitionProperties="轉場特效屬性"
Basic.SceneTransitions="轉場特效" Basic.SceneTransitions="轉場特效"
Basic.TransitionDuration="持續時間" Basic.TransitionDuration="持續時間"
Basic.TogglePreviewProgramMode="工作室模式" Basic.TogglePreviewProgramMode="工作室模式"
TransitionNameDlg.Text="請輸入轉換動畫名稱" TransitionNameDlg.Text="請輸入轉場特效名稱"
TransitionNameDlg.Title="轉換動畫名稱" TransitionNameDlg.Title="轉場特效名稱"
TitleBar.Profile="設定檔" TitleBar.Profile="設定檔"
TitleBar.Scenes="場景" TitleBar.Scenes="場景"
@ -87,6 +87,7 @@ ConfirmExit.Text="正在使用 OBS所有的串流/錄製都將被關閉。您
ConfirmRemove.Title="確認刪除?" ConfirmRemove.Title="確認刪除?"
ConfirmRemove.Text="您確定要刪除「$1」" ConfirmRemove.Text="您確定要刪除「$1」"
ConfirmRemove.TextMultiple="您確定要移除這%1個項目嘛"
Output.ConnectFail.Title="連線失敗" Output.ConnectFail.Title="連線失敗"
Output.ConnectFail.BadPath="無效的路徑或 URL。 請確認您的設定是正確的。" Output.ConnectFail.BadPath="無效的路徑或 URL。 請確認您的設定是正確的。"
@ -118,6 +119,7 @@ LicenseAgreement.Exit="離開"
Remux.SourceFile="OBS 錄影" Remux.SourceFile="OBS 錄影"
Remux.TargetFile="目標檔案" Remux.TargetFile="目標檔案"
Remux.Remux="重新封裝" Remux.Remux="重新封裝"
Remux.OBSRecording="OBS錄影"
Remux.FinishedTitle="重新封裝完成" Remux.FinishedTitle="重新封裝完成"
Remux.Finished="錄影已被重新封裝" Remux.Finished="錄影已被重新封裝"
Remux.FinishedError="錄影已被重新封裝,但檔案可能不完整" Remux.FinishedError="錄影已被重新封裝,但檔案可能不完整"
@ -143,6 +145,12 @@ Basic.DisplayCapture="截取螢幕"
Basic.Main.PreviewConextMenu.Enable="啟用預覽" Basic.Main.PreviewConextMenu.Enable="啟用預覽"
ScaleFiltering="縮放濾鏡"
ScaleFiltering.Point="點"
ScaleFiltering.Bilinear="雙線性插值"
ScaleFiltering.Bicubic="雙三次插值"
ScaleFiltering.Lanczos="Lanczos"
Deinterlacing="去交錯" Deinterlacing="去交錯"
Deinterlacing.Discard="捨棄" Deinterlacing.Discard="捨棄"
Deinterlacing.Retro="復古" Deinterlacing.Retro="復古"
@ -152,6 +160,8 @@ Deinterlacing.Linear="線性"
Deinterlacing.Linear2x="線性 2x" Deinterlacing.Linear2x="線性 2x"
Deinterlacing.Yadif="Yadif" Deinterlacing.Yadif="Yadif"
Deinterlacing.Yadif2x="Yadif 2x" Deinterlacing.Yadif2x="Yadif 2x"
Deinterlacing.TopFieldFirst="由偶數場開始"
Deinterlacing.BottomFieldFirst="由奇數場開始"
Basic.Main.AddSceneDlg.Title="新增場景" Basic.Main.AddSceneDlg.Title="新增場景"
Basic.Main.AddSceneDlg.Text="請輸入場景名稱" Basic.Main.AddSceneDlg.Text="請輸入場景名稱"
@ -183,12 +193,14 @@ Basic.PropertiesWindow.ConfirmTitle="設定值已變更"
Basic.PropertiesWindow.Confirm="有尚未儲存的變更。要保存他們嗎?" Basic.PropertiesWindow.Confirm="有尚未儲存的變更。要保存他們嗎?"
Basic.PropertiesWindow.NoProperties="無可用的屬性" Basic.PropertiesWindow.NoProperties="無可用的屬性"
Basic.PropertiesWindow.AddFiles="新增檔案" Basic.PropertiesWindow.AddFiles="新增檔案"
Basic.PropertiesWindow.AddDir="新增目錄"
Basic.PropertiesWindow.AddURL="新增路徑URL" Basic.PropertiesWindow.AddURL="新增路徑URL"
Basic.PropertiesWindow.AddEditableListDir="將目錄新增至「%1」"
Basic.PropertiesWindow.AddEditableListFiles="將檔案新增至「%1」" Basic.PropertiesWindow.AddEditableListFiles="將檔案新增至「%1」"
Basic.PropertiesWindow.AddEditableListEntry="將項目新增至「%1」" Basic.PropertiesWindow.AddEditableListEntry="將項目新增至「%1」"
Basic.PropertiesWindow.EditEditableListEntry="編輯「%1」的項目" Basic.PropertiesWindow.EditEditableListEntry="編輯「%1」的項目"
Basic.PropertiesView.FPS.Simple="簡單的 FPS 值" Basic.PropertiesView.FPS.Simple="常用 FPS 值"
Basic.PropertiesView.FPS.Rational="有理數 FPS 值" Basic.PropertiesView.FPS.Rational="有理數 FPS 值"
Basic.PropertiesView.FPS.ValidFPSRanges="FPS 的有效範圍:" Basic.PropertiesView.FPS.ValidFPSRanges="FPS 的有效範圍:"
@ -214,23 +226,23 @@ Basic.TransformWindow="場景物件變型"
Basic.TransformWindow.Position="位置" Basic.TransformWindow.Position="位置"
Basic.TransformWindow.Rotation="旋轉" Basic.TransformWindow.Rotation="旋轉"
Basic.TransformWindow.Size="大小" Basic.TransformWindow.Size="大小"
Basic.TransformWindow.Alignment="位置原點" Basic.TransformWindow.Alignment="對齊基準"
Basic.TransformWindow.BoundsType="框類型" Basic.TransformWindow.BoundsType="框類型"
Basic.TransformWindow.BoundsAlignment="對齊外框" Basic.TransformWindow.BoundsAlignment="邊框內對齊"
Basic.TransformWindow.Bounds="框大小" Basic.TransformWindow.Bounds="框大小"
Basic.TransformWindow.Crop="剪裁" Basic.TransformWindow.Crop="剪裁"
Basic.TransformWindow.Alignment.TopLeft="上角" Basic.TransformWindow.Alignment.TopLeft="置頂靠左"
Basic.TransformWindow.Alignment.TopCenter="水平靠上" Basic.TransformWindow.Alignment.TopCenter="置頂居中"
Basic.TransformWindow.Alignment.TopRight="上角" Basic.TransformWindow.Alignment.TopRight="置頂靠右"
Basic.TransformWindow.Alignment.CenterLeft="垂直靠左" Basic.TransformWindow.Alignment.CenterLeft="靠左居中"
Basic.TransformWindow.Alignment.Center="正中心" Basic.TransformWindow.Alignment.Center="置中"
Basic.TransformWindow.Alignment.CenterRight="垂直靠右" Basic.TransformWindow.Alignment.CenterRight="靠右居中"
Basic.TransformWindow.Alignment.BottomLeft="下角" Basic.TransformWindow.Alignment.BottomLeft="置底靠左"
Basic.TransformWindow.Alignment.BottomCenter="水平靠下" Basic.TransformWindow.Alignment.BottomCenter="置底居中"
Basic.TransformWindow.Alignment.BottomRight="下角" Basic.TransformWindow.Alignment.BottomRight="置底靠右"
Basic.TransformWindow.BoundsType.None="無框" Basic.TransformWindow.BoundsType.None="無框"
Basic.TransformWindow.BoundsType.MaxOnly="等比例縮放至框內,不超過原始大小" Basic.TransformWindow.BoundsType.MaxOnly="等比例縮放至框內,不超過原始大小"
Basic.TransformWindow.BoundsType.ScaleInner="等比例縮放至框內" Basic.TransformWindow.BoundsType.ScaleInner="等比例縮放至框內"
Basic.TransformWindow.BoundsType.ScaleOuter="等比例縮放至框外" Basic.TransformWindow.BoundsType.ScaleOuter="等比例縮放至框外"
@ -247,7 +259,9 @@ Basic.Main.Connecting="連線中……"
Basic.Main.StartRecording="開始錄製" Basic.Main.StartRecording="開始錄製"
Basic.Main.StartStreaming="開始串流" Basic.Main.StartStreaming="開始串流"
Basic.Main.StopRecording="停止錄製" Basic.Main.StopRecording="停止錄製"
Basic.Main.StoppingRecording="停止錄製..."
Basic.Main.StopStreaming="停止串流" Basic.Main.StopStreaming="停止串流"
Basic.Main.StoppingStreaming="停止串流..."
Basic.Main.ForceStopStreaming="停止實況(丟棄延遲)" Basic.Main.ForceStopStreaming="停止實況(丟棄延遲)"
Basic.MainMenu.File="檔案 (&F)" Basic.MainMenu.File="檔案 (&F)"
@ -274,9 +288,9 @@ Basic.MainMenu.Edit.Transform.Rotate90CCW="逆時針旋轉 90°"
Basic.MainMenu.Edit.Transform.Rotate180="旋轉 180°" Basic.MainMenu.Edit.Transform.Rotate180="旋轉 180°"
Basic.MainMenu.Edit.Transform.FlipHorizontal="水平翻轉 (&H)" Basic.MainMenu.Edit.Transform.FlipHorizontal="水平翻轉 (&H)"
Basic.MainMenu.Edit.Transform.FlipVertical="垂直翻轉 (&V)" Basic.MainMenu.Edit.Transform.FlipVertical="垂直翻轉 (&V)"
Basic.MainMenu.Edit.Transform.FitToScreen="適合螢幕 (&F)" Basic.MainMenu.Edit.Transform.FitToScreen="縮放到螢幕大小,不改變比例 (&F)"
Basic.MainMenu.Edit.Transform.StretchToScreen="拉伸到螢幕 (&S)" Basic.MainMenu.Edit.Transform.StretchToScreen="拉伸到螢幕大小 (&S)"
Basic.MainMenu.Edit.Transform.CenterToScreen="垂直至中畫面 (&C)" Basic.MainMenu.Edit.Transform.CenterToScreen="中畫面 (&C)"
Basic.MainMenu.Edit.Order="排序 (&O)" Basic.MainMenu.Edit.Order="排序 (&O)"
Basic.MainMenu.Edit.Order.MoveUp="向上移動 (&U)" Basic.MainMenu.Edit.Order.MoveUp="向上移動 (&U)"
Basic.MainMenu.Edit.Order.MoveDown="向下移動 (&D)" Basic.MainMenu.Edit.Order.MoveDown="向下移動 (&D)"
@ -284,6 +298,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="移至最上層 (&T)"
Basic.MainMenu.Edit.Order.MoveToBottom="移至最下層 (&B)" Basic.MainMenu.Edit.Order.MoveToBottom="移至最下層 (&B)"
Basic.MainMenu.Edit.AdvAudio="進階音訊屬性(&A)" Basic.MainMenu.Edit.AdvAudio="進階音訊屬性(&A)"
Basic.MainMenu.View="檢視(&V)"
Basic.MainMenu.View.Toolbars="工具列(&T)"
Basic.MainMenu.View.Toolbars.Listboxes="列表控制項(&L)"
Basic.MainMenu.View.SceneTransitions="轉場特效(&c)"
Basic.MainMenu.View.StatusBar="狀態列(&S)"
Basic.MainMenu.SceneCollection="場景群組 (&S)" Basic.MainMenu.SceneCollection="場景群組 (&S)"
Basic.MainMenu.Profile="設定檔 (&P)" Basic.MainMenu.Profile="設定檔 (&P)"
@ -305,6 +325,14 @@ Basic.Settings.General.Theme="佈景主題"
Basic.Settings.General.Language="語言" Basic.Settings.General.Language="語言"
Basic.Settings.General.WarnBeforeStartingStream="啟動串流時顯示確認對話框" Basic.Settings.General.WarnBeforeStartingStream="啟動串流時顯示確認對話框"
Basic.Settings.General.WarnBeforeStoppingStream="停止串流時顯示確認對話框" Basic.Settings.General.WarnBeforeStoppingStream="停止串流時顯示確認對話框"
Basic.Settings.General.HideProjectorCursor="當游標在投影上時隱藏游標"
Basic.Settings.General.Snapping="貼齊對準來源"
Basic.Settings.General.ScreenSnapping="來源與螢幕邊緣貼齊"
Basic.Settings.General.CenterSnapping="來源與水平中央以及垂直中央貼齊"
Basic.Settings.General.SourceSnapping="來源與其他來源貼齊"
Basic.Settings.General.SnapDistance="貼齊敏感度"
Basic.Settings.General.RecordWhenStreaming="串流時自動錄製"
Basic.Settings.General.KeepRecordingWhenStreamStops="串流停止時繼續錄製"
Basic.Settings.Stream="串流" Basic.Settings.Stream="串流"
Basic.Settings.Stream.StreamType="串流類型" Basic.Settings.Stream.StreamType="串流類型"
@ -314,30 +342,30 @@ Basic.Settings.Output.Format="錄影格式"
Basic.Settings.Output.Encoder="編碼器" Basic.Settings.Output.Encoder="編碼器"
Basic.Settings.Output.SelectDirectory="選擇錄影資料夾" Basic.Settings.Output.SelectDirectory="選擇錄影資料夾"
Basic.Settings.Output.SelectFile="選擇錄影檔案" Basic.Settings.Output.SelectFile="選擇錄影檔案"
Basic.Settings.Output.EnforceBitrate="強制設定實況流量上限" Basic.Settings.Output.EnforceBitrate="強制設定串流位元率上限"
Basic.Settings.Output.Mode="輸出模式" Basic.Settings.Output.Mode="輸出模式"
Basic.Settings.Output.Mode.Simple="簡易" Basic.Settings.Output.Mode.Simple="簡易"
Basic.Settings.Output.Mode.Adv="進階" Basic.Settings.Output.Mode.Adv="進階"
Basic.Settings.Output.Mode.FFmpeg="FFmpeg 輸出" Basic.Settings.Output.Mode.FFmpeg="FFmpeg 輸出"
Basic.Settings.Output.Simple.SavePath="錄影路徑" Basic.Settings.Output.Simple.SavePath="錄影路徑"
Basic.Settings.Output.Simple.RecordingQuality="錄影畫質" Basic.Settings.Output.Simple.RecordingQuality="錄影畫質"
Basic.Settings.Output.Simple.RecordingQuality.Stream="與實況同等畫質" Basic.Settings.Output.Simple.RecordingQuality.Stream="與串流同等畫質"
Basic.Settings.Output.Simple.RecordingQuality.Small="高畫質,檔案大小中等" Basic.Settings.Output.Simple.RecordingQuality.Small="高畫質,檔案大小中等"
Basic.Settings.Output.Simple.RecordingQuality.HQ="近乎無損畫質,檔案大小巨大" Basic.Settings.Output.Simple.RecordingQuality.HQ="近乎無損畫質,檔案大小巨大"
Basic.Settings.Output.Simple.RecordingQuality.Lossless="無損畫質,非常大的檔案" Basic.Settings.Output.Simple.RecordingQuality.Lossless="無損畫質,非常大的檔案"
Basic.Settings.Output.Simple.Warn.VideoBitrate="警告:實況影像流量將會被設為 %1他是目前實況流量的上限。如果您確定想要超過 %1 的限制,請開啟進階編碼器選項,並取消「強制設定實況流量上限」。" Basic.Settings.Output.Simple.Warn.VideoBitrate="警告:串流影像位元率將會被設為 %1他是目前串流位元率的上限。如果您確定想要超過 %1 的限制,請開啟進階編碼器選項,並取消「強制設定串流位元率上限」。"
Basic.Settings.Output.Simple.Warn.AudioBitrate="警告:實況音訊流量將會被設為 %1他是目前實況流量的上限。如果您確定想要超過 %1 的限制,請開啟進階編碼器選項,並取消「強制設定實況流量上限」。" Basic.Settings.Output.Simple.Warn.AudioBitrate="警告:實況串流位元率將會被設為 %1他是目前串流位元率的上限。如果您確定想要超過 %1 的限制,請開啟進階編碼器選項,並取消「強制設定串流位元率上限」。"
Basic.Settings.Output.Simple.Warn.Encoder="警告:如果錄影與實況同時運作,並使用與實況不同的編碼品質設定將會增加額外的CPU使用量" Basic.Settings.Output.Simple.Warn.Encoder="警告:如果錄影與串流同時運作,並使用與串流不同的編碼品質設定將會增加額外的CPU使用量"
Basic.Settings.Output.Simple.Warn.Lossless="警告:無損畫質將會產生大容量的暫存檔!無損畫質在高解析度或高幀率時,可能會每分鐘使用高達 7GBgigabytes的容量。除非您擁有海量的硬碟空間,否則不建議使用無損畫質錄製長時間的影片。" Basic.Settings.Output.Simple.Warn.Lossless="警告:無損畫質將會產生非常大的檔案!無損畫質在高解析度或高影格率時,可能會每分鐘使用高達 7GBgigabytes的容量。除非您擁有非常大量的硬碟空間,否則不建議使用無損畫質錄製長時間的影片。"
Basic.Settings.Output.Simple.Warn.Lossless.Msg="你確定你想要使用無損畫質?" Basic.Settings.Output.Simple.Warn.Lossless.Msg="你確定你想要使用無損畫質?"
Basic.Settings.Output.Simple.Warn.Lossless.Title="無損畫質警告!" Basic.Settings.Output.Simple.Warn.Lossless.Title="無損畫質警告!"
Basic.Settings.Output.Simple.Warn.MultipleQSV="警告 在同一時間串流和錄像,您不能使用多個單獨的 QSV 編碼器。 如果你想要在同一時間串流和錄像,請更改錄像編碼器或串流編碼器。" Basic.Settings.Output.Simple.Warn.MultipleQSV="警告︰同時串流和錄影時,不能使用多個不同的 QSV 編碼器。如果你想要在同一時間串流和錄影,請更改錄影編碼器或串流編碼器。"
Basic.Settings.Output.Simple.Encoder.Software="軟體編碼( x264 " Basic.Settings.Output.Simple.Encoder.Software="軟體編碼( x264 "
Basic.Settings.Output.Simple.Encoder.Hardware.QSV="硬體 (QSV)" Basic.Settings.Output.Simple.Encoder.Hardware.QSV="硬體編碼 (QSV)"
Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="硬體 (NVENC)" Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="硬體編碼 (NVENC)"
Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="軟體編碼( x264 預設低 CPU 使用率,將增加檔案容量 " Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="軟體編碼( x264 預設低 CPU 使用率,將增加檔案容量 "
Basic.Settings.Output.VideoBitrate="影像kbit/s" Basic.Settings.Output.VideoBitrate="影像位元kbit/s"
Basic.Settings.Output.AudioBitrate="音效kbit/s" Basic.Settings.Output.AudioBitrate="音效位元kbit/s"
Basic.Settings.Output.Reconnect="自動重新連線" Basic.Settings.Output.Reconnect="自動重新連線"
Basic.Settings.Output.RetryDelay="重試間隔(秒)" Basic.Settings.Output.RetryDelay="重試間隔(秒)"
Basic.Settings.Output.MaxRetries="最大嘗試次數" Basic.Settings.Output.MaxRetries="最大嘗試次數"
@ -385,6 +413,7 @@ Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="Muxer 設定(如果有才啟
FilenameFormatting.completer="%CCYY-%MM-%DD %hh-%mm-%ss\n%YY-%MM-%DD %hh-%mm-%ss\n%Y-%m-%d %H-%M-%S\n%y-%m-%d %H-%M-%S\n%a %Y-%m-%d %H-%M-%S\n%A %Y-%m-%d %H-%M-%S\n%Y-%b-%d %H-%M-%S\n%Y-%B-%d %H-%M-%S\n%Y-%m-%d %I-%M-%S-%p\n%Y-%m-%d %H-%M-%S-%z\n%Y-%m-%d %H-%M-%S-%Z" FilenameFormatting.completer="%CCYY-%MM-%DD %hh-%mm-%ss\n%YY-%MM-%DD %hh-%mm-%ss\n%Y-%m-%d %H-%M-%S\n%y-%m-%d %H-%M-%S\n%a %Y-%m-%d %H-%M-%S\n%A %Y-%m-%d %H-%M-%S\n%Y-%b-%d %H-%M-%S\n%Y-%B-%d %H-%M-%S\n%Y-%m-%d %I-%M-%S-%p\n%Y-%m-%d %H-%M-%S-%z\n%Y-%m-%d %H-%M-%S-%Z"
FilenameFormatting.TT="%CCYY 年, 四位數\n%YY 年, 末兩位數 (00-99)\n%MM 月(01-12)\n%DD 日(01-31)\n%hh 時(24小時格式, 00-23)\n%mm 分(00-59)\n%ss 秒(00-61)\n%% %符號\n%a 星期, 縮寫\n%A 星期\n%b 月, 縮寫\n%B 月\n%d 日(01-31)\n%H 時(24小時格式, 00-23)\n%I 時(12小時格式, 01-12)\n%m 月(01-12)\n%M 分(00-59)\n%p AM或PM\n%S 秒(00-61)\n%y 年, 末兩位數 (00-99)\n%Y 年\n%z 與UTC時區的時差(ISO 8601格式)或\n 時區名或時區縮寫\n%Z 時區名或縮寫\n"
Basic.Settings.Video="影像" Basic.Settings.Video="影像"
Basic.Settings.Video.Adapter="顯示卡:" Basic.Settings.Video.Adapter="顯示卡:"
@ -392,11 +421,11 @@ Basic.Settings.Video.BaseResolution="來源(全畫面)解析度:"
Basic.Settings.Video.ScaledResolution="輸出(縮放)解析度:" Basic.Settings.Video.ScaledResolution="輸出(縮放)解析度:"
Basic.Settings.Video.DownscaleFilter="壓縮方式:" Basic.Settings.Video.DownscaleFilter="壓縮方式:"
Basic.Settings.Video.DisableAeroWindows="暫時關閉 Aero 特效(僅限 Windows" Basic.Settings.Video.DisableAeroWindows="暫時關閉 Aero 特效(僅限 Windows"
Basic.Settings.Video.FPS="FPS(幀率)" Basic.Settings.Video.FPS="FPS (影格率)"
Basic.Settings.Video.FPSCommon="常用 FPS" Basic.Settings.Video.FPSCommon="常用 FPS"
Basic.Settings.Video.FPSInteger="自訂 FPS" Basic.Settings.Video.FPSInteger="自訂 FPS"
Basic.Settings.Video.FPSFraction="自訂 FPS 比率:" Basic.Settings.Video.FPSFraction="自訂 FPS 比率:"
Basic.Settings.Video.Numerator="數(分子):" Basic.Settings.Video.Numerator="影格數(分子):"
Basic.Settings.Video.Denominator="秒數(分母):" Basic.Settings.Video.Denominator="秒數(分母):"
Basic.Settings.Video.Renderer="渲染器:" Basic.Settings.Video.Renderer="渲染器:"
Basic.Settings.Video.InvalidResolution="無效的解析度。 必須表達為 [寬]x[高] (例如1920x1080)" Basic.Settings.Video.InvalidResolution="無效的解析度。 必須表達為 [寬]x[高] (例如1920x1080)"
@ -422,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="按壓時說話 延遲"
Basic.Settings.Audio.UnknownAudioDevice="[設備未連接或不可用]" Basic.Settings.Audio.UnknownAudioDevice="[設備未連接或不可用]"
Basic.Settings.Advanced="進階" Basic.Settings.Advanced="進階"
Basic.Settings.Advanced.General.ProcessPriority="程序優先順序"
Basic.Settings.Advanced.General.ProcessPriority.High="高"
Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="在標準以上"
Basic.Settings.Advanced.General.ProcessPriority.Normal="標準"
Basic.Settings.Advanced.General.ProcessPriority.Idle="閒置"
Basic.Settings.Advanced.FormatWarning="警告: NV12以外的色彩格式主要用於錄影並不推薦在串流時使用。串流時可能會因需要轉換色彩格式而增加CPU使用率。" Basic.Settings.Advanced.FormatWarning="警告: NV12以外的色彩格式主要用於錄影並不推薦在串流時使用。串流時可能會因需要轉換色彩格式而增加CPU使用率。"
Basic.Settings.Advanced.Audio.BufferingTime="音訊緩衝時間" Basic.Settings.Advanced.Audio.BufferingTime="音訊緩衝時間"
Basic.Settings.Advanced.Video.ColorFormat="色彩格式" Basic.Settings.Advanced.Video.ColorFormat="色彩格式"
@ -472,25 +506,25 @@ Hotkeys.Windows="Windows"
Hotkeys.Super="超級" Hotkeys.Super="超級"
Hotkeys.Menu="選單" Hotkeys.Menu="選單"
Hotkeys.Space="空格" Hotkeys.Space="空格"
Hotkeys.NumpadNum="數字鍵盤 %1" Hotkeys.NumpadNum="九宮鍵 %1"
Hotkeys.NumpadMultiply="數字鍵 乘號" Hotkeys.NumpadMultiply="九宮鍵 乘號"
Hotkeys.NumpadDivide="數字鍵 除號" Hotkeys.NumpadDivide="九宮鍵 除號"
Hotkeys.NumpadAdd="數字鍵 加號" Hotkeys.NumpadAdd="九宮鍵 加號"
Hotkeys.NumpadSubtract="數字鍵 減號" Hotkeys.NumpadSubtract="九宮鍵 減號"
Hotkeys.NumpadDecimal="數字鍵 十進位" Hotkeys.NumpadDecimal="九宮鍵 十進位"
Hotkeys.AppleKeypadNum="%1 (九宮鍵)" Hotkeys.AppleKeypadNum="%1 (九宮鍵)"
Hotkeys.AppleKeypadMultiply="* (九宮鍵)" Hotkeys.AppleKeypadMultiply="* (九宮鍵)"
Hotkeys.AppleKeypadDivide="/ (九宮鍵)" Hotkeys.AppleKeypadDivide="/ (九宮鍵)"
Hotkeys.AppleKeypadAdd="+ ()" Hotkeys.AppleKeypadAdd="+ (九宮鍵)"
Hotkeys.AppleKeypadSubtract="+ ()" Hotkeys.AppleKeypadSubtract="+ (九宮鍵)"
Hotkeys.AppleKeypadDecimal=". ()" Hotkeys.AppleKeypadDecimal=". (九宮鍵)"
Hotkeys.AppleKeypadEqual="+ ()" Hotkeys.AppleKeypadEqual="+ (九宮鍵)"
Hotkeys.MouseButton="滑鼠 %1" Hotkeys.MouseButton="滑鼠 %1"
Mute="靜音" Mute="靜音"
Unmute="取消靜音" Unmute="取消靜音"
Push-to-mute="按壓時靜音" Push-to-mute="按壓時靜音"
Push-to-talk="點擊即說" Push-to-talk="按壓時說話"
SceneItemShow="顯示 「%1」" SceneItemShow="顯示 「%1」"
SceneItemHide="隱藏 「%1」" SceneItemHide="隱藏 「%1」"

View file

@ -7,7 +7,7 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>957</width> <width>1110</width>
<height>724</height> <height>724</height>
</rect> </rect>
</property> </property>
@ -575,11 +575,31 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="3">
<widget class="QLabel" name="sceneTransitionsLabel">
<property name="text">
<string>Basic.SceneTransitions</string>
</property>
</widget>
</item>
<item row="1" column="3"> <item row="1" column="3">
<widget class="QWidget" name="transitionsContainer" native="true">
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing"> <property name="spacing">
<number>4</number> <number>4</number>
</property> </property>
<property name="leftMargin">
<number>1</number>
</property>
<property name="topMargin">
<number>1</number>
</property>
<property name="rightMargin">
<number>1</number>
</property>
<property name="bottomMargin">
<number>2</number>
</property>
<item> <item>
<widget class="QComboBox" name="transitions"> <widget class="QComboBox" name="transitions">
<property name="minimumSize"> <property name="minimumSize">
@ -600,6 +620,9 @@
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
<width>40</width> <width>40</width>
@ -731,9 +754,6 @@
<property name="text"> <property name="text">
<string>Basic.TransitionDuration</string> <string>Basic.TransitionDuration</string>
</property> </property>
<property name="buddy">
<cstring>transitionDuration</cstring>
</property>
</widget> </widget>
</item> </item>
<item> <item>
@ -771,12 +791,6 @@
</spacer> </spacer>
</item> </item>
</layout> </layout>
</item>
<item row="0" column="3">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Basic.SceneTransitions</string>
</property>
</widget> </widget>
</item> </item>
</layout> </layout>
@ -790,7 +804,7 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>957</width> <width>1110</width>
<height>21</height> <height>21</height>
</rect> </rect>
</property> </property>
@ -861,6 +875,7 @@
</widget> </widget>
<addaction name="transformMenu"/> <addaction name="transformMenu"/>
<addaction name="orderMenu"/> <addaction name="orderMenu"/>
<addaction name="actionLockPreview"/>
<addaction name="separator"/> <addaction name="separator"/>
<addaction name="actionAdvAudioProperties"/> <addaction name="actionAdvAudioProperties"/>
</widget> </widget>
@ -884,8 +899,23 @@
<addaction name="actionRemoveSceneCollection"/> <addaction name="actionRemoveSceneCollection"/>
<addaction name="separator"/> <addaction name="separator"/>
</widget> </widget>
<widget class="QMenu" name="viewMenu">
<property name="title">
<string>Basic.MainMenu.View</string>
</property>
<widget class="QMenu" name="viewMenuToolbars">
<property name="title">
<string>Basic.MainMenu.View.Toolbars</string>
</property>
<addaction name="toggleListboxToolbars"/>
</widget>
<addaction name="viewMenuToolbars"/>
<addaction name="toggleSceneTransitions"/>
<addaction name="toggleStatusBar"/>
</widget>
<addaction name="menu_File"/> <addaction name="menu_File"/>
<addaction name="menuBasic_MainMenu_Edit"/> <addaction name="menuBasic_MainMenu_Edit"/>
<addaction name="viewMenu"/>
<addaction name="profileMenu"/> <addaction name="profileMenu"/>
<addaction name="sceneCollectionMenu"/> <addaction name="sceneCollectionMenu"/>
<addaction name="menuBasic_MainMenu_Help"/> <addaction name="menuBasic_MainMenu_Help"/>
@ -1248,6 +1278,47 @@
<string>Basic.MainMenu.AlwaysOnTop</string> <string>Basic.MainMenu.AlwaysOnTop</string>
</property> </property>
</action> </action>
<action name="toggleListboxToolbars">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="text">
<string>Basic.MainMenu.View.Toolbars.Listboxes</string>
</property>
</action>
<action name="toggleSceneTransitions">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="text">
<string>Basic.MainMenu.View.SceneTransitions</string>
</property>
</action>
<action name="toggleStatusBar">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="text">
<string>Basic.MainMenu.View.StatusBar</string>
</property>
</action>
<action name="actionLockPreview">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Basic.MainMenu.Edit.LockPreview</string>
</property>
</action>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget> <customwidget>

View file

@ -6,7 +6,7 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>896</width> <width>981</width>
<height>667</height> <height>667</height>
</rect> </rect>
</property> </property>
@ -185,14 +185,21 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="0" colspan="2"> <item row="6" column="1">
<widget class="QCheckBox" name="recordWhenStreaming">
<property name="text">
<string>Basic.Settings.General.RecordWhenStreaming</string>
</property>
</widget>
</item>
<item row="8" column="0" colspan="2">
<widget class="Line" name="line_4"> <widget class="Line" name="line_4">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="0" colspan="2"> <item row="9" column="0" colspan="2">
<widget class="QGroupBox" name="groupBox_10"> <widget class="QGroupBox" name="groupBox_10">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
@ -285,6 +292,23 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="5" column="1">
<widget class="QCheckBox" name="hideProjectorCursor">
<property name="text">
<string>Basic.Settings.General.HideProjectorCursor</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QCheckBox" name="keepRecordStreamStops">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Basic.Settings.General.KeepRecordingWhenStreamStops</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="streamPage"> <widget class="QWidget" name="streamPage">
@ -2497,8 +2521,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>80</width> <width>98</width>
<height>16</height> <height>28</height>
</rect> </rect>
</property> </property>
</widget> </widget>
@ -2862,9 +2886,9 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>-206</y>
<width>559</width> <width>803</width>
<height>563</height> <height>820</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_16"> <layout class="QVBoxLayout" name="verticalLayout_16">
@ -2883,6 +2907,28 @@
<item alignment="Qt::AlignTop"> <item alignment="Qt::AlignTop">
<widget class="QWidget" name="widget_11" native="true"> <widget class="QWidget" name="widget_11" native="true">
<layout class="QVBoxLayout" name="verticalLayout_17"> <layout class="QVBoxLayout" name="verticalLayout_17">
<item>
<widget class="QGroupBox" name="advancedGeneralGroupBox">
<property name="title">
<string>Basic.Settings.General</string>
</property>
<layout class="QFormLayout" name="formLayout_22">
<item row="0" column="0">
<widget class="QLabel" name="processPriorityLabel">
<property name="text">
<string>Basic.Settings.Advanced.General.ProcessPriority</string>
</property>
<property name="buddy">
<cstring>processPriority</cstring>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="processPriority"/>
</item>
</layout>
</widget>
</item>
<item> <item>
<widget class="QGroupBox" name="advancedVideoContainer"> <widget class="QGroupBox" name="advancedVideoContainer">
<property name="title"> <property name="title">
@ -3212,6 +3258,28 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item>
<widget class="QGroupBox" name="groupBox_11">
<property name="title">
<string>Basic.Settings.Advanced.Network</string>
</property>
<layout class="QFormLayout" name="formLayout_23">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<item row="0" column="1">
<widget class="QComboBox" name="bindToIP"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_27">
<property name="text">
<string>Basic.Settings.Advanced.Network.BindToIP</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item> <item>
<widget class="QLabel" name="advancedMsg"> <widget class="QLabel" name="advancedMsg">
<property name="styleSheet"> <property name="styleSheet">
@ -3292,8 +3360,8 @@
<slot>setCurrentIndex(int)</slot> <slot>setCurrentIndex(int)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>159</x> <x>310</x>
<y>34</y> <y>29</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>241</x> <x>241</x>
@ -3308,8 +3376,8 @@
<slot>setCurrentIndex(int)</slot> <slot>setCurrentIndex(int)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>586</x> <x>250</x>
<y>38</y> <y>39</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>250</x> <x>250</x>
@ -3324,12 +3392,12 @@
<slot>setVisible(bool)</slot> <slot>setVisible(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>875</x> <x>250</x>
<y>360</y> <y>39</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>875</x> <x>250</x>
<y>427</y> <y>39</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3340,12 +3408,12 @@
<slot>setVisible(bool)</slot> <slot>setVisible(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>875</x> <x>250</x>
<y>360</y> <y>39</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>466</x> <x>250</x>
<y>427</y> <y>39</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3356,12 +3424,12 @@
<slot>setVisible(bool)</slot> <slot>setVisible(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>875</x> <x>250</x>
<y>360</y> <y>39</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>875</x> <x>250</x>
<y>503</y> <y>39</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3372,12 +3440,12 @@
<slot>setVisible(bool)</slot> <slot>setVisible(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>875</x> <x>250</x>
<y>360</y> <y>39</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>466</x> <x>250</x>
<y>503</y> <y>39</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3388,12 +3456,12 @@
<slot>setCurrentIndex(int)</slot> <slot>setCurrentIndex(int)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>705</x> <x>259</x>
<y>144</y> <y>48</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>396</x> <x>241</x>
<y>245</y> <y>30</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3404,12 +3472,12 @@
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>514</x> <x>259</x>
<y>344</y> <y>60</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>748</x> <x>228</x>
<y>344</y> <y>50</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3420,12 +3488,12 @@
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>864</x> <x>259</x>
<y>141</y> <y>39</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>427</x> <x>228</x>
<y>178</y> <y>29</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3436,12 +3504,12 @@
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>864</x> <x>259</x>
<y>141</y> <y>60</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>864</x> <x>228</x>
<y>178</y> <y>50</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3452,12 +3520,12 @@
<slot>setCurrentIndex(int)</slot> <slot>setCurrentIndex(int)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>864</x> <x>259</x>
<y>141</y> <y>60</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>427</x> <x>259</x>
<y>215</y> <y>60</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3468,12 +3536,12 @@
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>864</x> <x>250</x>
<y>141</y> <y>39</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>864</x> <x>250</x>
<y>215</y> <y>39</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3484,12 +3552,12 @@
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>427</x> <x>250</x>
<y>355</y> <y>39</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>862</x> <x>250</x>
<y>355</y> <y>39</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3500,12 +3568,12 @@
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>424</x> <x>250</x>
<y>331</y> <y>39</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>658</x> <x>250</x>
<y>331</y> <y>39</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3516,12 +3584,12 @@
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>875</x> <x>250</x>
<y>254</y> <y>39</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>466</x> <x>250</x>
<y>291</y> <y>39</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3532,12 +3600,12 @@
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>516</x> <x>250</x>
<y>411</y> <y>39</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>250</x> <x>250</x>
<y>92</y> <y>39</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3548,12 +3616,12 @@
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>533</x> <x>250</x>
<y>273</y> <y>39</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>449</x> <x>250</x>
<y>301</y> <y>39</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3564,12 +3632,12 @@
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>690</x> <x>250</x>
<y>454</y> <y>39</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>690</x> <x>250</x>
<y>506</y> <y>39</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3580,12 +3648,12 @@
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>376</x> <x>720</x>
<y>196</y> <y>280</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>305</x> <x>346</x>
<y>224</y> <y>306</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3596,12 +3664,12 @@
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>417</x> <x>761</x>
<y>204</y> <y>280</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>434</x> <x>778</x>
<y>234</y> <y>306</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3612,12 +3680,12 @@
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>476</x> <x>820</x>
<y>202</y> <y>280</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>466</x> <x>810</x>
<y>253</y> <y>329</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3628,12 +3696,12 @@
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>518</x> <x>862</x>
<y>204</y> <y>280</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>515</x> <x>859</x>
<y>277</y> <y>352</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3644,12 +3712,12 @@
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>557</x> <x>866</x>
<y>207</y> <y>280</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>866</x> <x>866</x>
<y>306</y> <y>375</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -3660,12 +3728,28 @@
<slot>setVisible(bool)</slot> <slot>setVisible(bool)</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>484</x> <x>250</x>
<y>147</y> <y>39</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>483</x> <x>250</x>
<y>170</y> <y>39</y>
</hint>
</hints>
</connection>
<connection>
<sender>recordWhenStreaming</sender>
<signal>toggled(bool)</signal>
<receiver>keepRecordStreamStops</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>404</x>
<y>193</y>
</hint>
<hint type="destinationlabel">
<x>404</x>
<y>219</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>

View file

@ -20,7 +20,7 @@
<item> <item>
<layout class="QVBoxLayout" name="verticalLayout_2"> <layout class="QVBoxLayout" name="verticalLayout_2">
<item> <item>
<widget class="QRadioButton" name="radioButton"> <widget class="QRadioButton" name="createNew">
<property name="text"> <property name="text">
<string>Basic.SourceSelect.CreateNew</string> <string>Basic.SourceSelect.CreateNew</string>
</property> </property>
@ -73,7 +73,7 @@
<resources/> <resources/>
<connections> <connections>
<connection> <connection>
<sender>radioButton</sender> <sender>createNew</sender>
<signal>toggled(bool)</signal> <signal>toggled(bool)</signal>
<receiver>sourceName</receiver> <receiver>sourceName</receiver>
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>

View file

@ -328,6 +328,8 @@ bool OBSApp::InitGlobalConfigDefaults()
config_set_default_string(globalConfig, "General", "Language", config_set_default_string(globalConfig, "General", "Language",
DEFAULT_LANG); DEFAULT_LANG);
config_set_default_uint(globalConfig, "General", "MaxLogs", 10); config_set_default_uint(globalConfig, "General", "MaxLogs", 10);
config_set_default_string(globalConfig, "General", "ProcessPriority",
"Normal");
#if _WIN32 #if _WIN32
config_set_default_string(globalConfig, "Video", "Renderer", config_set_default_string(globalConfig, "Video", "Renderer",
@ -354,6 +356,16 @@ bool OBSApp::InitGlobalConfigDefaults()
"CenterSnapping", false); "CenterSnapping", false);
config_set_default_double(globalConfig, "BasicWindow", config_set_default_double(globalConfig, "BasicWindow",
"SnapDistance", 10.0); "SnapDistance", 10.0);
config_set_default_bool(globalConfig, "BasicWindow",
"RecordWhenStreaming", false);
config_set_default_bool(globalConfig, "BasicWindow",
"KeepRecordingWhenStreamStops", false);
config_set_default_bool(globalConfig, "BasicWindow",
"ShowTransitions", true);
config_set_default_bool(globalConfig, "BasicWindow",
"ShowListboxToolbars", true);
config_set_default_bool(globalConfig, "BasicWindow",
"ShowStatusBar", true);
#ifdef __APPLE__ #ifdef __APPLE__
config_set_default_bool(globalConfig, "Video", "DisableOSXVSync", true); config_set_default_bool(globalConfig, "Video", "DisableOSXVSync", true);
@ -1298,7 +1310,6 @@ static int run_program(fstream &logFile, int argc, char *argv[])
return 0; return 0;
prof.Stop(); prof.Stop();
PrintInitProfile();
return program.exec(); return program.exec();
@ -1424,6 +1435,16 @@ char *GetConfigPathPtr(const char *name)
} }
} }
int GetProgramDataPath(char *path, size_t size, const char *name)
{
return os_get_program_data_path(path, size, name);
}
char *GetProgramDataPathPtr(const char *name)
{
return os_get_program_data_path_ptr(name);
}
bool GetFileSafeName(const char *name, std::string &file) bool GetFileSafeName(const char *name, std::string &file)
{ {
size_t base_len = strlen(name); size_t base_len = strlen(name);

View file

@ -136,6 +136,9 @@ public:
int GetConfigPath(char *path, size_t size, const char *name); int GetConfigPath(char *path, size_t size, const char *name);
char *GetConfigPathPtr(const char *name); char *GetConfigPathPtr(const char *name);
int GetProgramDataPath(char *path, size_t size, const char *name);
char *GetProgramDataPathPtr(const char *name);
inline OBSApp *App() {return static_cast<OBSApp*>(qApp);} inline OBSApp *App() {return static_cast<OBSApp*>(qApp);}
inline config_t *GetGlobalConfig() {return App()->GlobalConfig();} inline config_t *GetGlobalConfig() {return App()->GlobalConfig();}

Some files were not shown because too many files have changed in this diff Show more