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:
commit
f5477d794a
359 changed files with 8423 additions and 1050 deletions
|
@ -6,6 +6,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
|
|||
|
||||
include(ObsHelpers)
|
||||
include(ObsCpack)
|
||||
include(GNUInstallDirs)
|
||||
|
||||
if(MSVC AND NOT EXISTS "${CMAKE_BINARY_DIR}/ALL_BUILD.vcxproj.user")
|
||||
file(GENERATE
|
||||
|
|
2
README
2
README
|
@ -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
|
||||
when I started writing them in. I did not realize beforehand all the
|
||||
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
|
||||
for example morphed over and over into an abomination that, though works,
|
||||
is basically this giant duct-taped zombie monster.
|
||||
|
|
72
cmake/Modules/FindLibVLC.cmake
Normal file
72
cmake/Modules/FindLibVLC.cmake
Normal 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()
|
68
cmake/Modules/FindLibspeexdsp.cmake
Normal file
68
cmake/Modules/FindLibspeexdsp.cmake
Normal 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()
|
40
cmake/external/ObsPluginHelpers.cmake
vendored
40
cmake/external/ObsPluginHelpers.cmake
vendored
|
@ -106,13 +106,13 @@ endfunction()
|
|||
# 'target' is the destination target project being installed to
|
||||
# 'additional_target' specifies the additional binary
|
||||
function(install_external_plugin_bin_to_data target additional_target)
|
||||
install(TARGETS ${target}
|
||||
install(TARGETS ${additional_target}
|
||||
LIBRARY 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
|
||||
"$<TARGET_FILE:${target}>"
|
||||
"${EXTERNAL_PLUGIN_OUTPUT_DIR}/$<CONFIGURATION>/${plugin_target}/data/$<TARGET_FILE_NAME:${target}>"
|
||||
"$<TARGET_FILE:${additional_target}>"
|
||||
"${EXTERNAL_PLUGIN_OUTPUT_DIR}/$<CONFIGURATION>/${target}/data/$<TARGET_FILE_NAME:${additional_target}>"
|
||||
VERBATIM)
|
||||
endfunction()
|
||||
|
||||
|
@ -128,12 +128,36 @@ function(install_external_plugin_bin_to_arch_data target additional_target)
|
|||
set(_bit_suffix "/32bit")
|
||||
endif()
|
||||
|
||||
install(TARGETS ${target}
|
||||
install(TARGETS ${additional_target}
|
||||
LIBRARY 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
|
||||
"$<TARGET_FILE:${target}>"
|
||||
"${EXTERNAL_PLUGIN_OUTPUT_DIR}/$<CONFIGURATION>/${plugin_target}/data${_bit_suffix}/$<TARGET_FILE_NAME:${target}>"
|
||||
"$<TARGET_FILE:${additional_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)
|
||||
endfunction()
|
||||
|
|
5
deps/w32-pthreads/CMakeLists.txt
vendored
5
deps/w32-pthreads/CMakeLists.txt
vendored
|
@ -19,7 +19,8 @@ add_library(w32-pthreads SHARED
|
|||
target_compile_definitions(w32-pthreads
|
||||
PRIVATE __CLEANUP_C PTW32_BUILD)
|
||||
target_include_directories(w32-pthreads
|
||||
PUBLIC .)
|
||||
PUBLIC
|
||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>")
|
||||
target_link_libraries(w32-pthreads)
|
||||
|
||||
install_obs_core(w32-pthreads)
|
||||
install_obs_core(w32-pthreads EXPORT w32-pthreads)
|
||||
|
|
15
deps/w32-pthreads/w32-pthreadsConfig.cmake.in
vendored
Normal file
15
deps/w32-pthreads/w32-pthreadsConfig.cmake.in
vendored
Normal 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)
|
0
deps/w32-pthreads/w32-pthreadsConfigVersion.cmake.in
vendored
Normal file
0
deps/w32-pthreads/w32-pthreadsConfigVersion.cmake.in
vendored
Normal file
|
@ -222,10 +222,18 @@ inline void gs_shader::UpdateParam(vector<uint8_t> &constData,
|
|||
upload = true;
|
||||
param.changed = false;
|
||||
}
|
||||
|
||||
} else if (param.curValue.size() == sizeof(gs_texture_t*)) {
|
||||
gs_texture_t *tex;
|
||||
memcpy(&tex, param.curValue.data(), sizeof(gs_texture_t*));
|
||||
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(),
|
||||
param->defaultValue.size());
|
||||
}
|
||||
|
||||
void gs_shader_set_next_sampler(gs_sparam_t *param, gs_samplerstate_t *sampler)
|
||||
{
|
||||
param->nextSampler = sampler;
|
||||
}
|
||||
|
|
|
@ -356,6 +356,7 @@ struct gs_shader_param {
|
|||
gs_shader_param_type type;
|
||||
|
||||
uint32_t textureID;
|
||||
struct gs_sampler_state *nextSampler = nullptr;
|
||||
|
||||
int arrayCount;
|
||||
|
||||
|
|
|
@ -487,6 +487,12 @@ static void program_set_param_data(struct gs_program *program,
|
|||
}
|
||||
|
||||
} 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);
|
||||
device_load_texture(program->device, pp->param->texture,
|
||||
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);
|
||||
}
|
||||
|
||||
void gs_shader_set_next_sampler(gs_sparam_t *param, gs_samplerstate_t *sampler)
|
||||
{
|
||||
param->next_sampler = sampler;
|
||||
}
|
||||
|
|
|
@ -300,6 +300,7 @@ struct gs_shader_param {
|
|||
|
||||
char *name;
|
||||
gs_shader_t *shader;
|
||||
gs_samplerstate_t *next_sampler;
|
||||
GLint texture_id;
|
||||
size_t sampler_id;
|
||||
int array_count;
|
||||
|
|
|
@ -125,6 +125,8 @@ void gs_technique_end(gs_technique_t *tech)
|
|||
|
||||
da_free(param->cur_val);
|
||||
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;
|
||||
gs_sparam_t *sparam = param->sparam;
|
||||
|
||||
if (eparam->next_sampler)
|
||||
gs_shader_set_next_sampler(sparam, eparam->next_sampler);
|
||||
|
||||
if (changed_only && !eparam->changed)
|
||||
continue;
|
||||
|
||||
|
@ -378,3 +383,14 @@ void gs_effect_set_default(gs_eparam_t *param)
|
|||
effect_setval_inline(param, param->default_val.array,
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -57,6 +57,7 @@ struct gs_effect_param {
|
|||
DARRAY(uint8_t) default_val;
|
||||
|
||||
gs_effect_t *effect;
|
||||
gs_samplerstate_t *next_sampler;
|
||||
|
||||
/*char *full_name;
|
||||
float scroller_min, scroller_max, scroller_inc, scroller_mul;*/
|
||||
|
|
|
@ -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_val);
|
||||
GRAPHICS_IMPORT(gs_shader_set_default);
|
||||
GRAPHICS_IMPORT(gs_shader_set_next_sampler);
|
||||
|
||||
/* OSX/Cocoa specific functions */
|
||||
#ifdef __APPLE__
|
||||
|
|
|
@ -225,6 +225,8 @@ struct gs_exports {
|
|||
void (*gs_shader_set_val)(gs_sparam_t *param, const void *val,
|
||||
size_t size);
|
||||
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__
|
||||
/* OSX/Cocoa specific functions */
|
||||
|
|
|
@ -2089,6 +2089,16 @@ void gs_shader_set_default(gs_sparam_t *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)
|
||||
{
|
||||
graphics_t *graphics = thread_graphics;
|
||||
|
|
|
@ -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_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_next_sampler(gs_sparam_t *param,
|
||||
gs_samplerstate_t *sampler);
|
||||
|
||||
/* ---------------------------------------------------
|
||||
* 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_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_next_sampler(gs_eparam_t *param,
|
||||
gs_samplerstate_t *sampler);
|
||||
|
||||
/* ---------------------------------------------------
|
||||
* texture render helper functions
|
||||
|
|
|
@ -318,9 +318,10 @@ void gs_image_file_update_texture(gs_image_file_t *image)
|
|||
if (!image->is_animated_gif || !image->loaded)
|
||||
return;
|
||||
|
||||
if (image->animation_frame_cache[image->cur_frame]) {
|
||||
gs_texture_set_image(image->texture,
|
||||
image->animation_frame_cache[image->cur_frame],
|
||||
image->gif.width * 4, false);
|
||||
}
|
||||
if (!image->animation_frame_cache[image->cur_frame])
|
||||
decode_new_frame(image, image->cur_frame);
|
||||
|
||||
gs_texture_set_image(image->texture,
|
||||
image->animation_frame_cache[image->cur_frame],
|
||||
image->gif.width * 4, false);
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
struct vec4 *dstv = (struct vec4 *)dst;
|
||||
struct vec4 *dstv;
|
||||
float det;
|
||||
float m3x3[9];
|
||||
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)
|
||||
{
|
||||
struct matrix4 temp;
|
||||
if (dst == m) {
|
||||
struct matrix4 temp = *m;
|
||||
matrix4_transpose(dst, &temp);
|
||||
return;
|
||||
}
|
||||
|
||||
/* TODO: Add SSE */
|
||||
temp.x.x = m->x.x;
|
||||
temp.x.y = m->y.x;
|
||||
temp.x.z = m->z.x;
|
||||
temp.x.w = m->t.x;
|
||||
temp.y.x = m->x.y;
|
||||
temp.y.y = m->y.y;
|
||||
temp.y.z = m->z.y;
|
||||
temp.y.w = m->t.y;
|
||||
temp.z.x = m->x.z;
|
||||
temp.z.y = m->y.z;
|
||||
temp.z.z = m->z.z;
|
||||
temp.z.w = m->t.z;
|
||||
temp.t.x = m->x.w;
|
||||
temp.t.y = m->y.w;
|
||||
temp.t.z = m->z.w;
|
||||
temp.t.w = m->t.w;
|
||||
#ifdef NO_INTRINSICS
|
||||
dst->x.x = m->x.x;
|
||||
dst->x.y = m->y.x;
|
||||
dst->x.z = m->z.x;
|
||||
dst->x.w = m->t.x;
|
||||
dst->y.x = m->x.y;
|
||||
dst->y.y = m->y.y;
|
||||
dst->y.z = m->z.y;
|
||||
dst->y.w = m->t.y;
|
||||
dst->z.x = m->x.z;
|
||||
dst->z.y = m->y.z;
|
||||
dst->z.z = m->z.z;
|
||||
dst->z.w = m->t.z;
|
||||
dst->t.x = m->x.w;
|
||||
dst->t.y = m->y.w;
|
||||
dst->t.z = m->z.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
|
||||
}
|
||||
|
|
|
@ -119,8 +119,7 @@ void shader_sampler_convert(struct shader_sampler *ss,
|
|||
else if (astrcmpi(state, "MaxAnisotropy") == 0)
|
||||
info->max_anisotropy = (int)strtol(value, NULL, 10);
|
||||
else if (astrcmpi(state, "BorderColor") == 0)
|
||||
info->border_color = (*value == '#') ?
|
||||
strtol(value + 1, NULL, 16) : 0;
|
||||
info->border_color = strtol(value + 1, NULL, 16);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -138,7 +137,7 @@ static int sp_parse_sampler_state_item(struct shader_parser *sp,
|
|||
ret = cf_next_token_should_be(&sp->cfp, "=", ";", NULL);
|
||||
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;
|
||||
|
||||
ret = cf_next_token_should_be(&sp->cfp, ";", ";", NULL);
|
||||
|
|
|
@ -395,10 +395,13 @@ static void volmeter_update_audio_settings(obs_volmeter_t *volmeter)
|
|||
{
|
||||
audio_t *audio = obs_get_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->peakhold_frames = volmeter->peakhold_ms * sr / 1000;
|
||||
pthread_mutex_unlock(&volmeter->mutex);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
signal_handler_t *sh;
|
||||
float vol;
|
||||
|
||||
if (!fader || !source)
|
||||
return false;
|
||||
|
||||
obs_fader_detach_source(fader);
|
||||
|
||||
pthread_mutex_lock(&fader->mutex);
|
||||
|
||||
sh = obs_source_get_signal_handler(source);
|
||||
signal_handler_connect(sh, "volume",
|
||||
fader_source_volume_changed, fader);
|
||||
signal_handler_connect(sh, "destroy",
|
||||
fader_source_destroyed, fader);
|
||||
vol = obs_source_get_volume(source);
|
||||
|
||||
pthread_mutex_lock(&fader->mutex);
|
||||
|
||||
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);
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
signal_handler_t *sh;
|
||||
obs_source_t *source;
|
||||
|
||||
if (!fader)
|
||||
return;
|
||||
|
||||
pthread_mutex_lock(&fader->mutex);
|
||||
source = fader->source;
|
||||
fader->source = NULL;
|
||||
pthread_mutex_unlock(&fader->mutex);
|
||||
|
||||
if (!fader->source)
|
||||
goto exit;
|
||||
if (!source)
|
||||
return;
|
||||
|
||||
sh = obs_source_get_signal_handler(fader->source);
|
||||
sh = obs_source_get_signal_handler(source);
|
||||
signal_handler_disconnect(sh, "volume",
|
||||
fader_source_volume_changed, fader);
|
||||
signal_handler_disconnect(sh, "destroy",
|
||||
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,
|
||||
|
@ -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)
|
||||
{
|
||||
signal_handler_t *sh;
|
||||
float vol;
|
||||
|
||||
if (!volmeter || !source)
|
||||
return false;
|
||||
|
||||
obs_volmeter_detach_source(volmeter);
|
||||
|
||||
pthread_mutex_lock(&volmeter->mutex);
|
||||
|
||||
sh = obs_source_get_signal_handler(source);
|
||||
signal_handler_connect(sh, "volume",
|
||||
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);
|
||||
obs_source_add_audio_capture_callback(source,
|
||||
volmeter_source_data_received, volmeter);
|
||||
vol = obs_source_get_volume(source);
|
||||
|
||||
pthread_mutex_lock(&volmeter->mutex);
|
||||
|
||||
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);
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
signal_handler_t *sh;
|
||||
obs_source_t *source;
|
||||
|
||||
if (!volmeter)
|
||||
return;
|
||||
|
||||
pthread_mutex_lock(&volmeter->mutex);
|
||||
source = volmeter->source;
|
||||
volmeter->source = NULL;
|
||||
pthread_mutex_unlock(&volmeter->mutex);
|
||||
|
||||
if (!volmeter->source)
|
||||
goto exit;
|
||||
if (!source)
|
||||
return;
|
||||
|
||||
sh = obs_source_get_signal_handler(volmeter->source);
|
||||
sh = obs_source_get_signal_handler(source);
|
||||
signal_handler_disconnect(sh, "volume",
|
||||
volmeter_source_volume_changed, volmeter);
|
||||
signal_handler_disconnect(sh, "destroy",
|
||||
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 = NULL;
|
||||
|
||||
exit:
|
||||
pthread_mutex_unlock(&volmeter->mutex);
|
||||
}
|
||||
|
||||
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);
|
||||
volmeter->update_ms = ms;
|
||||
volmeter_update_audio_settings(volmeter);
|
||||
pthread_mutex_unlock(&volmeter->mutex);
|
||||
|
||||
volmeter_update_audio_settings(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);
|
||||
volmeter->peakhold_ms = ms;
|
||||
volmeter_update_audio_settings(volmeter);
|
||||
pthread_mutex_unlock(&volmeter->mutex);
|
||||
|
||||
volmeter_update_audio_settings(volmeter);
|
||||
}
|
||||
|
||||
unsigned int obs_volmeter_get_peak_hold(obs_volmeter_t *volmeter)
|
||||
|
|
|
@ -34,14 +34,14 @@
|
|||
*
|
||||
* Reset to zero each major version
|
||||
*/
|
||||
#define LIBOBS_API_MINOR_VER 14
|
||||
#define LIBOBS_API_MINOR_VER 15
|
||||
|
||||
/*
|
||||
* Increment if backward-compatible bug fix
|
||||
*
|
||||
* 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) \
|
||||
((major << 24) | \
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
obs_data_array_t **array;
|
||||
|
||||
if (!item)
|
||||
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(
|
||||
|
@ -1495,6 +1498,14 @@ enum obs_data_number_type obs_data_item_numtype(obs_data_item_t *item)
|
|||
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)
|
||||
{
|
||||
obs_set_string(NULL, item, NULL, val, set_item);
|
||||
|
|
|
@ -195,6 +195,7 @@ EXPORT void obs_data_item_remove(obs_data_item_t **item);
|
|||
/* Gets Item type */
|
||||
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 const char *obs_data_item_get_name(obs_data_item_t *item);
|
||||
|
||||
/* Item set functions */
|
||||
EXPORT void obs_data_item_set_string(obs_data_item_t **item, const char *val);
|
||||
|
|
|
@ -108,7 +108,7 @@ static struct obs_encoder *create_encoder(const char *id,
|
|||
&obs->data.encoders_mutex,
|
||||
&obs->data.first_encoder);
|
||||
|
||||
blog(LOG_INFO, "encoder '%s' (%s) created", name, id);
|
||||
blog(LOG_DEBUG, "encoder '%s' (%s) created", name, id);
|
||||
return encoder;
|
||||
}
|
||||
|
||||
|
@ -229,7 +229,7 @@ static void obs_encoder_actually_destroy(obs_encoder_t *encoder)
|
|||
da_free(encoder->outputs);
|
||||
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);
|
||||
|
||||
|
@ -809,6 +809,7 @@ static inline void do_encode(struct obs_encoder *encoder,
|
|||
* you do not want to use relative timestamps here */
|
||||
pkt.dts_usec = encoder->start_ts / 1000 +
|
||||
packet_dts_usec(&pkt) - encoder->offset_usec;
|
||||
pkt.sys_dts_usec = pkt.dts_usec;
|
||||
|
||||
pthread_mutex_lock(&encoder->callbacks_mutex);
|
||||
|
||||
|
|
|
@ -58,6 +58,9 @@ struct encoder_packet {
|
|||
/* DTS in microseconds */
|
||||
int64_t dts_usec;
|
||||
|
||||
/* System DTS in microseconds */
|
||||
int64_t sys_dts_usec;
|
||||
|
||||
/**
|
||||
* Packet priority
|
||||
*
|
||||
|
|
|
@ -238,6 +238,7 @@ struct obs_core_video {
|
|||
gs_effect_t *lanczos_effect;
|
||||
gs_effect_t *bilinear_lowres_effect;
|
||||
gs_effect_t *premultiplied_alpha_effect;
|
||||
gs_samplerstate_t *point_sampler;
|
||||
gs_stagesurf_t *mapped_surface;
|
||||
int cur_texture;
|
||||
|
||||
|
@ -781,20 +782,25 @@ struct obs_output {
|
|||
|
||||
bool received_video;
|
||||
bool received_audio;
|
||||
volatile bool data_active;
|
||||
volatile bool end_data_capture_thread_active;
|
||||
int64_t video_offset;
|
||||
int64_t audio_offsets[MAX_AUDIO_MIXES];
|
||||
int64_t highest_audio_ts;
|
||||
int64_t highest_video_ts;
|
||||
pthread_t end_data_capture_thread;
|
||||
os_event_t *stopping_event;
|
||||
pthread_mutex_t interleaved_mutex;
|
||||
DARRAY(struct encoder_packet) interleaved_packets;
|
||||
int stop_code;
|
||||
|
||||
int reconnect_retry_sec;
|
||||
int reconnect_retry_max;
|
||||
int reconnect_retries;
|
||||
int reconnect_retry_cur_sec;
|
||||
bool reconnecting;
|
||||
pthread_t reconnect_thread;
|
||||
os_event_t *reconnect_stop_event;
|
||||
volatile bool reconnecting;
|
||||
volatile bool reconnect_thread_active;
|
||||
|
||||
uint32_t starting_drawn_count;
|
||||
|
@ -804,8 +810,7 @@ struct obs_output {
|
|||
|
||||
int total_frames;
|
||||
|
||||
bool active;
|
||||
volatile bool stopped;
|
||||
volatile bool active;
|
||||
video_t *video;
|
||||
audio_t *audio;
|
||||
obs_encoder_t *video_encoder;
|
||||
|
@ -831,8 +836,8 @@ struct obs_output {
|
|||
uint32_t delay_flags;
|
||||
uint32_t delay_cur_flags;
|
||||
volatile long delay_restart_refs;
|
||||
bool delay_active;
|
||||
bool delay_capturing;
|
||||
volatile bool delay_active;
|
||||
volatile bool delay_capturing;
|
||||
};
|
||||
|
||||
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 void obs_output_delay_stop(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);
|
||||
|
||||
|
|
|
@ -84,7 +84,7 @@ int obs_open_module(obs_module_t **module, const char *path,
|
|||
if (!module || !path || !obs)
|
||||
return MODULE_ERROR;
|
||||
|
||||
blog(LOG_INFO, "---------------------------------");
|
||||
blog(LOG_DEBUG, "---------------------------------");
|
||||
|
||||
mod.module = os_dlopen(path);
|
||||
if (!mod.module) {
|
||||
|
@ -104,7 +104,7 @@ int obs_open_module(obs_module_t **module, const char *path,
|
|||
mod.next = obs->first_module;
|
||||
|
||||
if (mod.file) {
|
||||
blog(LOG_INFO, "Loading module: %s", mod.file);
|
||||
blog(LOG_DEBUG, "Loading module: %s", mod.file);
|
||||
}
|
||||
|
||||
*module = bmemdup(&mod, sizeof(mod));
|
||||
|
@ -138,6 +138,14 @@ bool obs_init_module(obs_module_t *module)
|
|||
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)
|
||||
{
|
||||
return module ? module->file : NULL;
|
||||
|
|
|
@ -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
|
||||
* 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)
|
||||
|
||||
|
@ -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
|
||||
* module. Free with bfree when complete. Will return NULL if configuration
|
||||
* 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) \
|
||||
obs_module_get_config_path(obs_current_module(), file)
|
||||
|
|
|
@ -18,6 +18,16 @@
|
|||
#include <inttypes.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,
|
||||
struct encoder_packet *packet, uint64_t t)
|
||||
{
|
||||
|
@ -37,7 +47,7 @@ static inline void process_delay_data(struct obs_output *output,
|
|||
{
|
||||
switch (dd->msg) {
|
||||
case DELAY_MSG_PACKET:
|
||||
if (!output->delay_active || !output->delay_capturing)
|
||||
if (!delay_active(output) || !delay_capturing(output))
|
||||
obs_free_encoder_packet(&dd->packet);
|
||||
else
|
||||
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);
|
||||
break;
|
||||
case DELAY_MSG_STOP:
|
||||
obs_output_actual_stop(output, false);
|
||||
obs_output_actual_stop(output, false, dd->ts);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -63,7 +73,7 @@ void obs_output_cleanup_delay(obs_output_t *output)
|
|||
}
|
||||
|
||||
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)
|
||||
|
@ -129,7 +139,7 @@ bool obs_output_delay_start(obs_output_t *output)
|
|||
.ts = os_gettime_ns(),
|
||||
};
|
||||
|
||||
if (!output->delay_active) {
|
||||
if (!delay_active(output)) {
|
||||
bool can_begin = obs_output_can_begin_data_capture(output, 0);
|
||||
if (!can_begin)
|
||||
return false;
|
||||
|
@ -141,8 +151,9 @@ bool obs_output_delay_start(obs_output_t *output)
|
|||
circlebuf_push_back(&output->delay_data, &dd, sizeof(dd));
|
||||
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");
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -20,7 +20,35 @@
|
|||
#include "obs.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)
|
||||
{
|
||||
|
@ -76,9 +104,13 @@ obs_output_t *obs_output_create(const char *id, const char *name,
|
|||
goto fail;
|
||||
if (pthread_mutex_init(&output->delay_mutex, NULL) != 0)
|
||||
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))
|
||||
goto fail;
|
||||
|
||||
os_event_signal(output->stopping_event);
|
||||
|
||||
if (!info) {
|
||||
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.first_output);
|
||||
|
||||
blog(LOG_INFO, "output '%s' (%s) created", name, id);
|
||||
blog(LOG_DEBUG, "output '%s' (%s) created", name, id);
|
||||
return output;
|
||||
|
||||
fail:
|
||||
|
@ -134,18 +166,22 @@ void obs_output_destroy(obs_output_t *output)
|
|||
if (output) {
|
||||
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)
|
||||
output->service->output = NULL;
|
||||
|
||||
free_packets(output);
|
||||
|
||||
if (output->context.data)
|
||||
output->info.destroy(output->context.data);
|
||||
|
||||
free_packets(output);
|
||||
|
||||
if (output->video_encoder) {
|
||||
obs_encoder_remove_output(output->video_encoder,
|
||||
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->delay_mutex);
|
||||
os_event_destroy(output->reconnect_stop_event);
|
||||
|
@ -180,7 +217,8 @@ bool obs_output_actual_start(obs_output_t *output)
|
|||
{
|
||||
bool success = false;
|
||||
|
||||
output->stopped = false;
|
||||
os_event_wait(output->stopping_event);
|
||||
output->stop_code = 0;
|
||||
|
||||
if (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;
|
||||
}
|
||||
|
||||
if (output->delay_restart_refs)
|
||||
if (os_atomic_load_long(&output->delay_restart_refs))
|
||||
os_atomic_dec_long(&output->delay_restart_refs);
|
||||
|
||||
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)
|
||||
{
|
||||
struct obs_core_video *video = &obs->video;
|
||||
|
@ -272,27 +315,47 @@ static void log_frame_info(struct obs_output *output)
|
|||
dropped, percentage_dropped);
|
||||
}
|
||||
|
||||
void obs_output_actual_stop(obs_output_t *output, bool force)
|
||||
static inline void signal_stop(struct obs_output *output);
|
||||
|
||||
void obs_output_actual_stop(obs_output_t *output, bool force, uint64_t ts)
|
||||
{
|
||||
output->stopped = true;
|
||||
bool call_stop = true;
|
||||
bool was_reconnecting = false;
|
||||
|
||||
os_event_signal(output->reconnect_stop_event);
|
||||
if (output->reconnect_thread_active)
|
||||
pthread_join(output->reconnect_thread, NULL);
|
||||
if (stopping(output))
|
||||
return;
|
||||
os_event_reset(output->stopping_event);
|
||||
|
||||
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);
|
||||
was_reconnecting = reconnecting(output) && !delay_active(output);
|
||||
if (reconnecting(output)) {
|
||||
os_event_signal(output->reconnect_stop_event);
|
||||
if (output->reconnect_thread_active)
|
||||
pthread_join(output->reconnect_thread, NULL);
|
||||
}
|
||||
|
||||
if (force || !output->delay_active)
|
||||
signal_stop(output, OBS_OUTPUT_SUCCESS);
|
||||
if (force) {
|
||||
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)
|
||||
|
@ -302,26 +365,40 @@ void obs_output_stop(obs_output_t *output)
|
|||
return;
|
||||
if (!output->context.data)
|
||||
return;
|
||||
if (!active(output) && !reconnecting(output))
|
||||
return;
|
||||
if (reconnecting(output)) {
|
||||
obs_output_force_stop(output);
|
||||
return;
|
||||
}
|
||||
|
||||
encoded = (output->info.flags & OBS_OUTPUT_ENCODED) != 0;
|
||||
|
||||
if (encoded && output->active_delay_ns) {
|
||||
obs_output_delay_stop(output);
|
||||
} else {
|
||||
obs_output_actual_stop(output, false);
|
||||
|
||||
} else if (!stopping(output)) {
|
||||
do_output_signal(output, "stopping");
|
||||
obs_output_actual_stop(output, false, os_gettime_ns());
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
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)
|
||||
|
@ -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"))
|
||||
return;
|
||||
|
||||
if (!output->active)
|
||||
if (!active(output))
|
||||
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"))
|
||||
return;
|
||||
if (output->active || !service || service->active)
|
||||
if (active(output) || !service || service->active)
|
||||
return;
|
||||
|
||||
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)
|
||||
return 0;
|
||||
|
||||
if (output->delay_active && !output->delay_capturing)
|
||||
if (delay_active(output) && !delay_capturing(output))
|
||||
return 0;
|
||||
|
||||
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)
|
||||
return;
|
||||
|
||||
if (output->active) {
|
||||
if (active(output)) {
|
||||
blog(LOG_WARNING, "output '%s': Cannot set the preferred "
|
||||
"resolution while the output is active",
|
||||
obs_output_get_name(output));
|
||||
|
@ -879,8 +956,7 @@ static inline void send_interleaved(struct obs_output *output)
|
|||
output->total_frames++;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -940,7 +1016,7 @@ static int prune_premature_packets(struct obs_output *output)
|
|||
int max_idx;
|
||||
int64_t duration_usec;
|
||||
int64_t max_diff = 0;
|
||||
int64_t diff;
|
||||
int64_t diff = 0;
|
||||
|
||||
video_idx = find_first_packet_type_idx(output, OBS_ENCODER_VIDEO, 0);
|
||||
if (video_idx == -1) {
|
||||
|
@ -1212,6 +1288,9 @@ static void interleave_packets(void *data, struct encoder_packet *packet)
|
|||
struct encoder_packet out;
|
||||
bool was_started;
|
||||
|
||||
if (!active(output))
|
||||
return;
|
||||
|
||||
if (packet->type == OBS_ENCODER_AUDIO)
|
||||
packet->track_idx = get_track_index(output, packet);
|
||||
|
||||
|
@ -1223,6 +1302,9 @@ static void interleave_packets(void *data, struct encoder_packet *packet)
|
|||
!packet->keyframe) {
|
||||
discard_unused_audio_packets(output, packet->dts_usec);
|
||||
pthread_mutex_unlock(&output->interleaved_mutex);
|
||||
|
||||
if (output->active_delay_ns)
|
||||
obs_free_encoder_packet(packet);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1263,22 +1345,24 @@ static void default_encoded_callback(void *param, struct encoder_packet *packet)
|
|||
{
|
||||
struct obs_output *output = param;
|
||||
|
||||
if (packet->type == OBS_ENCODER_AUDIO)
|
||||
packet->track_idx = get_track_index(output, packet);
|
||||
if (data_active(output)) {
|
||||
if (packet->type == OBS_ENCODER_AUDIO)
|
||||
packet->track_idx = get_track_index(output, packet);
|
||||
|
||||
if (!output->stopped)
|
||||
output->info.encoded_packet(output->context.data, packet);
|
||||
|
||||
if (packet->type == OBS_ENCODER_VIDEO)
|
||||
output->total_frames++;
|
||||
}
|
||||
|
||||
if (output->active_delay_ns)
|
||||
obs_free_encoder_packet(packet);
|
||||
|
||||
if (packet->type == OBS_ENCODER_VIDEO)
|
||||
output->total_frames++;
|
||||
}
|
||||
|
||||
static void default_raw_video_callback(void *param, struct video_data *frame)
|
||||
{
|
||||
struct obs_output *output = param;
|
||||
if (!output->stopped)
|
||||
if (data_active(output))
|
||||
output->info.raw_video(output->context.data, frame);
|
||||
output->total_frames++;
|
||||
}
|
||||
|
@ -1287,8 +1371,10 @@ static void default_raw_audio_callback(void *param, size_t mix_idx,
|
|||
struct audio_data *frames)
|
||||
{
|
||||
struct obs_output *output = param;
|
||||
if (!output->stopped)
|
||||
output->info.raw_audio(output->context.data, frames);
|
||||
if (!data_active(output))
|
||||
return;
|
||||
|
||||
output->info.raw_audio(output->context.data, frames);
|
||||
|
||||
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_callback = encoded_callback;
|
||||
encoded_callback = process_delay;
|
||||
output->delay_active = true;
|
||||
os_atomic_set_bool(&output->delay_active, true);
|
||||
|
||||
blog(LOG_INFO, "Output '%s': %"PRIu32" second delay "
|
||||
"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");
|
||||
}
|
||||
|
||||
static inline void signal_stop(struct obs_output *output, int code)
|
||||
static inline void signal_stop(struct obs_output *output)
|
||||
{
|
||||
struct calldata params;
|
||||
uint8_t stack[128];
|
||||
|
||||
calldata_init_fixed(¶ms, stack, sizeof(stack));
|
||||
calldata_set_int(¶ms, "code", code);
|
||||
calldata_set_int(¶ms, "code", output->stop_code);
|
||||
calldata_set_ptr(¶ms, "output", output);
|
||||
signal_handler_signal(output->context.signals, "stop", ¶ms);
|
||||
}
|
||||
|
@ -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"))
|
||||
return false;
|
||||
|
||||
if (output->delay_active) return true;
|
||||
if (output->active) return false;
|
||||
if (delay_active(output)) return true;
|
||||
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,
|
||||
&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"))
|
||||
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,
|
||||
&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)
|
||||
{
|
||||
if (output->delay_capturing)
|
||||
if (delay_capturing(output))
|
||||
return false;
|
||||
|
||||
pthread_mutex_lock(&output->interleaved_mutex);
|
||||
reset_packet_data(output);
|
||||
output->delay_capturing = true;
|
||||
os_atomic_set_bool(&output->delay_capturing, true);
|
||||
pthread_mutex_unlock(&output->interleaved_mutex);
|
||||
|
||||
if (output->reconnecting) {
|
||||
if (reconnecting(output)) {
|
||||
signal_reconnect_success(output);
|
||||
output->reconnecting = false;
|
||||
os_atomic_set_bool(&output->reconnecting, false);
|
||||
} else {
|
||||
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"))
|
||||
return false;
|
||||
|
||||
if (output->delay_active) return begin_delayed_capture(output);
|
||||
if (output->active) return false;
|
||||
if (delay_active(output)) return begin_delayed_capture(output);
|
||||
if (active(output)) return false;
|
||||
|
||||
output->total_frames = 0;
|
||||
|
||||
|
@ -1551,19 +1640,20 @@ bool obs_output_begin_data_capture(obs_output_t *output, uint32_t flags)
|
|||
has_service))
|
||||
return false;
|
||||
|
||||
os_atomic_set_bool(&output->data_active, true);
|
||||
hook_data_capture(output, encoded, has_video, has_audio);
|
||||
|
||||
if (has_service)
|
||||
obs_service_activate(output->service);
|
||||
|
||||
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);
|
||||
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");
|
||||
|
||||
} 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;
|
||||
encoded_callback_t encoded_callback;
|
||||
|
||||
if (!obs_output_valid(output, "obs_output_end_data_capture"))
|
||||
return;
|
||||
|
||||
if (output->delay_active) {
|
||||
output->delay_capturing = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!output->active) return;
|
||||
obs_output_t *output = data;
|
||||
|
||||
convert_flags(output, 0, &encoded, &has_video, &has_audio,
|
||||
&has_service);
|
||||
|
@ -1631,7 +1712,66 @@ void obs_output_end_data_capture(obs_output_t *output)
|
|||
obs_output_cleanup_delay(output);
|
||||
|
||||
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)
|
||||
|
@ -1647,48 +1787,51 @@ static void *reconnect_thread(void *param)
|
|||
if (os_event_try(output->reconnect_stop_event) == EAGAIN)
|
||||
pthread_detach(output->reconnect_thread);
|
||||
else
|
||||
output->reconnecting = false;
|
||||
os_atomic_set_bool(&output->reconnecting, false);
|
||||
|
||||
output->reconnect_thread_active = false;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#define MAX_RETRY_SEC (15 * 60)
|
||||
|
||||
static void output_reconnect(struct obs_output *output)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (!output->reconnecting) {
|
||||
if (!reconnecting(output)) {
|
||||
output->reconnect_retry_cur_sec = output->reconnect_retry_sec;
|
||||
output->reconnect_retries = 0;
|
||||
}
|
||||
|
||||
if (output->reconnect_retries >= output->reconnect_retry_max) {
|
||||
output->reconnecting = false;
|
||||
if (output->delay_active) {
|
||||
output->delay_active = false;
|
||||
obs_output_end_data_capture(output);
|
||||
}
|
||||
signal_stop(output, OBS_OUTPUT_DISCONNECTED);
|
||||
output->stop_code = OBS_OUTPUT_DISCONNECTED;
|
||||
os_atomic_set_bool(&output->reconnecting, false);
|
||||
if (delay_active(output))
|
||||
os_atomic_set_bool(&output->delay_active, false);
|
||||
obs_output_end_data_capture(output);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!output->reconnecting) {
|
||||
output->reconnecting = true;
|
||||
if (!reconnecting(output)) {
|
||||
os_atomic_set_bool(&output->reconnecting, true);
|
||||
os_event_reset(output->reconnect_stop_event);
|
||||
}
|
||||
|
||||
if (output->reconnect_retries) {
|
||||
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->stop_code = OBS_OUTPUT_DISCONNECTED;
|
||||
ret = pthread_create(&output->reconnect_thread, NULL,
|
||||
&reconnect_thread, output);
|
||||
if (ret < 0) {
|
||||
blog(LOG_WARNING, "Failed to create reconnect thread");
|
||||
output->reconnecting = false;
|
||||
signal_stop(output, OBS_OUTPUT_DISCONNECTED);
|
||||
os_atomic_set_bool(&output->reconnecting, false);
|
||||
} else {
|
||||
blog(LOG_INFO, "Output '%s': Reconnecting in %d seconds..",
|
||||
output->context.name,
|
||||
|
@ -1698,22 +1841,30 @@ 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)
|
||||
{
|
||||
if (!obs_output_valid(output, "obs_output_signal_stop"))
|
||||
return;
|
||||
|
||||
obs_output_end_data_capture(output);
|
||||
output->stop_code = code;
|
||||
|
||||
if ((output->reconnecting && code != OBS_OUTPUT_SUCCESS) ||
|
||||
code == OBS_OUTPUT_DISCONNECTED) {
|
||||
if (can_reconnect(output, code)) {
|
||||
if (delay_active(output))
|
||||
os_atomic_inc_long(&output->delay_restart_refs);
|
||||
obs_output_end_data_capture_internal(output, false);
|
||||
output_reconnect(output);
|
||||
} else {
|
||||
if (output->delay_active) {
|
||||
output->delay_active = false;
|
||||
obs_output_end_data_capture(output);
|
||||
}
|
||||
signal_stop(output, code);
|
||||
if (delay_active(output))
|
||||
os_atomic_set_bool(&output->delay_active, false);
|
||||
obs_output_end_data_capture(output);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ struct obs_output_info {
|
|||
void (*destroy)(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_audio)(void *data, struct audio_data *frames);
|
||||
|
|
|
@ -62,7 +62,7 @@ struct list_data {
|
|||
};
|
||||
|
||||
struct editable_list_data {
|
||||
bool allow_files;
|
||||
enum obs_editable_list_type type;
|
||||
char *filter;
|
||||
char *default_path;
|
||||
};
|
||||
|
@ -145,6 +145,7 @@ struct obs_properties;
|
|||
struct obs_property {
|
||||
const char *name;
|
||||
const char *desc;
|
||||
const char *long_desc;
|
||||
enum obs_property_type type;
|
||||
bool visible;
|
||||
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,
|
||||
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)
|
||||
{
|
||||
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);
|
||||
|
||||
struct editable_list_data *data = get_property_data(p);
|
||||
data->allow_files = allow_files;
|
||||
data->type = type;
|
||||
data->filter = bstrdup(filter);
|
||||
data->default_path = bstrdup(default_path);
|
||||
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,
|
||||
OBS_PROPERTY_BUTTON);
|
||||
if (data && data->callback)
|
||||
return data->callback(p->parent, p, context->data);
|
||||
return data->callback(p->parent, p,
|
||||
(context ? context->data : NULL));
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -605,6 +607,11 @@ void obs_property_set_description(obs_property_t *p, const char *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)
|
||||
{
|
||||
return p ? p->name : NULL;
|
||||
|
@ -615,6 +622,11 @@ const char *obs_property_description(obs_property_t *p)
|
|||
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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
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,
|
||||
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)
|
||||
|
|
|
@ -70,6 +70,12 @@ enum obs_combo_type {
|
|||
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 {
|
||||
OBS_PATH_FILE,
|
||||
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,
|
||||
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);
|
||||
|
||||
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,
|
||||
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_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 bool obs_property_enabled(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 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_default_path(obs_property_t *p);
|
||||
|
||||
|
|
|
@ -337,6 +337,8 @@ static void update_item_transform(struct obs_scene_item *item)
|
|||
matrix4_translate3f(&item->draw_transform, &item->draw_transform,
|
||||
item->pos.x, item->pos.y, 0.0f);
|
||||
|
||||
item->output_scale = scale;
|
||||
|
||||
/* ----------------------- */
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
if (item->crop_render) {
|
||||
if (item->item_render) {
|
||||
uint32_t width = obs_source_get_width(item->source);
|
||||
uint32_t height = obs_source_get_height(item->source);
|
||||
uint32_t cx = calc_cx(item, width);
|
||||
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 cy_scale = (float)height / (float)cy;
|
||||
struct vec4 clear_color;
|
||||
|
@ -408,17 +471,14 @@ static inline void render_item(struct obs_scene_item *item)
|
|||
0.0f);
|
||||
|
||||
obs_source_video_render(item->source);
|
||||
gs_texrender_end(item->crop_render);
|
||||
gs_texrender_end(item->item_render);
|
||||
}
|
||||
}
|
||||
|
||||
gs_matrix_push();
|
||||
gs_matrix_mul(&item->draw_transform);
|
||||
if (item->crop_render) {
|
||||
gs_texture_t *tex = gs_texrender_get_texture(item->crop_render);
|
||||
|
||||
while (gs_effect_loop(obs->video.default_effect, "Draw"))
|
||||
obs_source_draw(tex, 0, 0, 0, 0, 0);
|
||||
if (item->item_render) {
|
||||
render_item_texture(item);
|
||||
} else {
|
||||
obs_source_video_render(item->source);
|
||||
}
|
||||
|
@ -433,8 +493,8 @@ static void scene_video_tick(void *data, float seconds)
|
|||
video_lock(scene);
|
||||
item = scene->first_item;
|
||||
while (item) {
|
||||
if (item->crop_render)
|
||||
gs_texrender_reset(item->crop_render);
|
||||
if (item->item_render)
|
||||
gs_texrender_reset(item->item_render);
|
||||
item = item->next;
|
||||
}
|
||||
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");
|
||||
obs_source_t *source = obs_get_source_by_name(name);
|
||||
const char *scale_filter_str;
|
||||
struct obs_scene_item *item;
|
||||
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.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();
|
||||
gs_texrender_destroy(item->crop_render);
|
||||
item->crop_render = NULL;
|
||||
gs_texrender_destroy(item->item_render);
|
||||
item->item_render = NULL;
|
||||
obs_leave_graphics();
|
||||
|
||||
} else if (!item->crop_render && crop_enabled(&item->crop)) {
|
||||
} else if (!item->item_render && item_texture_enabled(item)) {
|
||||
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();
|
||||
}
|
||||
|
||||
|
@ -595,6 +670,7 @@ static void scene_save_item(obs_data_array_t *array,
|
|||
{
|
||||
obs_data_t *item_data = obs_data_create();
|
||||
const char *name = obs_source_get_name(item->source);
|
||||
const char *scale_filter;
|
||||
|
||||
obs_data_set_string(item_data, "name", name);
|
||||
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_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_release(item_data);
|
||||
}
|
||||
|
@ -1197,6 +1286,12 @@ obs_sceneitem_t *obs_scene_add(obs_scene_t *scene, obs_source_t *source)
|
|||
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);
|
||||
|
||||
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)
|
||||
{
|
||||
if (item) {
|
||||
if (item->crop_render) {
|
||||
if (item->item_render) {
|
||||
obs_enter_graphics();
|
||||
gs_texrender_destroy(item->crop_render);
|
||||
gs_texrender_destroy(item->item_render);
|
||||
obs_leave_graphics();
|
||||
}
|
||||
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];
|
||||
const char *command = select ? "item_select" : "item_deselect";
|
||||
|
||||
if (!item || item->selected == select)
|
||||
if (!item || item->selected == select || !item->parent)
|
||||
return;
|
||||
|
||||
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,
|
||||
const struct obs_sceneitem_crop *crop)
|
||||
{
|
||||
bool now_enabled;
|
||||
bool item_tex_now_enabled;
|
||||
|
||||
if (!obs_ptr_valid(item, "obs_sceneitem_set_crop"))
|
||||
return;
|
||||
|
@ -1704,16 +1799,17 @@ void obs_sceneitem_set_crop(obs_sceneitem_t *item,
|
|||
if (crop_equal(crop, &item->crop))
|
||||
return;
|
||||
|
||||
now_enabled = crop_enabled(crop);
|
||||
item_tex_now_enabled = crop_enabled(crop) ||
|
||||
scale_filter_enabled(item) || item_is_scene(item);
|
||||
|
||||
obs_enter_graphics();
|
||||
|
||||
if (!now_enabled) {
|
||||
gs_texrender_destroy(item->crop_render);
|
||||
item->crop_render = NULL;
|
||||
if (!item_tex_now_enabled) {
|
||||
gs_texrender_destroy(item->item_render);
|
||||
item->item_render = NULL;
|
||||
|
||||
} else if (!item->crop_render) {
|
||||
item->crop_render = gs_texrender_create(GS_RGBA, GS_ZS_NONE);
|
||||
} else if (!item->item_render) {
|
||||
item->item_render = gs_texrender_create(GS_RGBA, GS_ZS_NONE);
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
if (!obs_ptr_valid(item, "obs_sceneitem_defer_update_begin"))
|
||||
|
|
|
@ -40,7 +40,7 @@ struct obs_scene_item {
|
|||
bool visible;
|
||||
bool selected;
|
||||
|
||||
gs_texrender_t *crop_render;
|
||||
gs_texrender_t *item_render;
|
||||
struct obs_sceneitem_crop crop;
|
||||
|
||||
struct vec2 pos;
|
||||
|
@ -53,6 +53,9 @@ struct obs_scene_item {
|
|||
uint32_t last_width;
|
||||
uint32_t last_height;
|
||||
|
||||
struct vec2 output_scale;
|
||||
enum obs_scale_type scale_filter;
|
||||
|
||||
struct matrix4 box_transform;
|
||||
struct matrix4 draw_transform;
|
||||
|
||||
|
|
|
@ -66,8 +66,7 @@ static obs_service_t *obs_service_create_internal(const char *id,
|
|||
&obs->data.services_mutex,
|
||||
&obs->data.first_service);
|
||||
|
||||
blog(private ? LOG_DEBUG : LOG_INFO, "service '%s' (%s) created",
|
||||
name, id);
|
||||
blog(LOG_DEBUG, "service '%s' (%s) created", name, id);
|
||||
return service;
|
||||
}
|
||||
|
||||
|
@ -92,8 +91,7 @@ static void actually_destroy_service(struct obs_service *service)
|
|||
if (service->output)
|
||||
service->output->service = NULL;
|
||||
|
||||
blog(service->context.private ? LOG_DEBUG : LOG_INFO,
|
||||
"service '%s' destroyed", service->context.name);
|
||||
blog(LOG_DEBUG, "service '%s' destroyed", service->context.name);
|
||||
|
||||
obs_context_data_free(&service->context);
|
||||
if (service->owns_info_id)
|
||||
|
|
|
@ -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);
|
||||
|
||||
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)
|
||||
{
|
||||
obs_source_t *child;
|
||||
struct matrix4 mat;
|
||||
struct vec2 pos;
|
||||
struct vec2 scale;
|
||||
float tr_cx = (float)tr->transition_actual_cx;
|
||||
float tr_cy = (float)tr->transition_actual_cy;
|
||||
float tr_cx = (float)get_cx(tr);
|
||||
float tr_cy = (float)get_cy(tr);
|
||||
float source_cx;
|
||||
float source_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",
|
||||
"transition_start");
|
||||
|
||||
recalculate_transition_size(transition);
|
||||
recalculate_transition_matrices(transition);
|
||||
|
||||
/* TODO: Add mode */
|
||||
UNUSED_PARAMETER(mode);
|
||||
return true;
|
||||
|
@ -596,8 +611,8 @@ void obs_transition_enum_sources(obs_source_t *transition,
|
|||
static inline void render_child(obs_source_t *transition,
|
||||
obs_source_t *child, size_t idx)
|
||||
{
|
||||
uint32_t cx = transition->transition_actual_cx;
|
||||
uint32_t cy = transition->transition_actual_cy;
|
||||
uint32_t cx = get_cx(transition);
|
||||
uint32_t cy = get_cy(transition);
|
||||
struct vec4 blank;
|
||||
if (!child)
|
||||
return;
|
||||
|
@ -605,6 +620,7 @@ static inline void render_child(obs_source_t *transition,
|
|||
if (gs_texrender_begin(transition->transition_texrender[idx], cx, cy)) {
|
||||
vec4_zero(&blank);
|
||||
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_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)
|
||||
{
|
||||
struct transition_state state;
|
||||
struct matrix4 matrices[2];
|
||||
bool locked = false;
|
||||
bool stopped = false;
|
||||
bool video_stopped = false;
|
||||
|
@ -655,6 +672,8 @@ void obs_transition_video_render(obs_source_t *transition,
|
|||
}
|
||||
}
|
||||
copy_transition_state(transition, &state);
|
||||
matrices[0] = transition->transition_matrices[0];
|
||||
matrices[1] = transition->transition_matrices[1];
|
||||
|
||||
unlock_transition(transition);
|
||||
|
||||
|
@ -663,6 +682,8 @@ void obs_transition_video_render(obs_source_t *transition,
|
|||
|
||||
if (state.transitioning_video && locked && callback) {
|
||||
gs_texture_t *tex[2];
|
||||
uint32_t cx;
|
||||
uint32_t cy;
|
||||
|
||||
for (size_t i = 0; i < 2; i++) {
|
||||
if (state.s[i]) {
|
||||
|
@ -675,17 +696,26 @@ void obs_transition_video_render(obs_source_t *transition,
|
|||
}
|
||||
}
|
||||
|
||||
callback(transition->context.data, tex[0], tex[1], t,
|
||||
transition->transition_actual_cx,
|
||||
transition->transition_actual_cy);
|
||||
cx = get_cx(transition);
|
||||
cy = get_cy(transition);
|
||||
if (cx && cy)
|
||||
callback(transition->context.data, tex[0], tex[1], t,
|
||||
cx, cy);
|
||||
|
||||
} 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]);
|
||||
|
||||
gs_matrix_pop();
|
||||
}
|
||||
} else {
|
||||
if (state.s[0])
|
||||
if (state.s[0]) {
|
||||
gs_matrix_push();
|
||||
gs_matrix_mul(&matrices[0]);
|
||||
obs_source_video_render(state.s[0]);
|
||||
gs_matrix_pop();
|
||||
}
|
||||
}
|
||||
|
||||
if (locked)
|
||||
|
|
|
@ -338,7 +338,7 @@ static obs_source_t *obs_source_create_internal(const char *id,
|
|||
if (!source->context.data)
|
||||
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);
|
||||
obs_source_dosignal(source, "source_create", NULL);
|
||||
|
||||
|
@ -405,6 +405,14 @@ obs_source_t *obs_source_duplicate(obs_source_t *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();
|
||||
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);
|
||||
|
||||
blog(source->context.private ? LOG_DEBUG : LOG_INFO,
|
||||
"%ssource '%s' destroyed",
|
||||
blog(LOG_DEBUG, "%ssource '%s' destroyed",
|
||||
source->context.private ? "private " : "",
|
||||
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"))
|
||||
return;
|
||||
|
||||
if (os_atomic_inc_long(&source->show_refs) == 1) {
|
||||
obs_source_enum_active_tree(source, show_tree, NULL);
|
||||
}
|
||||
os_atomic_inc_long(&source->show_refs);
|
||||
obs_source_enum_active_tree(source, show_tree, NULL);
|
||||
|
||||
if (type == MAIN_VIEW) {
|
||||
if (os_atomic_inc_long(&source->activate_refs) == 1) {
|
||||
obs_source_enum_active_tree(source, activate_tree,
|
||||
NULL);
|
||||
}
|
||||
os_atomic_inc_long(&source->activate_refs);
|
||||
obs_source_enum_active_tree(source, activate_tree, 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"))
|
||||
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);
|
||||
}
|
||||
|
||||
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,
|
||||
NULL);
|
||||
}
|
||||
|
@ -1268,7 +1274,7 @@ static inline bool set_planar420_sizes(struct obs_source *source,
|
|||
size += size/2;
|
||||
|
||||
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_plane_offset[0] = (int)(frame->data[1] - 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;
|
||||
|
||||
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_plane_offset[0] = (int)(frame->data[1] - frame->data[0]);
|
||||
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);
|
||||
|
||||
if (source && filter)
|
||||
blog(source->context.private ? LOG_DEBUG : LOG_INFO,
|
||||
"- filter '%s' (%s) added to source '%s'",
|
||||
blog(LOG_DEBUG, "- filter '%s' (%s) added to source '%s'",
|
||||
filter->context.name, filter->info.id,
|
||||
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);
|
||||
|
||||
if (source && filter)
|
||||
blog(source->context.private ? LOG_DEBUG : LOG_INFO,
|
||||
"- filter '%s' (%s) removed from source '%s'",
|
||||
blog(LOG_DEBUG, "- filter '%s' (%s) removed from source '%s'",
|
||||
filter->context.name, filter->info.id,
|
||||
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"))
|
||||
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;
|
||||
char *prev_name = bstrdup(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)
|
||||
{
|
||||
obs_source_t *target, *parent;
|
||||
uint32_t target_flags, parent_flags;
|
||||
uint32_t parent_flags;
|
||||
int cx, cy;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
target_flags = target->info.output_flags;
|
||||
parent_flags = parent->info.output_flags;
|
||||
cx = get_base_width(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;
|
||||
gs_texture_t *texture;
|
||||
uint32_t target_flags, parent_flags;
|
||||
uint32_t parent_flags;
|
||||
|
||||
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)
|
||||
return;
|
||||
|
||||
target_flags = target->info.output_flags;
|
||||
parent_flags = parent->info.output_flags;
|
||||
|
||||
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;
|
||||
gs_texture_t *texture;
|
||||
uint32_t target_flags, parent_flags;
|
||||
uint32_t parent_flags;
|
||||
|
||||
if (!obs_ptr_valid(filter, "obs_source_process_filter_end"))
|
||||
return;
|
||||
|
||||
target = obs_filter_get_target(filter);
|
||||
parent = obs_filter_get_parent(filter);
|
||||
target_flags = target->info.output_flags;
|
||||
parent_flags = parent->info.output_flags;
|
||||
|
||||
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)
|
||||
{
|
||||
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->context.data) {
|
||||
child->info.enum_active_sources(child->context.data,
|
||||
|
|
|
@ -126,7 +126,8 @@ static inline gs_effect_t *get_scale_effect_internal(
|
|||
switch (video->scale_type) {
|
||||
case OBS_SCALE_BILINEAR: return video->default_effect;
|
||||
case OBS_SCALE_LANCZOS: return video->lanczos_effect;
|
||||
case OBS_SCALE_BICUBIC:;
|
||||
case OBS_SCALE_BICUBIC:
|
||||
default:;
|
||||
}
|
||||
|
||||
return video->bicubic_effect;
|
||||
|
|
|
@ -163,7 +163,7 @@ static void log_available_memory(void)
|
|||
#ifdef _WIN64
|
||||
const char *note = "";
|
||||
#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
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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*);
|
||||
|
||||
static void log_aero(void)
|
||||
|
@ -219,6 +238,7 @@ void log_system_info(void)
|
|||
log_processor_cores();
|
||||
log_available_memory();
|
||||
log_windows_version();
|
||||
log_admin_status();
|
||||
log_aero();
|
||||
}
|
||||
|
||||
|
|
|
@ -231,6 +231,7 @@ static int obs_init_graphics(struct obs_video_info *ovi)
|
|||
struct obs_core_video *video = &obs->video;
|
||||
uint8_t transparent_tex_data[2*2*4] = {0};
|
||||
const uint8_t *transparent_tex = transparent_tex_data;
|
||||
struct gs_sampler_info point_sampler = {0};
|
||||
bool success = true;
|
||||
int errorcode;
|
||||
|
||||
|
@ -296,6 +297,8 @@ static int obs_init_graphics(struct obs_video_info *ovi)
|
|||
NULL);
|
||||
bfree(filename);
|
||||
|
||||
video->point_sampler = gs_samplerstate_create(&point_sampler);
|
||||
|
||||
obs->video.transparent_texture = gs_texture_create(2, 2, GS_RGBA, 1,
|
||||
&transparent_tex, 0);
|
||||
|
||||
|
@ -315,6 +318,8 @@ static int obs_init_graphics(struct obs_video_info *ovi)
|
|||
success = false;
|
||||
if (!video->transparent_texture)
|
||||
success = false;
|
||||
if (!video->point_sampler)
|
||||
success = false;
|
||||
|
||||
gs_leave_context();
|
||||
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_samplerstate_destroy(video->point_sampler);
|
||||
|
||||
gs_effect_destroy(video->default_effect);
|
||||
gs_effect_destroy(video->default_rect_effect);
|
||||
gs_effect_destroy(video->opaque_effect);
|
||||
|
|
10
libobs/obs.h
10
libobs/obs.h
|
@ -112,6 +112,8 @@ enum obs_allow_direct_render {
|
|||
};
|
||||
|
||||
enum obs_scale_type {
|
||||
OBS_SCALE_DISABLE,
|
||||
OBS_SCALE_POINT,
|
||||
OBS_SCALE_BICUBIC,
|
||||
OBS_SCALE_BILINEAR,
|
||||
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);
|
||||
|
||||
/** Logs loaded modules */
|
||||
EXPORT void obs_log_loaded_modules(void);
|
||||
|
||||
/** Returns the module file name */
|
||||
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,
|
||||
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_end(obs_sceneitem_t *item);
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
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,
|
||||
const char *name, const char *goto_token)
|
||||
{
|
||||
|
|
|
@ -237,9 +237,11 @@ static inline void dstr_copy_dstr(struct dstr *dst, const struct dstr *src)
|
|||
if (dst->array)
|
||||
dstr_free(dst);
|
||||
|
||||
dstr_ensure_capacity(dst, src->len + 1);
|
||||
memcpy(dst->array, src->array, src->len + 1);
|
||||
dst->len = src->len;
|
||||
if (src->len) {
|
||||
dstr_ensure_capacity(dst, src->len + 1);
|
||||
memcpy(dst->array, src->array, src->len + 1);
|
||||
dst->len = src->len;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void dstr_reserve(struct dstr *dst, const size_t capacity)
|
||||
|
|
|
@ -69,11 +69,12 @@ uint64_t os_gettime_ns(void)
|
|||
return f();
|
||||
}
|
||||
|
||||
/* gets the location ~/Library/Application Support/[name] */
|
||||
int os_get_config_path(char *dst, size_t size, const char *name)
|
||||
/* gets the location [domain mask]/Library/Application Support/[name] */
|
||||
static int os_get_path_internal(char *dst, size_t size, const char *name,
|
||||
NSSearchPathDomainMask domainMask)
|
||||
{
|
||||
NSArray *paths = NSSearchPathForDirectoriesInDomains(
|
||||
NSApplicationSupportDirectory, NSUserDomainMask, YES);
|
||||
NSApplicationSupportDirectory, domainMask, YES);
|
||||
|
||||
if([paths count] == 0)
|
||||
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);
|
||||
}
|
||||
|
||||
char *os_get_config_path_ptr(const char *name)
|
||||
static char *os_get_path_ptr_internal(const char *name,
|
||||
NSSearchPathDomainMask domainMask)
|
||||
{
|
||||
NSArray *paths = NSSearchPathForDirectoriesInDomains(
|
||||
NSApplicationSupportDirectory, NSUserDomainMask, YES);
|
||||
NSApplicationSupportDirectory, domainMask, YES);
|
||||
|
||||
if([paths count] == 0)
|
||||
bcrash("Could not get home directory (platform-cocoa)");
|
||||
|
@ -113,6 +115,26 @@ char *os_get_config_path_ptr(const char *name)
|
|||
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 {
|
||||
int64_t last_cpu_time;
|
||||
int64_t last_sys_time;
|
||||
|
|
|
@ -49,7 +49,11 @@ void *os_dlopen(const char *path)
|
|||
return NULL;
|
||||
|
||||
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"))
|
||||
#endif
|
||||
dstr_cat(&dylib_name, ".so");
|
||||
|
||||
void *res = dlopen(dylib_name.array, RTLD_LAZY);
|
||||
|
@ -68,7 +72,8 @@ void *os_dlsym(void *module, const char *func)
|
|||
|
||||
void os_dlclose(void *module)
|
||||
{
|
||||
dlclose(module);
|
||||
if (module)
|
||||
dlclose(module);
|
||||
}
|
||||
|
||||
#if !defined(__APPLE__)
|
||||
|
@ -236,6 +241,20 @@ char *os_get_config_path_ptr(const char *name)
|
|||
#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
|
||||
|
||||
bool os_file_exists(const char *path)
|
||||
|
|
|
@ -208,12 +208,13 @@ uint64_t os_gettime_ns(void)
|
|||
return (uint64_t)time_val;
|
||||
}
|
||||
|
||||
/* returns %appdata%\[name] on windows */
|
||||
int os_get_config_path(char *dst, size_t size, const char *name)
|
||||
/* returns [folder]\[name] on windows */
|
||||
static int os_get_path_internal(char *dst, size_t size, const char *name,
|
||||
int folder)
|
||||
{
|
||||
wchar_t path_utf16[MAX_PATH];
|
||||
|
||||
SHGetFolderPathW(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT,
|
||||
SHGetFolderPathW(NULL, folder, NULL, SHGFP_TYPE_CURRENT,
|
||||
path_utf16);
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
char *os_get_config_path_ptr(const char *name)
|
||||
static char *os_get_path_ptr_internal(const char *name, int folder)
|
||||
{
|
||||
char *ptr;
|
||||
wchar_t path_utf16[MAX_PATH];
|
||||
struct dstr path;
|
||||
|
||||
SHGetFolderPathW(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT,
|
||||
SHGetFolderPathW(NULL, folder, NULL, SHGFP_TYPE_CURRENT,
|
||||
path_utf16);
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
WIN32_FIND_DATAW wfd;
|
||||
|
|
|
@ -633,3 +633,26 @@ int os_mkdirs(const char *dir)
|
|||
dstr_free(&dir_str);
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -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 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 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 const char *os_get_path_extension(const char *path);
|
||||
|
||||
struct os_dir;
|
||||
typedef struct os_dir os_dir_t;
|
||||
|
||||
|
|
|
@ -228,7 +228,7 @@ install_obs_core(obs)
|
|||
install_obs_data(obs data obs-studio)
|
||||
|
||||
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
|
||||
DESTINATION share/icons/hicolor/256x256/apps)
|
||||
DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/icons/hicolor/256x256/apps)
|
||||
endif()
|
||||
|
|
|
@ -189,7 +189,7 @@ static void PopulateBitrateMap()
|
|||
<< " kbit/s: '" << EncoderName(entry.second) << "' ("
|
||||
<< entry.second << ')';
|
||||
|
||||
blog(LOG_INFO, "AAC encoder bitrate mapping:%s",
|
||||
blog(LOG_DEBUG, "AAC encoder bitrate mapping:%s",
|
||||
ss.str().c_str());
|
||||
});
|
||||
}
|
||||
|
|
|
@ -116,4 +116,7 @@ Name=Tiếng Việt
|
|||
Name=தமிழ்
|
||||
|
||||
[lt-LT]
|
||||
Name=Lietuvių kalba
|
||||
Name=Lietuvių kalba
|
||||
|
||||
[et-EE]
|
||||
Name=eesti keel
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
Language="العربية"
|
||||
Region="جامعة الدول العربية"
|
||||
Region="الوطن العربي"
|
||||
|
||||
OK="موافق"
|
||||
Apply="تطبيق"
|
||||
|
@ -91,7 +91,9 @@ Output.ConnectFail.Error="حدث خطأ غير متوقع عند محاولة ا
|
|||
Output.ConnectFail.Disconnected="تم قطع الاتصال من السيرفر."
|
||||
|
||||
Output.RecordFail.Title="فشل في بدء التسجيل"
|
||||
Output.RecordNoSpace.Msg="لا توجد مساحة كافية على القرص لمتابعة التسجيل."
|
||||
Output.RecordError.Title="خطأ في التسجيل"
|
||||
Output.RecordError.Msg="حدث خطأ غير محدد أثناء التسجيل."
|
||||
|
||||
Output.BadPath.Title="مسار الملف غير صحيح"
|
||||
Output.BadPath.Text="مسار الإخراج ملف تكوين غير صالح. الرجاء التحقق من الإعدادات الخاصة بك للتأكد من أنه تم تعيين مسار ملف صحيح."
|
||||
|
@ -109,6 +111,10 @@ LicenseAgreement.Exit="خروج"
|
|||
Remux.SourceFile="تسجيل OBS"
|
||||
Remux.TargetFile="الملف الهدف"
|
||||
Remux.OBSRecording="تسجيل OBS"
|
||||
Remux.SelectRecording="إختر تسجيل OBS …"
|
||||
Remux.SelectTarget="إختر الملف الهدف …"
|
||||
Remux.FileExistsTitle="الملف الهدف موجود"
|
||||
Remux.FileExists="الملف الهدف موجود، هل تريد استبداله؟"
|
||||
|
||||
UpdateAvailable="تحديث جديد متوفر"
|
||||
UpdateAvailable.Text="الإصدار %1.%2.%3 متوفر الآن. <a href='%4'>انقر هنا للتتحميل</a>"
|
||||
|
@ -125,6 +131,7 @@ Basic.DisplayCapture="التقاط الشاشة"
|
|||
|
||||
Basic.Main.PreviewConextMenu.Enable="تمكين المعاينة"
|
||||
|
||||
|
||||
Deinterlacing.Discard="تجاهل"
|
||||
|
||||
Basic.Main.AddSceneDlg.Title="أضف المشهد"
|
||||
|
@ -230,6 +237,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="التحرك &للقمة"
|
|||
Basic.MainMenu.Edit.Order.MoveToBottom="التحرك &للقاع"
|
||||
Basic.MainMenu.Edit.AdvAudio="&خصائص الصوت المتقدمة"
|
||||
|
||||
|
||||
Basic.MainMenu.SceneCollection="&مجموعة المشاهد"
|
||||
Basic.MainMenu.Profile="&الملف الشخصي"
|
||||
|
||||
|
@ -247,6 +255,10 @@ Basic.Settings.Confirm="لديك تغييرات غير محفوظة. هل تري
|
|||
Basic.Settings.General="عام"
|
||||
Basic.Settings.General.Theme="السمة"
|
||||
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.StreamType="نوع البث"
|
||||
|
@ -254,9 +266,22 @@ Basic.Settings.Stream.StreamType="نوع البث"
|
|||
Basic.Settings.Output="المخرج"
|
||||
Basic.Settings.Output.Format="صيغة التسجيل"
|
||||
Basic.Settings.Output.Encoder="مرمّز"
|
||||
Basic.Settings.Output.SelectDirectory="حدد دليل التسجيل"
|
||||
Basic.Settings.Output.SelectFile="حدد ملف التسجيل"
|
||||
Basic.Settings.Output.Mode="نوع المخرج"
|
||||
Basic.Settings.Output.Mode.Simple="بسيط"
|
||||
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.AudioBitrate="معدل البت للصوت"
|
||||
Basic.Settings.Output.Reconnect="إعادة الاتصال تلقائياً"
|
||||
|
@ -264,6 +289,7 @@ Basic.Settings.Output.RetryDelay="إعادة محاولة تأخير (ثوان)"
|
|||
Basic.Settings.Output.MaxRetries="أقصى عدد للمحاولات"
|
||||
|
||||
|
||||
Basic.Settings.Output.Adv.Recording.Type.Standard="قياسي"
|
||||
Basic.Settings.Output.Adv.FFmpeg.SaveFilter.All="كل الملفات"
|
||||
Basic.Settings.Output.Adv.FFmpeg.Format="صيغة الحاوية"
|
||||
|
||||
|
|
|
@ -111,6 +111,7 @@ Basic.DisplayCapture="Заснемане на екрана"
|
|||
Basic.Main.PreviewConextMenu.Enable="Разреши преглед"
|
||||
|
||||
|
||||
|
||||
Basic.Main.AddSceneDlg.Title="Добави сцена"
|
||||
Basic.Main.AddSceneDlg.Text="Моля, въведете името на сцената"
|
||||
|
||||
|
@ -222,6 +223,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="Премести &най-отгоре"
|
|||
Basic.MainMenu.Edit.Order.MoveToBottom="Премести най-о&тдолу"
|
||||
|
||||
|
||||
|
||||
Basic.MainMenu.Help="&Помощ"
|
||||
Basic.MainMenu.Help.Logs="\"Log\" &файлове"
|
||||
Basic.MainMenu.Help.Logs.UploadCurrentLog="Качи &текущия \"Log\" файл"
|
||||
|
|
|
@ -87,6 +87,7 @@ ConfirmExit.Text="OBS és actualment actiu. Tots els directes/gravacions s'atur
|
|||
|
||||
ConfirmRemove.Title="Confirmeu la supressió"
|
||||
ConfirmRemove.Text="Esteu segur que voleu suprimir «$1»?"
|
||||
ConfirmRemove.TextMultiple="¿Segur que vols esborrar %1 elements?"
|
||||
|
||||
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."
|
||||
|
@ -144,6 +145,12 @@ Basic.DisplayCapture="Captura de pantalla"
|
|||
|
||||
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.Discard="Descarta"
|
||||
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.NoProperties="No hi ha propietats disponibles"
|
||||
Basic.PropertiesWindow.AddFiles="Afegeix fitxers"
|
||||
Basic.PropertiesWindow.AddDir="Afegir directori"
|
||||
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.AddEditableListEntry="Afegeix una entrada a '%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.StartStreaming="Inicia l'enregistrament"
|
||||
Basic.Main.StopRecording="Atura l'enregistrament"
|
||||
Basic.Main.StoppingRecording="Aturant l'enregistrament..."
|
||||
Basic.Main.StopStreaming="Atura l'enregistrament"
|
||||
Basic.Main.StoppingStreaming="Aturant la transmissió..."
|
||||
Basic.Main.ForceStopStreaming="Atura l'enregistrament (descarta el retard)"
|
||||
|
||||
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.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.Profile="&Perfil"
|
||||
|
||||
|
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="Tema"
|
|||
Basic.Settings.General.Language="Llengua"
|
||||
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.HideProjectorCursor="Amaga el cursor sobre projectors"
|
||||
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.CenterSnapping="Ajustar les fonts al centre horitzontal i vertical"
|
||||
Basic.Settings.General.SourceSnapping="Ajustar les fonts a altres fonts"
|
||||
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.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.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.Audio.BufferingTime="Temps de buffer d'àudio"
|
||||
Basic.Settings.Advanced.Video.ColorFormat="Format del color"
|
||||
|
|
|
@ -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.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.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"
|
||||
|
||||
ScaleFiltering="Filtrování rozsahu"
|
||||
ScaleFiltering.Point="Bod"
|
||||
ScaleFiltering.Bilinear="Bilineární"
|
||||
ScaleFiltering.Bicubic="Bikubický"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
|
||||
Deinterlacing="Odstranění prokladu"
|
||||
Deinterlacing.Discard="Zahození"
|
||||
Deinterlacing.Retro="Retro"
|
||||
|
@ -186,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="Nastavení upraveno"
|
|||
Basic.PropertiesWindow.Confirm="Chcete ponechat neuložená nastavení ?"
|
||||
Basic.PropertiesWindow.NoProperties="Nejsou k dispozici žádné vlatnosti"
|
||||
Basic.PropertiesWindow.AddFiles="Přidat soubory"
|
||||
Basic.PropertiesWindow.AddDir="Přidat složku"
|
||||
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.AddEditableListEntry="Přidat položku do '%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.StartStreaming="Začít vysílat"
|
||||
Basic.Main.StopRecording="Zastavit nahrávání"
|
||||
Basic.Main.StoppingRecording="Zastavuji nahrává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.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.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.Profile="&Profil"
|
||||
|
||||
|
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="Vzhled"
|
|||
Basic.Settings.General.Language="Jazyk"
|
||||
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.HideProjectorCursor="Skrýt kurzor přes projektor"
|
||||
Basic.Settings.General.Snapping="Přichycování zdrojů"
|
||||
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.SourceSnapping="Přichytávat zdroje k ostatním zdrojům"
|
||||
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.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.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.Audio.BufferingTime="Čas vyrovnávací paměti zvuku"
|
||||
Basic.Settings.Advanced.Video.ColorFormat="Formát barev"
|
||||
|
|
|
@ -140,6 +140,7 @@ Basic.DisplayCapture="Indfang display"
|
|||
|
||||
Basic.Main.PreviewConextMenu.Enable="Aktiver visning"
|
||||
|
||||
|
||||
Deinterlacing="Deinterlacing"
|
||||
Deinterlacing.Discard="Kassér"
|
||||
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.AdvAudio="&Avancerede lydegenskaber"
|
||||
|
||||
|
||||
Basic.MainMenu.SceneCollection="&Scenesamling"
|
||||
Basic.MainMenu.Profile="&Profil"
|
||||
|
||||
|
|
|
@ -87,6 +87,7 @@ ConfirmExit.Text="OBS ist derzeit aktiv. Alle Streams/Aufnahmen werden beendet.
|
|||
|
||||
ConfirmRemove.Title="Entfernen bestätigen"
|
||||
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.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"
|
||||
|
||||
ScaleFiltering="Skalierungsfilterung"
|
||||
ScaleFiltering.Point="Point"
|
||||
ScaleFiltering.Bilinear="Bilinear"
|
||||
ScaleFiltering.Bicubic="Bicubic"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
|
||||
Deinterlacing="Zeilenentflechtung (Deinterlacing)"
|
||||
Deinterlacing.Discard="Verwerfen"
|
||||
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.NoProperties="Keine Eigenschaften verfügbar"
|
||||
Basic.PropertiesWindow.AddFiles="Dateien hinzufügen"
|
||||
Basic.PropertiesWindow.AddDir="Verzeichnis 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.AddEditableListEntry="Eintrag zu '%1' hinzufügen"
|
||||
Basic.PropertiesWindow.EditEditableListEntry="Eintrag aus '%1' bearbeiten"
|
||||
|
@ -250,7 +259,9 @@ Basic.Main.Connecting="Verbinden..."
|
|||
Basic.Main.StartRecording="Aufnahme starten"
|
||||
Basic.Main.StartStreaming="Streaming starten"
|
||||
Basic.Main.StopRecording="Aufnahme stoppen"
|
||||
Basic.Main.StoppingRecording="Stoppe Aufnahme..."
|
||||
Basic.Main.StopStreaming="Streaming stoppen"
|
||||
Basic.Main.StoppingStreaming="Stoppe Stream..."
|
||||
Basic.Main.ForceStopStreaming="Streaming stoppen (Verzögerung verwerfen)"
|
||||
|
||||
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.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.Profile="&Profil"
|
||||
|
||||
|
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="Motiv"
|
|||
Basic.Settings.General.Language="Sprache"
|
||||
Basic.Settings.General.WarnBeforeStartingStream="Bestätigungsdialog beim Streamstart 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.ScreenSnapping="Quellen am Bildschirmrand ausrichten"
|
||||
Basic.Settings.General.CenterSnapping="Quellen zur horizontalen und vertikalen Mitte ausrichten"
|
||||
Basic.Settings.General.SourceSnapping="Quellen an anderen Quellen ausrichten"
|
||||
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.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.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.Audio.BufferingTime="Audio Pufferungszeit"
|
||||
Basic.Settings.Advanced.Video.ColorFormat="Farbformat"
|
||||
|
|
|
@ -112,6 +112,7 @@ Basic.DisplayCapture="Σύλληψη Οθόνης"
|
|||
Basic.Main.PreviewConextMenu.Enable="Ενεργοποίηση Προεπισκόπησης"
|
||||
|
||||
|
||||
|
||||
Basic.Main.AddSceneDlg.Title="Προσθήκη Σκηνής"
|
||||
Basic.Main.AddSceneDlg.Text="Παρακαλώ εισάγετε το όνομα της σκηνής"
|
||||
|
||||
|
@ -231,6 +232,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="Μετακίνηση στην Κορυφή(
|
|||
Basic.MainMenu.Edit.Order.MoveToBottom="Μετακίνηση τελέιως Κάτω(&B)"
|
||||
Basic.MainMenu.Edit.AdvAudio="Ιδιότητες(&A) Ήχου για Προχωρημένους"
|
||||
|
||||
|
||||
Basic.MainMenu.SceneCollection="&Συλλογή Σκηνών"
|
||||
Basic.MainMenu.Profile="&Προφίλ"
|
||||
|
||||
|
|
|
@ -101,6 +101,7 @@ ConfirmExit.Text="OBS is currently active. All streams/recordings will be shut
|
|||
# confirm delete dialog box
|
||||
ConfirmRemove.Title="Confirm Remove"
|
||||
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.ConnectFail.Title="Failed to connect"
|
||||
|
@ -168,6 +169,13 @@ Basic.DisplayCapture="Display Capture"
|
|||
# display context menu
|
||||
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.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.NoProperties="No properties available"
|
||||
Basic.PropertiesWindow.AddFiles="Add Files"
|
||||
Basic.PropertiesWindow.AddDir="Add Directory"
|
||||
Basic.PropertiesWindow.AddURL="Add Path/URL"
|
||||
Basic.PropertiesWindow.AddEditableListDir="Add directory to '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListFiles="Add files to '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListEntry="Add entry to '%1'"
|
||||
Basic.PropertiesWindow.EditEditableListEntry="Edit entry from '%1'"
|
||||
|
@ -291,7 +301,9 @@ Basic.Main.Connecting="Connecting..."
|
|||
Basic.Main.StartRecording="Start Recording"
|
||||
Basic.Main.StartStreaming="Start Streaming"
|
||||
Basic.Main.StopRecording="Stop Recording"
|
||||
Basic.Main.StoppingRecording="Stopping Recording..."
|
||||
Basic.Main.StopStreaming="Stop Streaming"
|
||||
Basic.Main.StoppingStreaming="Stopping Stream..."
|
||||
Basic.Main.ForceStopStreaming="Stop Streaming (discard delay)"
|
||||
|
||||
# basic mode file menu
|
||||
|
@ -312,6 +324,7 @@ Basic.MainMenu.Edit.Undo="&Undo"
|
|||
Basic.MainMenu.Edit.Redo="&Redo"
|
||||
Basic.MainMenu.Edit.UndoAction="&Undo $1"
|
||||
Basic.MainMenu.Edit.RedoAction="&Redo $1"
|
||||
Basic.MainMenu.Edit.LockPreview="&Lock Preview"
|
||||
Basic.MainMenu.Edit.Transform="&Transform"
|
||||
Basic.MainMenu.Edit.Transform.EditTransform="&Edit 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.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.MainMenu.SceneCollection="&Scene Collection"
|
||||
Basic.MainMenu.Profile="&Profile"
|
||||
|
@ -355,11 +375,14 @@ Basic.Settings.General.Theme="Theme"
|
|||
Basic.Settings.General.Language="Language"
|
||||
Basic.Settings.General.WarnBeforeStartingStream="Show confirmation dialog when starting 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.ScreenSnapping="Snap Sources to edge of screen"
|
||||
Basic.Settings.General.CenterSnapping="Snap Sources to horizontal and vertical center"
|
||||
Basic.Settings.General.SourceSnapping="Snap Sources to other sources"
|
||||
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.Settings.Stream="Stream"
|
||||
|
@ -488,6 +511,11 @@ Basic.Settings.Audio.UnknownAudioDevice="[Device not connected or not available]
|
|||
|
||||
# basic mode 'advanced' settings
|
||||
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.Audio.BufferingTime="Audio Buffering Time"
|
||||
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.Preserve="Preserve cutoff point (increase delay) when reconnecting"
|
||||
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
|
||||
Basic.AdvAudio="Advanced Audio Properties"
|
||||
|
|
|
@ -87,6 +87,7 @@ ConfirmExit.Text="OBS esta siendo usado. Todas las transmisiones/grabaciones ser
|
|||
|
||||
ConfirmRemove.Title="Confirmar borrado"
|
||||
ConfirmRemove.Text="¿Seguro que desea eliminar '$1'?"
|
||||
ConfirmRemove.TextMultiple="¿Seguro que quieres eliminar %1 elementos?"
|
||||
|
||||
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."
|
||||
|
@ -144,6 +145,12 @@ Basic.DisplayCapture="Captura de pantalla"
|
|||
|
||||
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.Discard="Descartar"
|
||||
Deinterlacing.Retro="Retro"
|
||||
|
@ -186,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="Configuración cambiada"
|
|||
Basic.PropertiesWindow.Confirm="Hay cambios sin guardar. ¿Deseas conservarlos?"
|
||||
Basic.PropertiesWindow.NoProperties="No hay propiedades disponibles"
|
||||
Basic.PropertiesWindow.AddFiles="Agregar archivos"
|
||||
Basic.PropertiesWindow.AddDir="Añadir Carpeta"
|
||||
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.AddEditableListEntry="Agregar entrada a '%1'"
|
||||
Basic.PropertiesWindow.EditEditableListEntry="Editar entrada de '%1'"
|
||||
|
@ -250,7 +259,9 @@ Basic.Main.Connecting="Conectando..."
|
|||
Basic.Main.StartRecording="Iniciar grabación"
|
||||
Basic.Main.StartStreaming="Iniciar Transmisión"
|
||||
Basic.Main.StopRecording="Detener grabación"
|
||||
Basic.Main.StoppingRecording="Deteniendo la grabación..."
|
||||
Basic.Main.StopStreaming="Detener Transmisión"
|
||||
Basic.Main.StoppingStreaming="Deteniendo la trasmisión..."
|
||||
Basic.Main.ForceStopStreaming="Parar Transmisión (descartar retraso)"
|
||||
|
||||
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.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.Profile="&Perfil"
|
||||
|
||||
|
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="Tema"
|
|||
Basic.Settings.General.Language="Idioma"
|
||||
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.HideProjectorCursor="Ocultar el cursor sobre proyectores"
|
||||
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.CenterSnapping="Ajustar las fuentes al centro horizontal y vertical"
|
||||
Basic.Settings.General.SourceSnapping="Ajustar las fuentes a otras fuentes"
|
||||
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.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.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.Audio.BufferingTime="Tiempo de búfer de audio"
|
||||
Basic.Settings.Advanced.Video.ColorFormat="Formato de color"
|
||||
|
|
255
obs/data/locale/et-EE.ini
Normal file
255
obs/data/locale/et-EE.ini
Normal 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"
|
||||
|
||||
|
||||
|
||||
|
|
@ -87,6 +87,7 @@ ConfirmExit.Text="OBS jardunean dago. Transmisio/grabazio guztiak itzaliko dira.
|
|||
|
||||
ConfirmRemove.Title="Baieztatu kentzea"
|
||||
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.BadPath="Helburu edo konexio-URL okerra. Egiaztatu zure ezarpenak baliozkoak direla baieztatzeko."
|
||||
|
@ -117,8 +118,8 @@ LicenseAgreement.Exit="Irten"
|
|||
|
||||
Remux.SourceFile="OBS Grabazioa"
|
||||
Remux.TargetFile="Helburu-fitxategia"
|
||||
Remux.Remux="Bermultiplexatu"
|
||||
Remux.OBSRecording="OBS Grabazioa"
|
||||
Remux.Remux="Multiplexatu"
|
||||
Remux.OBSRecording="OBS grabazioa"
|
||||
Remux.FinishedTitle="Bihurketa amaituta"
|
||||
Remux.Finished="Grabazioa bihurtuta"
|
||||
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.FileExistsTitle="Helburu-fitxategia badago"
|
||||
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?"
|
||||
|
||||
UpdateAvailable="Eguneraketa eskuragarria"
|
||||
|
@ -134,16 +135,22 @@ UpdateAvailable.Text="%1.%2.%3 bertsioa eskuragarri dago. <a href='%4'>Klikatu
|
|||
|
||||
Basic.DesktopDevice1="Mahaigaineko audioa"
|
||||
Basic.DesktopDevice2="Mahaigaineko audioa 2"
|
||||
Basic.AuxDevice1="Mik/Osag"
|
||||
Basic.AuxDevice2="Mik/Osag 2"
|
||||
Basic.AuxDevice1="Mikro/Osag"
|
||||
Basic.AuxDevice2="Mikro/Osag 2"
|
||||
Basic.AuxDevice3="Mik/Osag 3"
|
||||
Basic.AuxDevice4="Mik/Osag 4"
|
||||
Basic.AuxDevice4="Mikro/Osag 4"
|
||||
|
||||
Basic.Scene="Eszena"
|
||||
Basic.DisplayCapture="Pantaila-kaptura"
|
||||
|
||||
Basic.Main.PreviewConextMenu.Enable="Gaitu aurrebista"
|
||||
|
||||
ScaleFiltering="Eskalaren iragazketa"
|
||||
ScaleFiltering.Point="Puntua"
|
||||
ScaleFiltering.Bilinear="Bilineala"
|
||||
ScaleFiltering.Bicubic="Bikubikoa"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
|
||||
Deinterlacing="Desgurutzelarkatzea"
|
||||
Deinterlacing.Discard="Baztertu"
|
||||
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.NoProperties="Ezaugarriak ez daude eskuragarri"
|
||||
Basic.PropertiesWindow.AddFiles="Gehitu fitxategiak"
|
||||
Basic.PropertiesWindow.AddDir="Gehitu direktorioa"
|
||||
Basic.PropertiesWindow.AddURL="Gehitu bidea/URL-a"
|
||||
Basic.PropertiesWindow.AddEditableListDir="Gehitu direktorioa '%1'-ra"
|
||||
Basic.PropertiesWindow.AddEditableListFiles="Gehitu fitxategiak '%1'-ra"
|
||||
Basic.PropertiesWindow.AddEditableListEntry="Gehitu sarrera '%1'-ra"
|
||||
Basic.PropertiesWindow.EditEditableListEntry="Editatu sarrera '%1'-tik"
|
||||
|
@ -250,14 +259,16 @@ Basic.Main.Connecting="Konektatzen..."
|
|||
Basic.Main.StartRecording="Hasi grabazioa"
|
||||
Basic.Main.StartStreaming="Hasi transmisioa"
|
||||
Basic.Main.StopRecording="Gelditu grabazioa"
|
||||
Basic.Main.StoppingRecording="Grabazioa gelditzen..."
|
||||
Basic.Main.StopStreaming="Gelditu transmisioa"
|
||||
Basic.Main.StoppingStreaming="Transmisioa gelditzen..."
|
||||
Basic.Main.ForceStopStreaming="Gelditu transmisioa (baztertu atzerapena)"
|
||||
|
||||
Basic.MainMenu.File="&Fitxategia"
|
||||
Basic.MainMenu.File.Export="&Esportatu"
|
||||
Basic.MainMenu.File.Import="&Inportatu"
|
||||
Basic.MainMenu.File.ShowRecordings="Erakutsi &Grabazioak"
|
||||
Basic.MainMenu.File.Remux="&Bermultiplexaketa Grabaketak"
|
||||
Basic.MainMenu.File.ShowRecordings="Erakutsi &grabazioak"
|
||||
Basic.MainMenu.File.Remux="Multiplexatu grabazioak"
|
||||
Basic.MainMenu.File.Settings="&Ezarpenak"
|
||||
Basic.MainMenu.File.ShowSettingsFolder="Erakutsi ezarpenen 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.RedoAction="&Berregin $1"
|
||||
Basic.MainMenu.Edit.Transform="&Eraldatu"
|
||||
Basic.MainMenu.Edit.Transform.EditTransform="E&ditatu Eraldaketa..."
|
||||
Basic.MainMenu.Edit.Transform.ResetTransform="&Berrezarri Eraldaketa"
|
||||
Basic.MainMenu.Edit.Transform.EditTransform="E&ditatu eraldaketa..."
|
||||
Basic.MainMenu.Edit.Transform.ResetTransform="&Berrezarri eraldaketa"
|
||||
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.FlipHorizontal="Irauli &horizontala"
|
||||
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.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.Profile="&Profila"
|
||||
|
||||
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.ShowLogs="&Erakutsi 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.WarnBeforeStartingStream="Erakutsi baieztapen elkarrizketa transmisioak hasterakoan"
|
||||
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.ScreenSnapping="Doitu iturburuak pantailaren ertzera"
|
||||
Basic.Settings.General.CenterSnapping="Doitu iturburuak bertikalki eta horizontalki erdira"
|
||||
Basic.Settings.General.SourceSnapping="Doitu iturburuak beste iturburuetara"
|
||||
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.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.UseStreamEncoder="(Erabili transmisio kodetzailea)"
|
||||
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.URL="Irteera URL-ra"
|
||||
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.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.Audio.BufferingTime="Audio bufferratze denbora"
|
||||
Basic.Settings.Advanced.Video.ColorFormat="Kolore formatua"
|
||||
|
|
|
@ -87,12 +87,13 @@ ConfirmExit.Text="OBS on aktiivinen. Kaikki lähetykset/tallennukset suljetaan.
|
|||
|
||||
ConfirmRemove.Title="Vahvista poisto"
|
||||
ConfirmRemove.Text="Haluatko varmasti poistaa '$1'?"
|
||||
ConfirmRemove.TextMultiple="Haluatko varmasti poistaa %1 kohdetta?"
|
||||
|
||||
Output.ConnectFail.Title="Yhdistäminen epäonnistui"
|
||||
Output.ConnectFail.BadPath="Viallinen polku tai yhteysosoite. Tarkista, että asetuksesi ovat kunnossa."
|
||||
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.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.RecordFail.Title="Tallennuksen aloittaminen epäonnistui"
|
||||
|
@ -127,7 +128,7 @@ Remux.SelectTarget="Valitse kohdetiedosto ..."
|
|||
Remux.FileExistsTitle="Kohdetiedosto on jo olemassa"
|
||||
Remux.FileExists="Kohdetiedosto on jo olemassa, haluatko korvata sen?"
|
||||
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.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.Scene="Skene"
|
||||
Basic.DisplayCapture="Kaappaa monitori"
|
||||
Basic.DisplayCapture="Monitori"
|
||||
|
||||
Basic.Main.PreviewConextMenu.Enable="Näytä esikatselu"
|
||||
|
||||
ScaleFiltering="Asteikko suodatus"
|
||||
|
||||
Deinterlacing="Lomituksen poisto (Deinterlace)"
|
||||
Deinterlacing.Discard="Ohita"
|
||||
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.NoProperties="Ominaisuuksia ei ole saatavilla"
|
||||
Basic.PropertiesWindow.AddFiles="Lisää tiedostoja"
|
||||
Basic.PropertiesWindow.AddDir="Lisää kansio"
|
||||
Basic.PropertiesWindow.AddURL="Lisää polku/URL-osoite"
|
||||
Basic.PropertiesWindow.AddEditableListDir="Lisää kansio \"%1\":n"
|
||||
Basic.PropertiesWindow.AddEditableListFiles="Lisää tiedostoja '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListEntry="Lisää 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.CenterLeft="Keskivasen"
|
||||
Basic.TransformWindow.Alignment.Center="Keskellä"
|
||||
Basic.TransformWindow.Alignment.CenterRight="Keskioieka"
|
||||
Basic.TransformWindow.Alignment.CenterRight="Keskioikea"
|
||||
Basic.TransformWindow.Alignment.BottomLeft="Alavasen"
|
||||
Basic.TransformWindow.Alignment.BottomCenter="Alakeski"
|
||||
Basic.TransformWindow.Alignment.BottomRight="Alaoikea"
|
||||
|
@ -242,7 +247,7 @@ Basic.TransformWindow.BoundsType.ScaleToHeight="Skaalaa korkeuden rajoihin"
|
|||
Basic.TransformWindow.BoundsType.Stretch="Venytä rajoihin"
|
||||
|
||||
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.Sources="Lähteet"
|
||||
|
@ -250,7 +255,9 @@ Basic.Main.Connecting="Yhdistetään..."
|
|||
Basic.Main.StartRecording="Aloita tallennus"
|
||||
Basic.Main.StartStreaming="Aloita lähetys"
|
||||
Basic.Main.StopRecording="Pysäytä tallennus"
|
||||
Basic.Main.StoppingRecording="Pysäytetään tallennusta..."
|
||||
Basic.Main.StopStreaming="Pysäytä lähetys"
|
||||
Basic.Main.StoppingStreaming="Pysäytetään lähetystä..."
|
||||
Basic.Main.ForceStopStreaming="Lopeta lähetys (ohita viive)"
|
||||
|
||||
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.EditTransform="M&uokkaa muunnosta..."
|
||||
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.Rotate90CCW="Pyöritä 90 astetta vastapäivään"
|
||||
Basic.MainMenu.Edit.Transform.Rotate180="Pyöritä 180 astetta"
|
||||
Basic.MainMenu.Edit.Transform.Rotate90CW="Kierrä 90 astetta myötäpäivään"
|
||||
Basic.MainMenu.Edit.Transform.Rotate90CCW="Kierrä 90 astetta vastapäivään"
|
||||
Basic.MainMenu.Edit.Transform.Rotate180="Kierrä 180 astetta"
|
||||
Basic.MainMenu.Edit.Transform.FlipHorizontal="Käännä &vaakatasossa"
|
||||
Basic.MainMenu.Edit.Transform.FlipVertical="Käännä &pystytasossa"
|
||||
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.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.Profile="&Profiili"
|
||||
|
||||
|
@ -296,10 +309,10 @@ Basic.MainMenu.Help.Logs="&Lokitiedostot"
|
|||
Basic.MainMenu.Help.Logs.ShowLogs="&Näytä lokitiedostot"
|
||||
Basic.MainMenu.Help.Logs.UploadCurrentLog="Lähetä n&ykyinen 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.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.Confirm="Sinulla on tallentamattomia muutoksia. Tallennetaanko?"
|
||||
|
||||
|
@ -307,12 +320,14 @@ Basic.Settings.General="Yleiset"
|
|||
Basic.Settings.General.Theme="Teema"
|
||||
Basic.Settings.General.Language="Kieli"
|
||||
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.ScreenSnapping="Kiinnitä lähteitä ruudun reunaan"
|
||||
Basic.Settings.General.CenterSnapping="Kiinnitä lähteitä vaaka- sekä pystysuunnan keskilinjaan"
|
||||
Basic.Settings.General.SourceSnapping="Kiinnitä lähteitä muihin lähteisiin"
|
||||
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.StreamType="Lähetystyyppi"
|
||||
|
@ -329,10 +344,10 @@ Basic.Settings.Output.Mode.Adv="Kehittynyt"
|
|||
Basic.Settings.Output.Mode.FFmpeg="FFmpeg ulostulo"
|
||||
Basic.Settings.Output.Simple.SavePath="Tallennuksen polku"
|
||||
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.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.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."
|
||||
|
@ -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.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.Encoder.Software="Software (x264)"
|
||||
Basic.Settings.Output.Simple.Encoder.Hardware.QSV="Laitteisto (QSV)"
|
||||
Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="Laitteisto (NVENC)"
|
||||
Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Software (x264 matala CPU-käyttö, lisää tiedostokokoa)"
|
||||
Basic.Settings.Output.Simple.Encoder.Software="Ohjelmistopohjainen (x264)"
|
||||
Basic.Settings.Output.Simple.Encoder.Hardware.QSV="Laitteistopohjainen (QSV)"
|
||||
Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="Laitteistopohjainen (NVENC)"
|
||||
Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Ohjelmistopohjainen (x264 matala CPU-käyttö, lisää tiedostokokoa)"
|
||||
Basic.Settings.Output.VideoBitrate="Kuvan bitrate"
|
||||
Basic.Settings.Output.AudioBitrate="Äänen bitrate"
|
||||
Basic.Settings.Output.Reconnect="Automaattinen uudelleenyhdistys"
|
||||
Basic.Settings.Output.RetryDelay="Uudelleenyrityksen viive (sekunteja)"
|
||||
Basic.Settings.Output.MaxRetries="Uudelleenyhdistyksien määrä"
|
||||
Basic.Settings.Output.Advanced="Käytä enkooderin lisäasetuksia"
|
||||
Basic.Settings.Output.EncoderPreset="Enkooderin asetus (korkeampi lisää tehon kulutusta)"
|
||||
Basic.Settings.Output.CustomEncoderSettings="Valinnaiset enkooderiasetukset"
|
||||
Basic.Settings.Output.CustomMuxerSettings="Valinnaiset muuntaja-asetukset"
|
||||
Basic.Settings.Output.NoSpaceFileName="Generoi tiedostonimi ilman välilyöntejä"
|
||||
Basic.Settings.Output.EncoderPreset="Enkooderin asetus (hitaampi asetus lisää suorittimen käyttöä)"
|
||||
Basic.Settings.Output.CustomEncoderSettings="Valinnaiset enkooderin asetukset"
|
||||
Basic.Settings.Output.CustomMuxerSettings="Valinnaiset muuntajan asetukset"
|
||||
Basic.Settings.Output.NoSpaceFileName="Luo tiedostonimi ilman välilyöntejä"
|
||||
|
||||
Basic.Settings.Output.Adv.Rescale="Uudelleenskaalaa ulostulo"
|
||||
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.FormatDefault="Oletusmuoto"
|
||||
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.AVEncoderDisable="Poista enkooderi käytöstä"
|
||||
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.AEncoderSettings="Ääni-enkooderin asetukset"
|
||||
Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="Mukserin asetukset"
|
||||
Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Äänienkooderin 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.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.Adapter="Näytönohjain:"
|
||||
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.DisableAeroWindows="Poista Aero käytöstä (Vain Windows)"
|
||||
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.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.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.AuxDevice2="Mic/Aux -äänilaite 2"
|
||||
Basic.Settings.Audio.AuxDevice3="Mic/Aux -äänilaite 3"
|
||||
Basic.Settings.Audio.EnablePushToMute="Käytä Push-to-mute"
|
||||
Basic.Settings.Audio.PushToMuteDelay="Push-to-mute viive"
|
||||
Basic.Settings.Audio.EnablePushToTalk="Käytä Push-to-talk"
|
||||
Basic.Settings.Audio.PushToTalkDelay="Push-to-talk viive"
|
||||
Basic.Settings.Audio.EnablePushToMute="Ota Push-to-mute käyttöön"
|
||||
Basic.Settings.Audio.PushToMuteDelay="Push-to-muten viive"
|
||||
Basic.Settings.Audio.EnablePushToTalk="Ota Push-to-talk käyttöön"
|
||||
Basic.Settings.Audio.PushToTalkDelay="Push-to-talkin viive"
|
||||
Basic.Settings.Audio.UnknownAudioDevice="[Laitetta ei ole yhdistetty tai se ei ole saatavissa]"
|
||||
|
||||
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.Video.ColorFormat="Värimuoto"
|
||||
Basic.Settings.Advanced.Video.ColorFormat="Väriformaatti"
|
||||
Basic.Settings.Advanced.Video.ColorSpace="YUV väriavaruus"
|
||||
Basic.Settings.Advanced.Video.ColorRange="YUV värialue"
|
||||
Basic.Settings.Advanced.Video.ColorRange.Partial="Osittainen"
|
||||
|
@ -448,7 +468,7 @@ Basic.AdvAudio.Name="Nimi"
|
|||
Basic.AdvAudio.Volume="Äänenvoimakkuus (%)"
|
||||
Basic.AdvAudio.Mono="Miksaa yksikanavaiseksi"
|
||||
Basic.AdvAudio.Panning="Balanssi"
|
||||
Basic.AdvAudio.SyncOffset="Sync Offset (ms)"
|
||||
Basic.AdvAudio.SyncOffset="Synkronoinnin viivästys (ms)"
|
||||
Basic.AdvAudio.AudioTracks="Raidat"
|
||||
|
||||
Basic.Settings.Hotkeys="Pikanäppäimet"
|
||||
|
|
|
@ -87,6 +87,7 @@ ConfirmExit.Text="OBS est actuellement actif. Tous les streams/enregistrements
|
|||
|
||||
ConfirmRemove.Title="Confirmer la suppression"
|
||||
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.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"
|
||||
|
||||
ScaleFiltering="Échelle de filtrage"
|
||||
ScaleFiltering.Point="Point"
|
||||
ScaleFiltering.Bilinear="Bilinéaire"
|
||||
ScaleFiltering.Bicubic="Bicubique"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
|
||||
Deinterlacing="Désentrelacement"
|
||||
Deinterlacing.Discard="Abandonner"
|
||||
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.NoProperties="Aucune propriété disponible"
|
||||
Basic.PropertiesWindow.AddFiles="Ajouter des fichiers"
|
||||
Basic.PropertiesWindow.AddDir="Ajouter un répertoire"
|
||||
Basic.PropertiesWindow.AddURL="Ajouter un chemin/URL"
|
||||
Basic.PropertiesWindow.AddEditableListDir="Ajouter un répertoire à '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListFiles="Ajouter des fichiers à '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListEntry="Ajouter une entrée à '%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.AttemptingReconnect="Tentative de reconnexion... (tentative n° %1)"
|
||||
Basic.StatusBar.ReconnectSuccessful="Reconnexion réussie"
|
||||
Basic.StatusBar.Delay="Délai (%1 s)"
|
||||
Basic.StatusBar.DelayStartingIn="Délai (commence dans %1 s)"
|
||||
Basic.StatusBar.DelayStoppingIn="Délai (s'arrête dans %1 s)"
|
||||
Basic.StatusBar.DelayStartingStoppingIn="Délai (s'arrête dans %1 s, commence dans %2 s)"
|
||||
Basic.StatusBar.Delay="Retard (%1 s)"
|
||||
Basic.StatusBar.DelayStartingIn="Retard (commence dans %1 s)"
|
||||
Basic.StatusBar.DelayStoppingIn="Retard (s'arrête dans %1 s)"
|
||||
Basic.StatusBar.DelayStartingStoppingIn="Retard (s'arrête dans %1 s, commence dans %2 s)"
|
||||
|
||||
Basic.Filters="Filtres"
|
||||
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.StartStreaming="Commencer le streaming"
|
||||
Basic.Main.StopRecording="Arrêter l'enregistrement"
|
||||
Basic.Main.StoppingRecording="Arrêt de l'enregistrement..."
|
||||
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.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.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.Profile="&Profil"
|
||||
|
||||
|
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="Thème"
|
|||
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.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.ScreenSnapping="Déclencher avec les bords 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.SnapDistance="Sensibilité du déclenchement"
|
||||
Basic.Settings.General.RecordWhenStreaming="Enregistrer automatiquement lors d'un stream"
|
||||
Basic.Settings.General.KeepRecordingWhenStreamStops="Continuer à enregistrer lorsque le stream s’arrête"
|
||||
|
||||
Basic.Settings.Stream="Flux"
|
||||
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.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.Audio.BufferingTime="Temps de mise en mémoire tampon audio"
|
||||
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.Partial="Partielle"
|
||||
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.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.AdvAudio="Propriétés audio avancées"
|
||||
|
|
|
@ -125,6 +125,7 @@ Basic.DisplayCapture="Captura de pantalla"
|
|||
Basic.Main.PreviewConextMenu.Enable="Habilitar vista previa"
|
||||
|
||||
|
||||
|
||||
Basic.Main.AddSceneDlg.Title="Engadir 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.AdvAudio="Propiedades de audio &avanzadas"
|
||||
|
||||
|
||||
Basic.MainMenu.SceneCollection="&Colección de escenas"
|
||||
Basic.MainMenu.Profile="&Perfil"
|
||||
|
||||
|
|
|
@ -87,6 +87,7 @@ ConfirmExit.Text="תוכנת OBS פעילה כעת. כל הזרמת נתוני
|
|||
|
||||
ConfirmRemove.Title="אשר הסרה"
|
||||
ConfirmRemove.Text="האם אתה בטוח שברצונך להסיר את '$1'?"
|
||||
ConfirmRemove.TextMultiple="האם אתה בטוח שברצונך להסיר %1 פריטים?"
|
||||
|
||||
Output.ConnectFail.Title="ההתחברות נכשלה"
|
||||
Output.ConnectFail.BadPath="URL לא חוקי של נתיב או חיבור. נא בדוק את ההגדרות שלך כדי לוודא כי הם נכונים."
|
||||
|
@ -118,6 +119,7 @@ LicenseAgreement.Exit="יציאה"
|
|||
Remux.SourceFile="הקלטת OBS"
|
||||
Remux.TargetFile="קובץ היעד"
|
||||
Remux.Remux="המרה"
|
||||
Remux.OBSRecording="הקלטת OBS"
|
||||
Remux.FinishedTitle="המרה הסתיימה"
|
||||
Remux.Finished="הקלטה הומרה"
|
||||
Remux.FinishedError="הקלטה הומרה, אבל הקובץ עשוי להיות לא שלם"
|
||||
|
@ -143,6 +145,12 @@ Basic.DisplayCapture="הצג לכידת מסך"
|
|||
|
||||
Basic.Main.PreviewConextMenu.Enable="אפשר תצוגה מקדימה"
|
||||
|
||||
ScaleFiltering="מסנן קנה מידה"
|
||||
ScaleFiltering.Point="נקודה"
|
||||
ScaleFiltering.Bilinear="ביליניארי"
|
||||
ScaleFiltering.Bicubic="ביקיוביק"
|
||||
ScaleFiltering.Lanczos="לנזוס"
|
||||
|
||||
Deinterlacing="ביטול שזירה"
|
||||
Deinterlacing.Discard="אל תשמור"
|
||||
Deinterlacing.Retro="רטרו"
|
||||
|
@ -185,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="הגדרות שונו"
|
|||
Basic.PropertiesWindow.Confirm="יש שינויים שלא נשמרו. האם ברצונך לשמור אותם?"
|
||||
Basic.PropertiesWindow.NoProperties="אין מאפיינים זמינים"
|
||||
Basic.PropertiesWindow.AddFiles="הוסף קבצים"
|
||||
Basic.PropertiesWindow.AddDir="הוסף ספריה"
|
||||
Basic.PropertiesWindow.AddURL="הוסף נתיב/כתובת"
|
||||
Basic.PropertiesWindow.AddEditableListDir="הוסף ספריה ל '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListFiles="הוסף קבצים '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListEntry="הוסף ערך ל- '%1'"
|
||||
Basic.PropertiesWindow.EditEditableListEntry="ערוך ערך של '%1'"
|
||||
|
@ -249,7 +259,9 @@ Basic.Main.Connecting="מתחבר..."
|
|||
Basic.Main.StartRecording="התחל הקלטה"
|
||||
Basic.Main.StartStreaming="התחל הזרמת נתונים"
|
||||
Basic.Main.StopRecording="עצור הקלטה"
|
||||
Basic.Main.StoppingRecording="עוצר הקלטה..."
|
||||
Basic.Main.StopStreaming="עצור זרם נתונים"
|
||||
Basic.Main.StoppingStreaming="עוצר זרם נתונים..."
|
||||
Basic.Main.ForceStopStreaming="עצור זרם נתונים (בטל השהייה)"
|
||||
|
||||
Basic.MainMenu.File="קובץ(&F)"
|
||||
|
@ -286,6 +298,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="הזז לקצה עליון(&T)"
|
|||
Basic.MainMenu.Edit.Order.MoveToBottom="הזז לקצה תחתון(&B)"
|
||||
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.Profile="פרופיל(&P)"
|
||||
|
||||
|
@ -307,6 +325,14 @@ Basic.Settings.General.Theme="ערכת עיצוב"
|
|||
Basic.Settings.General.Language="שפה"
|
||||
Basic.Settings.General.WarnBeforeStartingStream="הצג תיבת דו-שיח לאישור בעת הפעלת זרם נתונים"
|
||||
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.StreamType="סוג זרם נתונים"
|
||||
|
@ -316,6 +342,7 @@ Basic.Settings.Output.Format="פורמט הקלטה"
|
|||
Basic.Settings.Output.Encoder="מקודד"
|
||||
Basic.Settings.Output.SelectDirectory="בחר ספריית הקלטות"
|
||||
Basic.Settings.Output.SelectFile="בחר קובץ הקלטה"
|
||||
Basic.Settings.Output.EnforceBitrate="אכוף מגבלות קצב נתונים של שירות הזרמת הנתונים"
|
||||
Basic.Settings.Output.Mode="מצב פלט"
|
||||
Basic.Settings.Output.Mode.Simple="פשוט"
|
||||
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.HQ="איכות בלתי מובחנת, גודל קובץ גדול"
|
||||
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.Lossless="אזהרה: איכות ללא אובדן יוצר גדלי קבצים גדולים מאוד! איכות ללא אובדן נתונים יכול להשתמש ביותר מ-7 ג'יגה-בתים של שטח דיסק לדקה ברזולוציות גבוהות ופריימים. שימוש באיכות ללא אובדן אינו מומלץ להקלטות ארוכות אלא אם קיים שטח דיסק פנוי גדול מאד."
|
||||
Basic.Settings.Output.Simple.Warn.Lossless.Msg="האם אתה בטוח שברצונך להשתמש באיכות ללא אובדן איכות?"
|
||||
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.Hardware.QSV="חומרה (QSV)"
|
||||
Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="חומרה (NVENC)"
|
||||
Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="תוכנה (x 264 השימוש בהגדרת מעבד נמוך, גודל הקובץ גדל)"
|
||||
Basic.Settings.Output.VideoBitrate="קצב סיביות וידאו"
|
||||
Basic.Settings.Output.AudioBitrate="קצב סיביות שמע"
|
||||
|
@ -419,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="השהיית לחץ-כדי-לדבר"
|
|||
Basic.Settings.Audio.UnknownAudioDevice="[התקן לא מחובר או לא זמין]"
|
||||
|
||||
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.Audio.BufferingTime="זמן אוגר שמע"
|
||||
Basic.Settings.Advanced.Video.ColorFormat="תבנית צבע"
|
||||
|
|
|
@ -118,6 +118,7 @@ LicenseAgreement.Exit="Izlaz"
|
|||
Remux.SourceFile="OBS snimak"
|
||||
Remux.TargetFile="Datoteka"
|
||||
Remux.Remux="Remux"
|
||||
Remux.OBSRecording="OBS snimak"
|
||||
Remux.FinishedTitle="Remux završen"
|
||||
Remux.Finished="Završen remux snimka"
|
||||
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"
|
||||
|
||||
|
||||
Deinterlacing="Deinterlejsing"
|
||||
Deinterlacing.Discard="Odbaci"
|
||||
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.NoProperties="Nema dostupnih svojstava"
|
||||
Basic.PropertiesWindow.AddFiles="Dodaj datoteke"
|
||||
Basic.PropertiesWindow.AddDir="Dodaj direktorijum"
|
||||
Basic.PropertiesWindow.AddURL="Dodaj putanju/URL"
|
||||
Basic.PropertiesWindow.AddEditableListDir="Dodaj direktorijum u '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListFiles="Dodaj datoteke u '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListEntry="Dodaj zapise u '%1'"
|
||||
Basic.PropertiesWindow.EditEditableListEntry="Izmeni zapise za '%1'"
|
||||
|
@ -249,7 +253,9 @@ Basic.Main.Connecting="Povezivanje..."
|
|||
Basic.Main.StartRecording="Počni snimanje"
|
||||
Basic.Main.StartStreaming="Počni strimovanje"
|
||||
Basic.Main.StopRecording="Zaustavi snimanje"
|
||||
Basic.Main.StoppingRecording="Zaustavljanje snimanja..."
|
||||
Basic.Main.StopStreaming="Zaustavi strimovanje"
|
||||
Basic.Main.StoppingStreaming="Zaustavljanje emitovanja..."
|
||||
Basic.Main.ForceStopStreaming="Zaustavi strimovanje (poništi odlaganje)"
|
||||
|
||||
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.AdvAudio="N&apredna podešavanja zvuka"
|
||||
|
||||
|
||||
Basic.MainMenu.SceneCollection="Kolekcija &scena"
|
||||
Basic.MainMenu.Profile="&Profil"
|
||||
|
||||
|
@ -307,6 +314,7 @@ Basic.Settings.General.Theme="Tema"
|
|||
Basic.Settings.General.Language="Jezik"
|
||||
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.HideProjectorCursor="Sakrij pokazivač na projektorima"
|
||||
Basic.Settings.General.Snapping="Poravnavanje privlačenjem izvora"
|
||||
Basic.Settings.General.ScreenSnapping="Privuci izvore ivici ekrana"
|
||||
Basic.Settings.General.CenterSnapping="Privuci izvore horizontalnoj i vertikalnoj sredini"
|
||||
|
|
|
@ -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.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.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"
|
||||
|
||||
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.Discard="Elvetés"
|
||||
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.NoProperties="Nincsenek elérhető tulajdonságok"
|
||||
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.AddEditableListDir="Könyvtár hozzáadása: '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListFiles="Fájlok hozzáadása: '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListEntry="Bejegyzés hozzáadása: '%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.StartStreaming="Stream indí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.StoppingStreaming="Stream leállítása..."
|
||||
Basic.Main.ForceStopStreaming="Stream leállítása (Késleltetés elvetése)"
|
||||
|
||||
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.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.Profile="&Profil"
|
||||
|
||||
|
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="Téma"
|
|||
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.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.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.SourceSnapping="Források igazítása más forrásokhoz"
|
||||
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.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.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.Audio.BufferingTime="Audio pufferelési idő"
|
||||
Basic.Settings.Advanced.Video.ColorFormat="Színformátum"
|
||||
|
|
|
@ -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."
|
||||
Transition="Transizione"
|
||||
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.Scenes="Scene"
|
||||
|
@ -57,17 +76,24 @@ NameExists.Text="Il nome è già in uso."
|
|||
NoNameEntered.Title="Inserisci un nome valido"
|
||||
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.Text="OBS è attualmente attivo. Tutte le dirette/registrazioni saranno fermate. Sei sicuro di voler uscire?"
|
||||
|
||||
ConfirmRemove.Title="Conferma la rimozione"
|
||||
ConfirmRemove.Text="Sei sicuro di voler rimuovere '$1'?"
|
||||
ConfirmRemove.TextMultiple="Sei sicuro di volere rimuovere %1 elementi?"
|
||||
|
||||
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.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.Disconnected="Disconnesso dal server."
|
||||
|
||||
|
@ -94,6 +120,7 @@ LicenseAgreement.Exit="Esci"
|
|||
Remux.SourceFile="Registrazione OBS"
|
||||
Remux.TargetFile="File di destinazione"
|
||||
Remux.Remux="Converti"
|
||||
Remux.OBSRecording="Registrazione OBS"
|
||||
Remux.FinishedTitle="Conversione finita"
|
||||
Remux.Finished="Registrazione convertita"
|
||||
Remux.FinishedError="Registrazione convertita, ma il file potrebbe essere incompleta"
|
||||
|
@ -119,6 +146,23 @@ Basic.DisplayCapture="Mostra cattura"
|
|||
|
||||
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.Text="Inserisci il nome della scena"
|
||||
|
@ -143,17 +187,23 @@ Basic.SourceSelect.AddExisting="Aggiungi esistente"
|
|||
Basic.SourceSelect.AddVisible="Rendi visibile la provenienza"
|
||||
|
||||
Basic.PropertiesWindow="Proprietà di '%1'"
|
||||
Basic.PropertiesWindow.AutoSelectFormat="%1 (autoseleziona: %2)"
|
||||
Basic.PropertiesWindow.SelectColor="Seleziona il colore"
|
||||
Basic.PropertiesWindow.SelectFont="Seleziona il tipo di carattere"
|
||||
Basic.PropertiesWindow.ConfirmTitle="Impostazioni modificate"
|
||||
Basic.PropertiesWindow.Confirm="Ci sono modifiche non salvate. Le vuoi mantenere?"
|
||||
Basic.PropertiesWindow.NoProperties="Nessuna proprietà disponibile"
|
||||
Basic.PropertiesWindow.AddFiles="Aggiungi File"
|
||||
Basic.PropertiesWindow.AddDir="Aggiungi Cartella"
|
||||
Basic.PropertiesWindow.AddURL="Aggiungi Percorso/URL"
|
||||
Basic.PropertiesWindow.AddEditableListDir="Aggiungi cartella a '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListFiles="Aggiungi file a '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListEntry="Aggiungi voci a '%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'"
|
||||
|
||||
|
@ -181,6 +231,7 @@ Basic.TransformWindow.Alignment="Allinea posizioni"
|
|||
Basic.TransformWindow.BoundsType="Tipo di casella di delimitazione"
|
||||
Basic.TransformWindow.BoundsAlignment="Allineamento nel riquadro di delimitazione"
|
||||
Basic.TransformWindow.Bounds="Dimensione casella di delimitazione"
|
||||
Basic.TransformWindow.Crop="Crop"
|
||||
|
||||
Basic.TransformWindow.Alignment.TopLeft="In alto a sinistra"
|
||||
Basic.TransformWindow.Alignment.TopCenter="In alto al centro"
|
||||
|
@ -209,7 +260,9 @@ Basic.Main.Connecting="Connessione..."
|
|||
Basic.Main.StartRecording="Avvia registrazione"
|
||||
Basic.Main.StartStreaming="Avvia trasmissione"
|
||||
Basic.Main.StopRecording="Ferma registrazione"
|
||||
Basic.Main.StoppingRecording="Fermando la registrazione..."
|
||||
Basic.Main.StopStreaming="Ferma trasmissione"
|
||||
Basic.Main.StoppingStreaming="Arresto diretta..."
|
||||
Basic.Main.ForceStopStreaming="Ferma Diretta (annulla ritardo)"
|
||||
|
||||
Basic.MainMenu.File="&File"
|
||||
|
@ -220,6 +273,7 @@ Basic.MainMenu.File.Remux="Converti registrazioni"
|
|||
Basic.MainMenu.File.Settings="&Impostazioni"
|
||||
Basic.MainMenu.File.ShowSettingsFolder="Visualizza cartella impostazioni"
|
||||
Basic.MainMenu.File.ShowProfileFolder="Mostra la cartella del profilo"
|
||||
Basic.MainMenu.AlwaysOnTop="&Sempre in primo piano"
|
||||
Basic.MainMenu.File.Exit="Esci (&X)"
|
||||
|
||||
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.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.Profile="&Profilo"
|
||||
|
||||
|
@ -264,6 +324,16 @@ Basic.Settings.Confirm="Hai dei cambiamenti non salvati. Vuoi salvarli?"
|
|||
Basic.Settings.General="Generali"
|
||||
Basic.Settings.General.Theme="Tema"
|
||||
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.StreamType="Tipo di stream"
|
||||
|
@ -273,6 +343,7 @@ Basic.Settings.Output.Format="Formato di registrazione"
|
|||
Basic.Settings.Output.Encoder="Codifica"
|
||||
Basic.Settings.Output.SelectDirectory="Seleziona cartella 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.Simple="Semplice"
|
||||
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.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.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.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.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.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.VideoBitrate="Bitrate video"
|
||||
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.EncoderPreset="Codificatore Preset (superiore = meno CPU)"
|
||||
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.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.FFmpegOutput="Output personalizzato (FFmpeg)"
|
||||
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.URL="Output in URL"
|
||||
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.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.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.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.Audio.BufferingTime="Tempo di buffer audio"
|
||||
Basic.Settings.Advanced.Video.ColorFormat="Formato colore"
|
||||
|
|
|
@ -38,7 +38,7 @@ Hide="非表示"
|
|||
Untitled="無題"
|
||||
New="新規"
|
||||
Duplicate="複製"
|
||||
Enable=" 有効にする"
|
||||
Enable="有効にする"
|
||||
DisableOSXVSync="OSX の V-Sync を無効にする"
|
||||
ResetOSXVSyncOnExit="終了時に OSX の V-Sync をリセットする"
|
||||
HighResourceUsage="エンコードが高負荷です! ビデオ設定を下げるかより高速のエンコードプリセットの使用を検討してください。"
|
||||
|
@ -87,6 +87,7 @@ ConfirmExit.Text="OBS は現在アクティブです。 すべての配信/録
|
|||
|
||||
ConfirmRemove.Title="削除の確認"
|
||||
ConfirmRemove.Text="'$1' を削除してもよろしいですか?"
|
||||
ConfirmRemove.TextMultiple="選択した %1 項目を削除してもよろしいですか?"
|
||||
|
||||
Output.ConnectFail.Title="接続失敗"
|
||||
Output.ConnectFail.BadPath="パスかURLが無効です。再確認して下さい。"
|
||||
|
@ -144,6 +145,12 @@ Basic.DisplayCapture="画面キャプチャ"
|
|||
|
||||
Basic.Main.PreviewConextMenu.Enable="プレビュー有効化"
|
||||
|
||||
ScaleFiltering="スケールフィルタ"
|
||||
ScaleFiltering.Point="ポイント"
|
||||
ScaleFiltering.Bilinear="バイリニア"
|
||||
ScaleFiltering.Bicubic="バイキュービック"
|
||||
ScaleFiltering.Lanczos="ランチョス"
|
||||
|
||||
Deinterlacing="インターレース解除"
|
||||
Deinterlacing.Discard="破棄"
|
||||
Deinterlacing.Retro="レトロ"
|
||||
|
@ -186,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="設定の変更"
|
|||
Basic.PropertiesWindow.Confirm="保存されていない変更があります。それらを維持しますか?"
|
||||
Basic.PropertiesWindow.NoProperties="有効なプロパティがありません"
|
||||
Basic.PropertiesWindow.AddFiles="ファイルを追加"
|
||||
Basic.PropertiesWindow.AddDir="ディレクトリを追加"
|
||||
Basic.PropertiesWindow.AddURL="Path または URL を追加"
|
||||
Basic.PropertiesWindow.AddEditableListDir="'%1' にディレクトリを追加"
|
||||
Basic.PropertiesWindow.AddEditableListFiles="ファイルを '%1' に追加"
|
||||
Basic.PropertiesWindow.AddEditableListEntry="'%1' にエントリを追加"
|
||||
Basic.PropertiesWindow.EditEditableListEntry="'%1' からのエントリを編集"
|
||||
|
@ -250,7 +259,9 @@ Basic.Main.Connecting="接続中..."
|
|||
Basic.Main.StartRecording="録画開始"
|
||||
Basic.Main.StartStreaming="配信開始"
|
||||
Basic.Main.StopRecording="録画終了"
|
||||
Basic.Main.StoppingRecording="録画を停止しています..."
|
||||
Basic.Main.StopStreaming="配信終了"
|
||||
Basic.Main.StoppingStreaming="配信を停止しています..."
|
||||
Basic.Main.ForceStopStreaming="配信停止 (遅延破棄)"
|
||||
|
||||
Basic.MainMenu.File="ファイル(&F)"
|
||||
|
@ -287,6 +298,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="最上部に移動(&T)"
|
|||
Basic.MainMenu.Edit.Order.MoveToBottom="最下部に移動(&B)"
|
||||
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.Profile="プロファイル"
|
||||
|
||||
|
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="テーマ"
|
|||
Basic.Settings.General.Language="言語"
|
||||
Basic.Settings.General.WarnBeforeStartingStream="配信を開始するときに確認ダイアログを表示する"
|
||||
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.StreamType="配信種別"
|
||||
|
@ -431,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="プッシュ-トーク遅延"
|
|||
Basic.Settings.Audio.UnknownAudioDevice="[デバイスが接続されていないまたは利用不可]"
|
||||
|
||||
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.Audio.BufferingTime="音声バッファー処理時間"
|
||||
Basic.Settings.Advanced.Video.ColorFormat="カラーフォーマット"
|
||||
|
|
|
@ -87,6 +87,7 @@ ConfirmExit.Text="OBS가 현재 작동 중입니다. 모든 방송/녹화가 중
|
|||
|
||||
ConfirmRemove.Title="제거 확인"
|
||||
ConfirmRemove.Text="'$1'을 정말로 제거하시겠습니까?"
|
||||
ConfirmRemove.TextMultiple="정말로 %1 개의 항목을 제거하겠습니까?"
|
||||
|
||||
Output.ConnectFail.Title="연결에 실패했음"
|
||||
Output.ConnectFail.BadPath="잘못된 경로 혹은 연결 주소입니다. 유효한 값인지 설정을 확인하시기 바랍니다. "
|
||||
|
@ -144,6 +145,12 @@ Basic.DisplayCapture="캡처 표시"
|
|||
|
||||
Basic.Main.PreviewConextMenu.Enable="미리보기 활성화"
|
||||
|
||||
ScaleFiltering="비율 필터링"
|
||||
ScaleFiltering.Point="점"
|
||||
ScaleFiltering.Bilinear="이중선형"
|
||||
ScaleFiltering.Bicubic="쌍삼차"
|
||||
ScaleFiltering.Lanczos="란초스"
|
||||
|
||||
Deinterlacing="디인터레이싱"
|
||||
Deinterlacing.Discard="저장 안함"
|
||||
Deinterlacing.Retro="레트로"
|
||||
|
@ -186,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="설정이 변경됨"
|
|||
Basic.PropertiesWindow.Confirm="아직 저장하지 않은 변경 사항이 있습니다. 변경을 유지하겠습니까?"
|
||||
Basic.PropertiesWindow.NoProperties="가능한 설정이 없음"
|
||||
Basic.PropertiesWindow.AddFiles="파일 추가"
|
||||
Basic.PropertiesWindow.AddDir="디렉토리 추가"
|
||||
Basic.PropertiesWindow.AddURL="경로 또는 URL 추가"
|
||||
Basic.PropertiesWindow.AddEditableListDir="'%1 에 디렉터리 항목 추가"
|
||||
Basic.PropertiesWindow.AddEditableListFiles="'%1' 에 파일 추가"
|
||||
Basic.PropertiesWindow.AddEditableListEntry="'%1 에 항목 추가"
|
||||
Basic.PropertiesWindow.EditEditableListEntry="'%1' 내 항목 수정"
|
||||
|
@ -250,7 +259,9 @@ Basic.Main.Connecting="연결 중..."
|
|||
Basic.Main.StartRecording="녹화 시작"
|
||||
Basic.Main.StartStreaming="방송 시작"
|
||||
Basic.Main.StopRecording="녹화 중단"
|
||||
Basic.Main.StoppingRecording="녹화를 중단합니다...."
|
||||
Basic.Main.StopStreaming="방송 중단"
|
||||
Basic.Main.StoppingStreaming="방송을 중지합니다..."
|
||||
Basic.Main.ForceStopStreaming="방송 중지(지연된 분량도 마무리없이 즉시 송출 중단)"
|
||||
|
||||
Basic.MainMenu.File="파일(&F)"
|
||||
|
@ -287,6 +298,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="가장 위로 올리기(&T)"
|
|||
Basic.MainMenu.Edit.Order.MoveToBottom="가장 아래로 내리기(&B)"
|
||||
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.Profile="프로파일(&P)"
|
||||
|
||||
|
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="테마"
|
|||
Basic.Settings.General.Language="언어"
|
||||
Basic.Settings.General.WarnBeforeStartingStream="방송을 시작할 때 확인 대화 상자 표시"
|
||||
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.StreamType="방송 형식"
|
||||
|
@ -431,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="누르며 말하기 지연"
|
|||
Basic.Settings.Audio.UnknownAudioDevice="[장치를 연결하지 않았거나 사용할 수 없음]"
|
||||
|
||||
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.Audio.BufferingTime="오디오 버퍼링 시간"
|
||||
Basic.Settings.Advanced.Video.ColorFormat="색상 형식"
|
||||
|
|
|
@ -52,23 +52,70 @@ Bottom="Iš apačios"
|
|||
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.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.Remux="Permiksuoti"
|
||||
Remux.OBSRecording="OBS įrašas"
|
||||
Remux.FinishedTitle="Permiksavimas baigtas"
|
||||
Remux.Finished="Įrašas permiksuotas"
|
||||
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ą"
|
||||
|
||||
ScaleFiltering="Mastelio filtras"
|
||||
ScaleFiltering.Point="Taškas"
|
||||
ScaleFiltering.Bilinear="Dvilinijinis"
|
||||
ScaleFiltering.Bicubic="Bikubinis"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
|
||||
Deinterlacing="Perėjimo šalinimas"
|
||||
Deinterlacing.Discard="Atmesti"
|
||||
Deinterlacing.Retro="Retro"
|
||||
|
@ -130,12 +183,32 @@ Basic.SourceSelect.AddVisible="Padaryti šaltinį matomu"
|
|||
|
||||
Basic.PropertiesWindow="'%1' savybės"
|
||||
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į."
|
||||
|
@ -174,6 +247,12 @@ Basic.MainMenu.Edit.Transform.Rotate180="Pasukti 180 laipsnių"
|
|||
Basic.MainMenu.Edit.Transform.FlipHorizontal="Apversti &horizontaliai"
|
||||
Basic.MainMenu.Edit.Transform.FlipVertical="Apversti &vertikaliai"
|
||||
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ą"
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -116,6 +116,7 @@ LicenseAgreement.Exit="Keluar"
|
|||
|
||||
Remux.SourceFile="Rakaman OBS"
|
||||
Remux.TargetFile="Fail sasaran"
|
||||
Remux.OBSRecording="Rakaman OBS"
|
||||
Remux.SelectRecording="Pilih Rakaman OBS …"
|
||||
Remux.SelectTarget="Pilih fail sasaran …"
|
||||
Remux.FileExistsTitle="Fail sasaran wujud"
|
||||
|
@ -136,6 +137,9 @@ Basic.Scene="Adegan"
|
|||
Basic.Main.PreviewConextMenu.Enable="Benarkan Pratonton"
|
||||
|
||||
|
||||
Deinterlacing.Retro="Retro"
|
||||
Deinterlacing.Linear="Linear"
|
||||
|
||||
Basic.Main.AddSceneDlg.Title="Tambah 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.Text="Sila nyatakan nama penapis"
|
||||
|
||||
Basic.TransformWindow="Pengubahan Item Adegan"
|
||||
Basic.TransformWindow.Position="Kedudukan"
|
||||
Basic.TransformWindow.Rotation="Pusingan"
|
||||
Basic.TransformWindow.Size="Saiz"
|
||||
|
@ -220,6 +225,7 @@ Basic.Main.StartRecording="Mula rakaman"
|
|||
Basic.Main.StartStreaming="Mula 'streaming'"
|
||||
Basic.Main.StopRecording="Hentikan rakaman"
|
||||
Basic.Main.StopStreaming="Hentikan 'streaming'"
|
||||
Basic.Main.ForceStopStreaming="Berhenti 'streaming' (buang kelewatan)"
|
||||
|
||||
Basic.MainMenu.File="&Fail"
|
||||
Basic.MainMenu.File.Export="&Export"
|
||||
|
@ -228,20 +234,57 @@ Basic.MainMenu.File.ShowRecordings="Papar &Rakaman"
|
|||
Basic.MainMenu.File.Settings="&Tetapan"
|
||||
Basic.MainMenu.File.ShowSettingsFolder="Tunjukkan Folder Tetapan"
|
||||
Basic.MainMenu.File.ShowProfileFolder="Tunjukkan Folder Profil"
|
||||
Basic.MainMenu.AlwaysOnTop="&Sentiasa Di Atas"
|
||||
Basic.MainMenu.File.Exit="Keluar (&X)"
|
||||
|
||||
Basic.MainMenu.Edit="&Sunting"
|
||||
Basic.MainMenu.Edit.Undo="&Ubah Balik"
|
||||
Basic.MainMenu.Edit.Redo="Buat Semula (&R)"
|
||||
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.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"
|
||||
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ Cancel="Avbryt"
|
|||
Close="Lukk"
|
||||
Save="Lagre"
|
||||
Discard="Forkast"
|
||||
Disable="Deaktiver"
|
||||
Yes="Ja"
|
||||
No="Nei"
|
||||
Add="Legg til"
|
||||
|
@ -38,10 +39,33 @@ Untitled="Uten navn"
|
|||
New="Ny"
|
||||
Duplicate="Dupliser"
|
||||
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"
|
||||
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.Scenes="Scener"
|
||||
|
@ -52,7 +76,11 @@ NameExists.Text="Dette navnet er allerede i bruk."
|
|||
NoNameEntered.Title="Vennligst oppgi et gyldig 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.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.BadPath="Ugyldig filbane eller tilkoblings-URL. Vennligst bekreft at instillingene dine er riktige."
|
||||
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.Disconnected="Koblet fra tjeneren."
|
||||
|
||||
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.Msg="Det er ikke nok diskplass til å fortsette opptaket."
|
||||
Output.RecordError.Title="Innspillingsfeil"
|
||||
|
@ -89,6 +118,7 @@ LicenseAgreement.Exit="Avslutt"
|
|||
Remux.SourceFile="OBS-opptak"
|
||||
Remux.TargetFile="Målfil"
|
||||
Remux.Remux="Remuks"
|
||||
Remux.OBSRecording="OBS-opptak"
|
||||
Remux.FinishedTitle="Remuksing ferdig"
|
||||
Remux.Finished="Opptak remukset"
|
||||
Remux.FinishedError="Opptak remukset, men filen kan være ufullstendig."
|
||||
|
@ -115,6 +145,18 @@ Basic.DisplayCapture="Skjermopptak"
|
|||
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.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.PropertiesWindow="Egenskaper for '%1'"
|
||||
Basic.PropertiesWindow.AutoSelectFormat="%1 (selvvalg: %2)"
|
||||
Basic.PropertiesWindow.SelectColor="Velg farge"
|
||||
Basic.PropertiesWindow.SelectFont="Velg skrifttype"
|
||||
Basic.PropertiesWindow.ConfirmTitle="Innstillingene er endret"
|
||||
Basic.PropertiesWindow.Confirm="Det er ulagra endringer. Vil du beholde dem?"
|
||||
Basic.PropertiesWindow.NoProperties="Ingen egenskaper tilgjengelige"
|
||||
Basic.PropertiesWindow.AddFiles="Legg til filer"
|
||||
Basic.PropertiesWindow.AddDir="Legg til mappe"
|
||||
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.AddEditableListEntry="Lag oppføring til '%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»"
|
||||
|
||||
|
@ -176,6 +224,7 @@ Basic.TransformWindow.Alignment="Posisjonsoppstilling"
|
|||
Basic.TransformWindow.BoundsType="Innholdsavgrensningstype"
|
||||
Basic.TransformWindow.BoundsAlignment="Oppstilling i innholdsavgrensning"
|
||||
Basic.TransformWindow.Bounds="Innholdsavgrensningsstørrelse"
|
||||
Basic.TransformWindow.Crop="Beskjæring"
|
||||
|
||||
Basic.TransformWindow.Alignment.TopLeft="Øverst til venstre"
|
||||
Basic.TransformWindow.Alignment.TopCenter="Øverst i midten"
|
||||
|
@ -204,7 +253,9 @@ Basic.Main.Connecting="Kobler til…"
|
|||
Basic.Main.StartRecording="Start Opptak"
|
||||
Basic.Main.StartStreaming="Start Strømming"
|
||||
Basic.Main.StopRecording="Stopp Opptak"
|
||||
Basic.Main.StoppingRecording="Stanser innspilling…"
|
||||
Basic.Main.StopStreaming="Stopp Strømming"
|
||||
Basic.Main.StoppingStreaming="Stanser strøm…"
|
||||
Basic.Main.ForceStopStreaming="Stopp strømming (forkast forsinkelse)"
|
||||
|
||||
Basic.MainMenu.File="&Fil"
|
||||
|
@ -215,6 +266,7 @@ Basic.MainMenu.File.Remux="Re&muks opptak"
|
|||
Basic.MainMenu.File.Settings="Inn&stillinger"
|
||||
Basic.MainMenu.File.ShowSettingsFolder="Vis innstillingsmappen"
|
||||
Basic.MainMenu.File.ShowProfileFolder="Vis profilmappen"
|
||||
Basic.MainMenu.AlwaysOnTop="&Alltid synlig"
|
||||
Basic.MainMenu.File.Exit="&Avslutt"
|
||||
|
||||
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.AdvAudio="&Avanserte lydinstillinger"
|
||||
|
||||
|
||||
Basic.MainMenu.SceneCollection="&Scenesamling"
|
||||
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.Theme="Tema"
|
||||
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.StreamType="Strømmetype"
|
||||
|
||||
Basic.Settings.Output="Innspilling"
|
||||
Basic.Settings.Output="Utgang"
|
||||
Basic.Settings.Output.Format="Opptaksformat"
|
||||
Basic.Settings.Output.Encoder="Koder"
|
||||
Basic.Settings.Output.SelectDirectory="Velg opptaksmappe"
|
||||
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.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.RecordingQuality="Opptakskvalitet"
|
||||
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.HQ="Veldig høy kvalitet, 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.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.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.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.VideoBitrate="Bildeoverfø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.EncoderPreset="Koderforhåndsinstilling (raskere gir mindre prosessorbelastning)"
|
||||
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.Streaming="Strømming"
|
||||
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.Type="Type"
|
||||
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.FFmpeg.Type="FFmpeg-utdatatype"
|
||||
Basic.Settings.Output.Adv.FFmpeg.Type.URL="Utdata til URL"
|
||||
Basic.Settings.Output.Adv.FFmpeg.Type.RecordToFile="Utdata til fil"
|
||||
Basic.Settings.Output.Adv.Recording.Filename="Filnavnformat"
|
||||
Basic.Settings.Output.Adv.Recording.OverwriteIfExists="Skriv over om filen eksisterer"
|
||||
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.All="Alle filer"
|
||||
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.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.Adapter="Bildeadapter:"
|
||||
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.DisableAeroWindows="Deaktiver Aero (kun Windows)"
|
||||
Basic.Settings.Video.FPS="FPS:"
|
||||
|
@ -343,7 +418,7 @@ Basic.Settings.Video.Numerator="Teller:"
|
|||
Basic.Settings.Video.Denominator="Nevner:"
|
||||
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.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.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.EnablePushToTalk="Aktiver snakk-ved-trykk"
|
||||
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.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."
|
||||
|
|
|
@ -87,6 +87,7 @@ ConfirmExit.Text="OBS is momenteel actief. Alle streams/opnames zullen worden af
|
|||
|
||||
ConfirmRemove.Title="Bevestig het 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.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"
|
||||
|
||||
ScaleFiltering="Schaal-filter"
|
||||
ScaleFiltering.Point="Point"
|
||||
ScaleFiltering.Bilinear="Bilinear"
|
||||
ScaleFiltering.Bicubic="Bicubic"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
|
||||
Deinterlacing="Deinterlacing"
|
||||
Deinterlacing.Discard="Verwerpen"
|
||||
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.NoProperties="Geen eigenschappen beschikbaar"
|
||||
Basic.PropertiesWindow.AddFiles="Bestanden Toevoegen"
|
||||
Basic.PropertiesWindow.AddDir="Map 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.AddEditableListEntry="Voeg toe aan '%1'"
|
||||
Basic.PropertiesWindow.EditEditableListEntry="Verwijder van '%1'"
|
||||
|
@ -250,7 +259,9 @@ Basic.Main.Connecting="Verbinden..."
|
|||
Basic.Main.StartRecording="Opname Starten"
|
||||
Basic.Main.StartStreaming="Stream Starten"
|
||||
Basic.Main.StopRecording="Opname Stoppen"
|
||||
Basic.Main.StoppingRecording="Opname Stoppen..."
|
||||
Basic.Main.StopStreaming="Stream Stoppen"
|
||||
Basic.Main.StoppingStreaming="Stream Stoppen..."
|
||||
Basic.Main.ForceStopStreaming="Stop Stream (vertraging negeren)"
|
||||
|
||||
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.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.Profile="&Profiel"
|
||||
|
||||
|
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="Thema"
|
|||
Basic.Settings.General.Language="Taal"
|
||||
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.HideProjectorCursor="Verberg cursor boven projectors"
|
||||
Basic.Settings.General.Snapping="Bronuitlijning"
|
||||
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.SourceSnapping="Bronnen uitlijnen op andere bronnen"
|
||||
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.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.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.Audio.BufferingTime="Audio Buffertijd"
|
||||
Basic.Settings.Advanced.Video.ColorFormat="Kleurindeling"
|
||||
|
|
|
@ -87,6 +87,7 @@ ConfirmExit.Text="OBS jest uruchomiony. Wszelkie transmisje czy nagrania zostan
|
|||
|
||||
ConfirmRemove.Title="Potwierdź usunięcie"
|
||||
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.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.TargetFile="Plik docelowy"
|
||||
Remux.Remux="Przepakowanie (remux)"
|
||||
Remux.OBSRecording="Plik nagrania z OBS"
|
||||
Remux.FinishedTitle="Przepakowanie zakończone"
|
||||
Remux.Finished="Nagranie przepakowane"
|
||||
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"
|
||||
|
||||
ScaleFiltering="Filtrowanie skalowania"
|
||||
ScaleFiltering.Point="Punktowe"
|
||||
ScaleFiltering.Bilinear="Dwuliniowe"
|
||||
ScaleFiltering.Bicubic="Dwusześcienne"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
|
||||
Deinterlacing="Usuwanie przeplotu"
|
||||
Deinterlacing.Discard="Odrzuć"
|
||||
Deinterlacing.Retro="Retro"
|
||||
|
@ -185,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="Ustawienia zmienione"
|
|||
Basic.PropertiesWindow.Confirm="Czy chcesz zachować niezapisane zmiany?"
|
||||
Basic.PropertiesWindow.NoProperties="Brak właściwości"
|
||||
Basic.PropertiesWindow.AddFiles="Dodaj pliki"
|
||||
Basic.PropertiesWindow.AddDir="Dodaj folder"
|
||||
Basic.PropertiesWindow.AddURL="Dodaj ścieżkę/adres URL"
|
||||
Basic.PropertiesWindow.AddEditableListDir="Dodaj folder do '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListFiles="Dodaj pliki do '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListEntry="Dodaj wpis do '%1'"
|
||||
Basic.PropertiesWindow.EditEditableListEntry="Edytuj wpis w '%1'"
|
||||
|
@ -249,7 +259,9 @@ Basic.Main.Connecting="Łączenie..."
|
|||
Basic.Main.StartRecording="Rozpocznij nagrywanie"
|
||||
Basic.Main.StartStreaming="Rozpocznij stream"
|
||||
Basic.Main.StopRecording="Zatrzymaj nagrywanie"
|
||||
Basic.Main.StoppingRecording="Zatrzymywanie nagrywania..."
|
||||
Basic.Main.StopStreaming="Zatrzymaj stream"
|
||||
Basic.Main.StoppingStreaming="Zatrzymywanie streamowania..."
|
||||
Basic.Main.ForceStopStreaming="Zatrzymaj stream (anuluj opóźnienie)"
|
||||
|
||||
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.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.Profile="&Profil"
|
||||
|
||||
|
@ -307,11 +325,14 @@ Basic.Settings.General.Theme="Motyw"
|
|||
Basic.Settings.General.Language="Język"
|
||||
Basic.Settings.General.WarnBeforeStartingStream="Pokaż komunikat potwierdzenia uruchomienia 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.ScreenSnapping="Przyciągaj do krawędzi ekranu"
|
||||
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.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.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.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.Audio.BufferingTime="Czas buforowania dźwięku"
|
||||
Basic.Settings.Advanced.Video.ColorFormat="Format koloru"
|
||||
|
|
|
@ -54,6 +54,7 @@ QuickTransitions.SwapScenesTT="Troca a preview e a saída após transicionar (se
|
|||
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.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"
|
||||
|
||||
Basic.AddTransition="Adicionar Transição Configurável"
|
||||
|
@ -117,6 +118,7 @@ LicenseAgreement.Exit="Sair"
|
|||
Remux.SourceFile="OBS Gravando"
|
||||
Remux.TargetFile="Arquivo de destino"
|
||||
Remux.Remux="Remux"
|
||||
Remux.OBSRecording="Gravação do OBS"
|
||||
Remux.FinishedTitle="Remux finalizado"
|
||||
Remux.Finished="Remux da gravação finalizado"
|
||||
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"
|
||||
|
||||
|
||||
Deinterlacing="Desentrelaçamento"
|
||||
Deinterlacing.Discard="Descartar"
|
||||
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"
|
||||
|
||||
|
@ -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.AdvAudio="&Propriedades de áudio avançadas"
|
||||
|
||||
|
||||
Basic.MainMenu.SceneCollection="&Coleção de cena"
|
||||
Basic.MainMenu.Profile="&Perfil"
|
||||
|
||||
|
@ -303,6 +310,7 @@ Basic.Settings.General.Theme="Tema"
|
|||
Basic.Settings.General.Language="Idioma"
|
||||
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.Snapping="Alinhamentos com encaixe na Cena"
|
||||
Basic.Settings.General.ScreenSnapping="Encaixar Fontes ás bordas da tela"
|
||||
Basic.Settings.General.CenterSnapping="Encaixar Fontes aos centros vertical e horizontal"
|
||||
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.Title="Aviso de qualidade lossless!"
|
||||
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.VideoBitrate="Taxa de Bits do Vídeo"
|
||||
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.EncoderPreset="Predefinição de codificação (maior = menor uso de CPU)"
|
||||
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.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.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"
|
||||
|
||||
|
|
|
@ -39,6 +39,9 @@ Untitled="Sem título"
|
|||
New="Novo"
|
||||
Duplicate="Duplicar"
|
||||
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"
|
||||
QuickTransitions="Transições rápidas"
|
||||
Left="Esquerda"
|
||||
|
@ -46,11 +49,21 @@ Right="Direita"
|
|||
Top="Cima"
|
||||
Bottom="Baixo"
|
||||
|
||||
QuickTransitions.SwapScenes="Trocar pré-visualização/saída de cenas Depois de uma Transição"
|
||||
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.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.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.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.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.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.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.Disconnected="Desligado do servidor."
|
||||
|
||||
|
@ -98,6 +116,7 @@ LicenseAgreement.Exit="Sair"
|
|||
Remux.SourceFile="Gravação do OBS"
|
||||
Remux.TargetFile="Ficheiro de destino"
|
||||
Remux.Remux="Remisturar"
|
||||
Remux.OBSRecording="Gravação do OBS"
|
||||
Remux.FinishedTitle="Remistura concluída"
|
||||
Remux.Finished="Gravação remisturada"
|
||||
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"
|
||||
|
||||
|
||||
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.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.BoundsAlignment="Alinhamento 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.TopCenter="Superior Central"
|
||||
|
@ -228,6 +260,7 @@ Basic.MainMenu.File.Remux="Re&misturar gravações"
|
|||
Basic.MainMenu.File.Settings="&Definições"
|
||||
Basic.MainMenu.File.ShowSettingsFolder="Mostrar pasta das definições"
|
||||
Basic.MainMenu.File.ShowProfileFolder="Mostrar pasta do perfil"
|
||||
Basic.MainMenu.AlwaysOnTop="&Sempre em Cima"
|
||||
Basic.MainMenu.File.Exit="&Sair"
|
||||
|
||||
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.AdvAudio="Propriedades &avançadas de áudio"
|
||||
|
||||
|
||||
Basic.MainMenu.SceneCollection="Coleção de cena"
|
||||
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.Theme="Tema"
|
||||
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.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.SelectDirectory="Selecione o diretório 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.Simple="Simples"
|
||||
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.Stream="A mesma da transmissão"
|
||||
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.Title="Aviso de qualidade sem perda!"
|
||||
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.AudioBitrate="Bitrate de Áudio"
|
||||
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.EncoderPreset="Predefinição de codificação (maior = menor processamento)"
|
||||
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.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.FFmpegOutput="Saída personalizada (FFmpeg)"
|
||||
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.URL="Exportar para endereço"
|
||||
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.AEncoder="Codificador de áudio"
|
||||
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.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.DisableAeroWindows="Desactivar Aero (apenas no Windows)"
|
||||
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.EnablePushToTalk="Ativar o 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.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.StreamDelay="Atraso na trasmissão"
|
||||
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.AdvAudio="Propriedades avançadas de áudio"
|
||||
|
|
|
@ -143,6 +143,7 @@ Basic.DisplayCapture="Captură de display"
|
|||
|
||||
Basic.Main.PreviewConextMenu.Enable="Activează previzualizarea"
|
||||
|
||||
|
||||
Deinterlacing="Deîntrețesere"
|
||||
Deinterlacing.Discard="Înlătură"
|
||||
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.AdvAudio="Proprietăți audio &avansate"
|
||||
|
||||
|
||||
Basic.MainMenu.SceneCollection="Colecție de &scene"
|
||||
Basic.MainMenu.Profile="&Profil"
|
||||
|
||||
|
|
|
@ -87,6 +87,7 @@ ConfirmExit.Text="В настоящее время OBS активен. Все п
|
|||
|
||||
ConfirmRemove.Title="Подтвердить удаление"
|
||||
ConfirmRemove.Text="Вы уверены, что хотите удалить '$1'?"
|
||||
ConfirmRemove.TextMultiple="Вы уверены, что вы хотите удалить %1 элементов?"
|
||||
|
||||
Output.ConnectFail.Title="Не удалось подключиться"
|
||||
Output.ConnectFail.BadPath="Неверный путь или URL соединения. Пожалуйста, проверьте настройки, чтобы подтвердить, что они являются действительными."
|
||||
|
@ -144,6 +145,12 @@ Basic.DisplayCapture="Захват экрана"
|
|||
|
||||
Basic.Main.PreviewConextMenu.Enable="Включить предпросмотр"
|
||||
|
||||
ScaleFiltering="Фильтрация масштаба"
|
||||
ScaleFiltering.Point="Точечная"
|
||||
ScaleFiltering.Bilinear="Билинейная"
|
||||
ScaleFiltering.Bicubic="Бикубическая"
|
||||
ScaleFiltering.Lanczos="Ланцошная"
|
||||
|
||||
Deinterlacing="Устранение чересстрочности"
|
||||
Deinterlacing.Discard="Отклонить"
|
||||
Deinterlacing.Retro="Ретро"
|
||||
|
@ -186,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="Настройки изменены"
|
|||
Basic.PropertiesWindow.Confirm="Имеются несохранённые изменения. Желаете сохранить их?"
|
||||
Basic.PropertiesWindow.NoProperties="Нет доступных параметров"
|
||||
Basic.PropertiesWindow.AddFiles="Добавить файлы"
|
||||
Basic.PropertiesWindow.AddDir="Добавить папку"
|
||||
Basic.PropertiesWindow.AddURL="Добавить путь/URL"
|
||||
Basic.PropertiesWindow.AddEditableListDir="Добавить папку в '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListFiles="Добавить файлы в '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListEntry="Добавить запись в '%1'"
|
||||
Basic.PropertiesWindow.EditEditableListEntry="Редактировать запись из '%1'"
|
||||
|
@ -250,7 +259,9 @@ Basic.Main.Connecting="Соединение..."
|
|||
Basic.Main.StartRecording="Начать запись"
|
||||
Basic.Main.StartStreaming="Запустить трансляцию"
|
||||
Basic.Main.StopRecording="Остановить запись"
|
||||
Basic.Main.StoppingRecording="Остановка Записи..."
|
||||
Basic.Main.StopStreaming="Остановить трансляцию"
|
||||
Basic.Main.StoppingStreaming="Остановка вещания..."
|
||||
Basic.Main.ForceStopStreaming="Остановить передачу (отменить задержку)"
|
||||
|
||||
Basic.MainMenu.File="&Файл"
|
||||
|
@ -287,6 +298,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="Переместить &Наверх"
|
|||
Basic.MainMenu.Edit.Order.MoveToBottom="Переместить &Вниз"
|
||||
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.Profile="Профиль"
|
||||
|
||||
|
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="Тема"
|
|||
Basic.Settings.General.Language="Язык"
|
||||
Basic.Settings.General.WarnBeforeStartingStream="Показывать окно подтверждения при запуске трансляции"
|
||||
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.StreamType="Тип вещания"
|
||||
|
@ -431,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="Задержка включения мик
|
|||
Basic.Settings.Audio.UnknownAudioDevice="[Устройство не подключено или недоступно]"
|
||||
|
||||
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.Audio.BufferingTime="Время буферизации аудио"
|
||||
Basic.Settings.Advanced.Video.ColorFormat="Цветовой формат"
|
||||
|
|
|
@ -82,6 +82,7 @@ Basic.DisplayCapture="Zachytávanie monitora"
|
|||
|
||||
|
||||
|
||||
|
||||
Basic.Main.AddSceneDlg.Title="Pridať scénu"
|
||||
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.Help="Pomoc (&H)"
|
||||
Basic.MainMenu.Help.Logs="&Log súbory"
|
||||
Basic.MainMenu.Help.Logs.ShowLogs="Zobraziť log &súbory"
|
||||
|
|
|
@ -80,6 +80,7 @@ Basic.DisplayCapture="Zajemanje zaslona"
|
|||
|
||||
|
||||
|
||||
|
||||
Basic.Main.AddSceneDlg.Title="Dodaj seceno"
|
||||
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.Help="&Pomoč"
|
||||
Basic.MainMenu.Help.Logs="&Dnevniki"
|
||||
Basic.MainMenu.Help.Logs.ShowLogs="&Pokaži Zapisnik"
|
||||
|
|
|
@ -118,6 +118,7 @@ LicenseAgreement.Exit="Izlaz"
|
|||
Remux.SourceFile="OBS snimak"
|
||||
Remux.TargetFile="Datoteka"
|
||||
Remux.Remux="Remux"
|
||||
Remux.OBSRecording="OBS snimak"
|
||||
Remux.FinishedTitle="Remux završen"
|
||||
Remux.Finished="Završen remux snimka"
|
||||
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"
|
||||
|
||||
|
||||
Deinterlacing="Deinterlejsing"
|
||||
Deinterlacing.Discard="Odbaci"
|
||||
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.NoProperties="Nema dostupnih svojstava"
|
||||
Basic.PropertiesWindow.AddFiles="Dodaj datoteke"
|
||||
Basic.PropertiesWindow.AddDir="Dodaj direktorijum"
|
||||
Basic.PropertiesWindow.AddURL="Dodaj putanju/URL"
|
||||
Basic.PropertiesWindow.AddEditableListDir="Dodaj direktorijum u '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListFiles="Dodaj datoteke u '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListEntry="Dodaj zapise u '%1'"
|
||||
Basic.PropertiesWindow.EditEditableListEntry="Izmeni zapise za '%1'"
|
||||
|
@ -249,7 +253,9 @@ Basic.Main.Connecting="Povezivanje..."
|
|||
Basic.Main.StartRecording="Počni snimanje"
|
||||
Basic.Main.StartStreaming="Počni strimovanje"
|
||||
Basic.Main.StopRecording="Zaustavi snimanje"
|
||||
Basic.Main.StoppingRecording="Zaustavljanje snimanja..."
|
||||
Basic.Main.StopStreaming="Zaustavi strimovanje"
|
||||
Basic.Main.StoppingStreaming="Zaustavljanje emitovanja..."
|
||||
Basic.Main.ForceStopStreaming="Zaustavi strimovanje (poništi odlaganje)"
|
||||
|
||||
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.AdvAudio="N&apredna podešavanja zvuka"
|
||||
|
||||
|
||||
Basic.MainMenu.SceneCollection="Kolekcija &scena"
|
||||
Basic.MainMenu.Profile="&Profil"
|
||||
|
||||
|
@ -307,6 +314,7 @@ Basic.Settings.General.Theme="Tema"
|
|||
Basic.Settings.General.Language="Jezik"
|
||||
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.HideProjectorCursor="Sakrij pokazivač na projektorima"
|
||||
Basic.Settings.General.Snapping="Poravnavanje privlačenjem izvora"
|
||||
Basic.Settings.General.ScreenSnapping="Privuci izvore ivici ekrana"
|
||||
Basic.Settings.General.CenterSnapping="Privuci izvore horizontalnoj i vertikalnoj sredini"
|
||||
|
|
|
@ -118,6 +118,7 @@ LicenseAgreement.Exit="Излаз"
|
|||
Remux.SourceFile="OBS снимак"
|
||||
Remux.TargetFile="Датотека"
|
||||
Remux.Remux="Remux"
|
||||
Remux.OBSRecording="OBS снимак"
|
||||
Remux.FinishedTitle="Remux завршен"
|
||||
Remux.Finished="Завршен remux снимка"
|
||||
Remux.FinishedError="Remux завршен, али датотека можда није комплетирана"
|
||||
|
@ -143,6 +144,7 @@ Basic.DisplayCapture="Прикажи улаз"
|
|||
|
||||
Basic.Main.PreviewConextMenu.Enable="Омогући преглед"
|
||||
|
||||
|
||||
Deinterlacing="Деинтерлејсинг"
|
||||
Deinterlacing.Discard="Одбаци"
|
||||
Deinterlacing.Retro="Ретро"
|
||||
|
@ -185,7 +187,9 @@ Basic.PropertiesWindow.ConfirmTitle="Подешавања промењена"
|
|||
Basic.PropertiesWindow.Confirm="Постоје подешавања која нису сачувана. Да ли желите да их сачувате?"
|
||||
Basic.PropertiesWindow.NoProperties="Нема доступних својстава"
|
||||
Basic.PropertiesWindow.AddFiles="Додај датотеке"
|
||||
Basic.PropertiesWindow.AddDir="Додај директоријум"
|
||||
Basic.PropertiesWindow.AddURL="Додај путању/URL"
|
||||
Basic.PropertiesWindow.AddEditableListDir="Додај директоријум у '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListFiles="Додај датотеке у '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListEntry="Додај записе у '%1'"
|
||||
Basic.PropertiesWindow.EditEditableListEntry="Измени записе за '%1'"
|
||||
|
@ -249,7 +253,9 @@ Basic.Main.Connecting="Повезивање..."
|
|||
Basic.Main.StartRecording="Почни снимање"
|
||||
Basic.Main.StartStreaming="Почни стримовање"
|
||||
Basic.Main.StopRecording="Заустави снимање"
|
||||
Basic.Main.StoppingRecording="Заустављање снимања..."
|
||||
Basic.Main.StopStreaming="Заустави стримовање"
|
||||
Basic.Main.StoppingStreaming="Заустављање емитовања..."
|
||||
Basic.Main.ForceStopStreaming="Заустави стримовање (поништи одлагање)"
|
||||
|
||||
Basic.MainMenu.File="Фајл (&F)"
|
||||
|
@ -286,6 +292,7 @@ Basic.MainMenu.Edit.Order.MoveToTop="Помери на врх (&T)"
|
|||
Basic.MainMenu.Edit.Order.MoveToBottom="Помери на дно (&B)"
|
||||
Basic.MainMenu.Edit.AdvAudio="Н&апредна подешавања звука"
|
||||
|
||||
|
||||
Basic.MainMenu.SceneCollection="Колекција сцена (&S)"
|
||||
Basic.MainMenu.Profile="Профил (&P)"
|
||||
|
||||
|
@ -307,6 +314,7 @@ Basic.Settings.General.Theme="Тема"
|
|||
Basic.Settings.General.Language="Језик"
|
||||
Basic.Settings.General.WarnBeforeStartingStream="Прикажи прозор за потврду када се започињу стримови"
|
||||
Basic.Settings.General.WarnBeforeStoppingStream="Прикажи прозор за потврду када се заустављају стримови"
|
||||
Basic.Settings.General.HideProjectorCursor="Сакриј показивач на пројекторима"
|
||||
Basic.Settings.General.Snapping="Поравнавање привлачењем извора"
|
||||
Basic.Settings.General.ScreenSnapping="Привуци изворе ивици екрана"
|
||||
Basic.Settings.General.CenterSnapping="Привуци изворе хоризонталној и вертикалној средини"
|
||||
|
|
|
@ -82,10 +82,12 @@ ConfirmExit.Text="OBS är aktivt. Alla strömmar/inspelningar kommer att stäng
|
|||
|
||||
ConfirmRemove.Title="Bekräfta borttagning"
|
||||
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.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.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.Disconnected="Nedkopplad från servern."
|
||||
|
||||
|
@ -138,10 +140,17 @@ Basic.DisplayCapture="Bildskärmskälla"
|
|||
|
||||
Basic.Main.PreviewConextMenu.Enable="Förhandsvisa"
|
||||
|
||||
ScaleFiltering="Skalningsfiltrering"
|
||||
ScaleFiltering.Bilinear="Bilinjär"
|
||||
ScaleFiltering.Bicubic="Bikubisk"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
|
||||
Deinterlacing.Discard="Avfärda"
|
||||
Deinterlacing.Retro="Retro"
|
||||
Deinterlacing.Linear="Linjär"
|
||||
Deinterlacing.Linear2x="Linjär 2x"
|
||||
Deinterlacing.Yadif="Yadif"
|
||||
Deinterlacing.Yadif2x="Yadif 2x"
|
||||
Deinterlacing.TopFieldFirst="Övre 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.NoProperties="Inga inställningar tillgängliga"
|
||||
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.AddEditableListDir="Lägg till mapp i '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListFiles="Lägg till filer i '%1'"
|
||||
|
||||
Basic.PropertiesView.FPS.Simple="Enkla bildfrekvensvärden"
|
||||
|
@ -237,7 +248,9 @@ Basic.Main.Connecting="Ansluter..."
|
|||
Basic.Main.StartRecording="Starta inspelning"
|
||||
Basic.Main.StartStreaming="Börja strömma"
|
||||
Basic.Main.StopRecording="Stoppa inspelning"
|
||||
Basic.Main.StoppingRecording="Stoppar inspelning..."
|
||||
Basic.Main.StopStreaming="Sluta strömma"
|
||||
Basic.Main.StoppingStreaming="Stoppar ström..."
|
||||
Basic.Main.ForceStopStreaming="Sluta strömma (ignorera fördröjning)"
|
||||
|
||||
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.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.Profile="&Profil"
|
||||
|
||||
|
@ -295,13 +314,16 @@ Basic.Settings.General.Theme=" Tema"
|
|||
Basic.Settings.General.Language="Språk"
|
||||
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.HideProjectorCursor="Dölj pekaren över projektorer"
|
||||
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.SourceSnapping="Fäst källor till andra källor"
|
||||
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.StreamType="Streamtyp"
|
||||
Basic.Settings.Stream="Ström"
|
||||
Basic.Settings.Stream.StreamType="Strömtyp"
|
||||
|
||||
Basic.Settings.Output="Utmatning"
|
||||
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.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"
|
||||
|
||||
|
@ -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.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.Audio.BufferingTime="Ljudbuffringstid"
|
||||
Basic.Settings.Advanced.Video.ColorFormat="Färgformat"
|
||||
|
|
|
@ -84,6 +84,8 @@ New="புதிய"
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -50,6 +50,7 @@ Basic.Scene="ฉาก"
|
|||
|
||||
|
||||
|
||||
|
||||
Basic.Main.AddSceneDlg.Title="เพิ่มฉาก"
|
||||
|
||||
Basic.Main.DefaultSceneName.Text="ฉาก %1"
|
||||
|
@ -87,6 +88,7 @@ Basic.MainMenu.File.Exit="อ&อก"
|
|||
|
||||
|
||||
|
||||
|
||||
Basic.MainMenu.Help.CheckForUpdates="ตรวจสอบการอัพเดต"
|
||||
|
||||
Basic.Settings.ConfirmTitle="ยืนยันการเปลี่ยนแปลง"
|
||||
|
|
|
@ -121,6 +121,7 @@ Basic.DisplayCapture="Ekran Yakalama"
|
|||
Basic.Main.PreviewConextMenu.Enable="Önizlemeyi Etkinleştir"
|
||||
|
||||
|
||||
|
||||
Basic.Main.AddSceneDlg.Title="Sahne Ekle"
|
||||
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.AdvAudio="&Gelişmiş Ses Özellikleri"
|
||||
|
||||
|
||||
Basic.MainMenu.SceneCollection="&Sahne Koleksiyonu"
|
||||
Basic.MainMenu.Profile="&Profil"
|
||||
|
||||
|
|
|
@ -6,8 +6,9 @@ OK="Так"
|
|||
Apply="Застосувати"
|
||||
Cancel="Скасувати"
|
||||
Close="Закрити"
|
||||
Save="зберегти"
|
||||
Save="Зберегти"
|
||||
Discard="Відхилити"
|
||||
Disable="Вимкнено"
|
||||
Yes="Так"
|
||||
No="Ні"
|
||||
Add="Додати"
|
||||
|
@ -26,6 +27,10 @@ Mixer="Мікшер"
|
|||
Browse="Огляд"
|
||||
Mono="Моно"
|
||||
Stereo="Стерео"
|
||||
DroppedFrames="Пропущено кадрів %1 (%2%)"
|
||||
PreviewProjector="Повноекранний Проектор (вікно Перегляду)"
|
||||
SceneProjector="Повноекранний Проектор (Сцена)"
|
||||
SourceProjector="Повноекранний Проектор (Джерело)"
|
||||
Clear="Очистити"
|
||||
Revert="Відмінити"
|
||||
Show="Показати"
|
||||
|
@ -34,9 +39,33 @@ Untitled="Без назви"
|
|||
New="Новий"
|
||||
Duplicate="Дублювати"
|
||||
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.Scenes="Сцени"
|
||||
|
@ -47,29 +76,139 @@ NameExists.Text="Ім'я вже використовується."
|
|||
NoNameEntered.Title="Невірно введено ім'я"
|
||||
NoNameEntered.Text="Не можна використовувати порожні назви."
|
||||
|
||||
ConfirmStart.Title="Почати трансляцію?"
|
||||
ConfirmStart.Text="Ви впевнені, що хочете почати трансляцію?"
|
||||
|
||||
ConfirmStop.Title="Закінчити трансляцію?"
|
||||
ConfirmStop.Text="Ви впевнені, що хочете закінчити трансляцію?"
|
||||
|
||||
ConfirmExit.Title="Вийти з OBS?"
|
||||
ConfirmExit.Text="OBS ще працює. Всі розпочаті трансляції та записи буде припинено. Ви дійсно хочете вийти?"
|
||||
|
||||
ConfirmRemove.Title="Підтвердження видалення"
|
||||
ConfirmRemove.Text="Ви дійсно бажаєте видалити \"$1\"?"
|
||||
ConfirmRemove.TextMultiple="Ви впевнені, що хочете видалити %1 елементів?"
|
||||
|
||||
Output.ConnectFail.Title="Не вдалося підключитися"
|
||||
Output.ConnectFail.BadPath="Шлях або URL-адреса недосяжні. Будь ласка, перевірте налаштування програмного забезпечення."
|
||||
Output.ConnectFail.ConnectFailed="Не вдалося підключитися до сервера"
|
||||
Output.ConnectFail.InvalidStream="Немає доступу до вказаного каналу або до ключа трансляції, будь ласка перевірте свій ключ для трансляцій. Якщо він дійсний, то можливо є проблеми зв'язку з сервером."
|
||||
Output.ConnectFail.Error="Під час зв'язку з сервером відбулася несподівана помилка. Подробиці знаходяться у лог-файлі."
|
||||
Output.ConnectFail.Disconnected="Від'єднаний від серверу."
|
||||
|
||||
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.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="Вихід"
|
||||
|
||||
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.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)"
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -7,7 +7,8 @@ Apply="Áp dụng"
|
|||
Cancel="Hùy"
|
||||
Close="Đóng"
|
||||
Save="Lưu"
|
||||
Discard="Loại bỏ"
|
||||
Discard="Bỏ"
|
||||
Disable="Tắt"
|
||||
Yes="Có"
|
||||
No="Không"
|
||||
Add="Thêm"
|
||||
|
@ -26,29 +27,40 @@ Mixer="Máy trộn"
|
|||
Browse="trình duyệt"
|
||||
Mono="Âm thanh đơn"
|
||||
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)"
|
||||
SceneProjector="Toàn màn hình (cảnh)"
|
||||
SourceProjector="Toàn màn hình (mã nguồn)"
|
||||
SourceProjector="Toàn màn hình (nguồn)"
|
||||
Clear="Xóa"
|
||||
Revert="Phục hồi"
|
||||
Show="Hiện"
|
||||
Hide="Ẩn"
|
||||
Untitled="Chưa Đặt Tên"
|
||||
New="Tài liệu mới"
|
||||
Duplicate="tạo bản sao"
|
||||
New="Mới"
|
||||
Duplicate="Tạo bản sao"
|
||||
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="Hồ sơ cá nhân"
|
||||
TitleBar.Profile="Cấu hình"
|
||||
TitleBar.Scenes="Cảnh"
|
||||
|
||||
NameExists.Title="Tên đã tồn tại"
|
||||
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."
|
||||
|
||||
|
||||
|
@ -114,6 +126,7 @@ Basic.DisplayCapture="Chụp màn hình"
|
|||
Basic.Main.PreviewConextMenu.Enable="Bật xem trước"
|
||||
|
||||
|
||||
|
||||
Basic.Main.AddSceneDlg.Title="Thêm 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.AdvAudio="Thuộc tính âm thanh nâng cao"
|
||||
|
||||
|
||||
Basic.MainMenu.SceneCollection="& Cảnh bộ sưu tập"
|
||||
Basic.MainMenu.Profile="& Hồ sơ"
|
||||
|
||||
|
|
|
@ -87,6 +87,7 @@ ConfirmExit.Text="OBS工作中. 所有的流/录像将会停止. 你确定想要
|
|||
|
||||
ConfirmRemove.Title="确认移除"
|
||||
ConfirmRemove.Text="确定要删除 '$1' 吗?"
|
||||
ConfirmRemove.TextMultiple="您确定要删除 %1 项目吗?"
|
||||
|
||||
Output.ConnectFail.Title="连接失败"
|
||||
Output.ConnectFail.BadPath="无效的路径或URL。请检查您的设置以确认它们是有效的。"
|
||||
|
@ -144,6 +145,12 @@ Basic.DisplayCapture="显示捕获"
|
|||
|
||||
Basic.Main.PreviewConextMenu.Enable="开启预览"
|
||||
|
||||
ScaleFiltering="尺度滤波"
|
||||
ScaleFiltering.Point="点"
|
||||
ScaleFiltering.Bilinear="双线性算法"
|
||||
ScaleFiltering.Bicubic="双立方算法"
|
||||
ScaleFiltering.Lanczos="兰索斯算法"
|
||||
|
||||
Deinterlacing="去隔行扫描"
|
||||
Deinterlacing.Discard="舍弃"
|
||||
Deinterlacing.Retro="复古"
|
||||
|
@ -186,7 +193,9 @@ Basic.PropertiesWindow.ConfirmTitle="设置已更改"
|
|||
Basic.PropertiesWindow.Confirm="有未保存的更改. 你想要保存他们吗?"
|
||||
Basic.PropertiesWindow.NoProperties="没有可用的属性"
|
||||
Basic.PropertiesWindow.AddFiles="添加文件"
|
||||
Basic.PropertiesWindow.AddDir="添加目录"
|
||||
Basic.PropertiesWindow.AddURL="添加路径 /URL"
|
||||
Basic.PropertiesWindow.AddEditableListDir="将目录添加到 '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListFiles="将文件添加到 '%1'"
|
||||
Basic.PropertiesWindow.AddEditableListEntry="将条目添加到 '%1'"
|
||||
Basic.PropertiesWindow.EditEditableListEntry="编辑条目从 '%1'"
|
||||
|
@ -250,7 +259,9 @@ Basic.Main.Connecting="连接中..."
|
|||
Basic.Main.StartRecording="开始录制"
|
||||
Basic.Main.StartStreaming="开始串流"
|
||||
Basic.Main.StopRecording="停止录制"
|
||||
Basic.Main.StoppingRecording="停止录制..."
|
||||
Basic.Main.StopStreaming="停止串流"
|
||||
Basic.Main.StoppingStreaming="停止推流..."
|
||||
Basic.Main.ForceStopStreaming="停止流 (放弃延迟)"
|
||||
|
||||
Basic.MainMenu.File="& 文件"
|
||||
|
@ -287,6 +298,12 @@ Basic.MainMenu.Edit.Order.MoveToTop="移至顶部"
|
|||
Basic.MainMenu.Edit.Order.MoveToBottom="移至底部"
|
||||
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.Profile="&档案"
|
||||
|
||||
|
@ -308,11 +325,14 @@ Basic.Settings.General.Theme="主题"
|
|||
Basic.Settings.General.Language="语言"
|
||||
Basic.Settings.General.WarnBeforeStartingStream="启动流时显示确认对话框"
|
||||
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.StreamType="串流类型"
|
||||
|
@ -431,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="按住讲话延时"
|
|||
Basic.Settings.Audio.UnknownAudioDevice="[设备未连接或不可用]"
|
||||
|
||||
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.Audio.BufferingTime="音频缓冲时间"
|
||||
Basic.Settings.Advanced.Video.ColorFormat="颜色格式"
|
||||
|
|
|
@ -20,10 +20,10 @@ Properties="屬性"
|
|||
MoveUp="向上移動"
|
||||
MoveDown="向下移動"
|
||||
Settings="設定"
|
||||
Display="顯示器"
|
||||
Display="螢幕"
|
||||
Name="名稱"
|
||||
Exit="離開"
|
||||
Mixer="混合器"
|
||||
Mixer="混音器"
|
||||
Browse="瀏覽"
|
||||
Mono="單聲道"
|
||||
Stereo="立體聲"
|
||||
|
@ -40,7 +40,7 @@ New="新增"
|
|||
Duplicate="複製"
|
||||
Enable="啟用"
|
||||
DisableOSXVSync="關閉OSX垂直同步"
|
||||
ResetOSXVSyncOnExit="離開時重製OSX垂直同步"
|
||||
ResetOSXVSyncOnExit="離開時重置OSX垂直同步"
|
||||
HighResourceUsage="編碼過載!考慮降低影像設定或使用更快的編碼預設。"
|
||||
Transition="轉場"
|
||||
QuickTransitions="快速轉場"
|
||||
|
@ -57,15 +57,15 @@ QuickTransitions.EditProperties="複製來源"
|
|||
QuickTransitions.EditPropertiesTT="在修改同樣的場景時,讓修改影像來源的屬性時不需要修改輸出。\n這只能在'複製場景'被啟動時使用。\n某些來源 (如擷取或是媒體來源) 並不支援此功能且無法被單獨修改。\n變更這個值將會 (如果還存在的話) 重置目前的輸出場景。\n\n警告:由於來源會被複製,這功能可能會使用額外的系統或是影像資源。"
|
||||
QuickTransitions.HotkeyName="快速轉場:%1"
|
||||
|
||||
Basic.AddTransition="添加設置轉換動畫"
|
||||
Basic.RemoveTransition="移除設置轉換動畫"
|
||||
Basic.TransitionProperties="轉換動畫屬性"
|
||||
Basic.AddTransition="添加設置轉換"
|
||||
Basic.RemoveTransition="移除可選的轉場特效"
|
||||
Basic.TransitionProperties="轉場特效屬性"
|
||||
Basic.SceneTransitions="轉場特效"
|
||||
Basic.TransitionDuration="持續時間"
|
||||
Basic.TogglePreviewProgramMode="工作室模式"
|
||||
|
||||
TransitionNameDlg.Text="請輸入轉換動畫名稱"
|
||||
TransitionNameDlg.Title="轉換動畫名稱"
|
||||
TransitionNameDlg.Text="請輸入轉場特效名稱"
|
||||
TransitionNameDlg.Title="轉場特效名稱"
|
||||
|
||||
TitleBar.Profile="設定檔"
|
||||
TitleBar.Scenes="場景"
|
||||
|
@ -87,6 +87,7 @@ ConfirmExit.Text="正在使用 OBS,所有的串流/錄製都將被關閉。您
|
|||
|
||||
ConfirmRemove.Title="確認刪除?"
|
||||
ConfirmRemove.Text="您確定要刪除「$1」?"
|
||||
ConfirmRemove.TextMultiple="您確定要移除這%1個項目嘛?"
|
||||
|
||||
Output.ConnectFail.Title="連線失敗"
|
||||
Output.ConnectFail.BadPath="無效的路徑或 URL。 請確認您的設定是正確的。"
|
||||
|
@ -118,6 +119,7 @@ LicenseAgreement.Exit="離開"
|
|||
Remux.SourceFile="OBS 錄影"
|
||||
Remux.TargetFile="目標檔案"
|
||||
Remux.Remux="重新封裝"
|
||||
Remux.OBSRecording="OBS錄影"
|
||||
Remux.FinishedTitle="重新封裝完成"
|
||||
Remux.Finished="錄影已被重新封裝"
|
||||
Remux.FinishedError="錄影已被重新封裝,但檔案可能不完整"
|
||||
|
@ -143,6 +145,12 @@ Basic.DisplayCapture="截取螢幕"
|
|||
|
||||
Basic.Main.PreviewConextMenu.Enable="啟用預覽"
|
||||
|
||||
ScaleFiltering="縮放濾鏡"
|
||||
ScaleFiltering.Point="點"
|
||||
ScaleFiltering.Bilinear="雙線性插值"
|
||||
ScaleFiltering.Bicubic="雙三次插值"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
|
||||
Deinterlacing="去交錯"
|
||||
Deinterlacing.Discard="捨棄"
|
||||
Deinterlacing.Retro="復古"
|
||||
|
@ -152,6 +160,8 @@ Deinterlacing.Linear="線性"
|
|||
Deinterlacing.Linear2x="線性 2x"
|
||||
Deinterlacing.Yadif="Yadif"
|
||||
Deinterlacing.Yadif2x="Yadif 2x"
|
||||
Deinterlacing.TopFieldFirst="由偶數場開始"
|
||||
Deinterlacing.BottomFieldFirst="由奇數場開始"
|
||||
|
||||
Basic.Main.AddSceneDlg.Title="新增場景"
|
||||
Basic.Main.AddSceneDlg.Text="請輸入場景名稱"
|
||||
|
@ -183,12 +193,14 @@ Basic.PropertiesWindow.ConfirmTitle="設定值已變更"
|
|||
Basic.PropertiesWindow.Confirm="有尚未儲存的變更。要保存他們嗎?"
|
||||
Basic.PropertiesWindow.NoProperties="無可用的屬性"
|
||||
Basic.PropertiesWindow.AddFiles="新增檔案"
|
||||
Basic.PropertiesWindow.AddDir="新增目錄"
|
||||
Basic.PropertiesWindow.AddURL="新增路徑/URL"
|
||||
Basic.PropertiesWindow.AddEditableListDir="將目錄新增至「%1」"
|
||||
Basic.PropertiesWindow.AddEditableListFiles="將檔案新增至「%1」"
|
||||
Basic.PropertiesWindow.AddEditableListEntry="將項目新增至「%1」"
|
||||
Basic.PropertiesWindow.EditEditableListEntry="編輯「%1」的項目"
|
||||
|
||||
Basic.PropertiesView.FPS.Simple="簡單的 FPS 值"
|
||||
Basic.PropertiesView.FPS.Simple="常用 FPS 值"
|
||||
Basic.PropertiesView.FPS.Rational="有理數 FPS 值"
|
||||
Basic.PropertiesView.FPS.ValidFPSRanges="FPS 的有效範圍:"
|
||||
|
||||
|
@ -214,23 +226,23 @@ Basic.TransformWindow="場景物件變型"
|
|||
Basic.TransformWindow.Position="位置"
|
||||
Basic.TransformWindow.Rotation="旋轉"
|
||||
Basic.TransformWindow.Size="大小"
|
||||
Basic.TransformWindow.Alignment="位置原點"
|
||||
Basic.TransformWindow.BoundsType="外框類型"
|
||||
Basic.TransformWindow.BoundsAlignment="對齊外框"
|
||||
Basic.TransformWindow.Bounds="外框大小"
|
||||
Basic.TransformWindow.Alignment="對齊基準"
|
||||
Basic.TransformWindow.BoundsType="邊框類型"
|
||||
Basic.TransformWindow.BoundsAlignment="邊框內對齊"
|
||||
Basic.TransformWindow.Bounds="邊框大小"
|
||||
Basic.TransformWindow.Crop="剪裁"
|
||||
|
||||
Basic.TransformWindow.Alignment.TopLeft="左上角"
|
||||
Basic.TransformWindow.Alignment.TopCenter="水平靠上"
|
||||
Basic.TransformWindow.Alignment.TopRight="右上角"
|
||||
Basic.TransformWindow.Alignment.CenterLeft="垂直靠左"
|
||||
Basic.TransformWindow.Alignment.Center="正中心"
|
||||
Basic.TransformWindow.Alignment.CenterRight="垂直靠右"
|
||||
Basic.TransformWindow.Alignment.BottomLeft="左下角"
|
||||
Basic.TransformWindow.Alignment.BottomCenter="水平靠下"
|
||||
Basic.TransformWindow.Alignment.BottomRight="右下角"
|
||||
Basic.TransformWindow.Alignment.TopLeft="置頂靠左"
|
||||
Basic.TransformWindow.Alignment.TopCenter="置頂居中"
|
||||
Basic.TransformWindow.Alignment.TopRight="置頂靠右"
|
||||
Basic.TransformWindow.Alignment.CenterLeft="靠左居中"
|
||||
Basic.TransformWindow.Alignment.Center="置中"
|
||||
Basic.TransformWindow.Alignment.CenterRight="靠右居中"
|
||||
Basic.TransformWindow.Alignment.BottomLeft="置底靠左"
|
||||
Basic.TransformWindow.Alignment.BottomCenter="置底居中"
|
||||
Basic.TransformWindow.Alignment.BottomRight="置底靠右"
|
||||
|
||||
Basic.TransformWindow.BoundsType.None="無外框"
|
||||
Basic.TransformWindow.BoundsType.None="無邊框"
|
||||
Basic.TransformWindow.BoundsType.MaxOnly="等比例縮放至框內,不超過原始大小"
|
||||
Basic.TransformWindow.BoundsType.ScaleInner="等比例縮放至框內"
|
||||
Basic.TransformWindow.BoundsType.ScaleOuter="等比例縮放至框外"
|
||||
|
@ -247,7 +259,9 @@ Basic.Main.Connecting="連線中……"
|
|||
Basic.Main.StartRecording="開始錄製"
|
||||
Basic.Main.StartStreaming="開始串流"
|
||||
Basic.Main.StopRecording="停止錄製"
|
||||
Basic.Main.StoppingRecording="停止錄製..."
|
||||
Basic.Main.StopStreaming="停止串流"
|
||||
Basic.Main.StoppingStreaming="停止串流..."
|
||||
Basic.Main.ForceStopStreaming="停止實況(丟棄延遲)"
|
||||
|
||||
Basic.MainMenu.File="檔案 (&F)"
|
||||
|
@ -274,9 +288,9 @@ Basic.MainMenu.Edit.Transform.Rotate90CCW="逆時針旋轉 90°"
|
|||
Basic.MainMenu.Edit.Transform.Rotate180="旋轉 180°"
|
||||
Basic.MainMenu.Edit.Transform.FlipHorizontal="水平翻轉 (&H)"
|
||||
Basic.MainMenu.Edit.Transform.FlipVertical="垂直翻轉 (&V)"
|
||||
Basic.MainMenu.Edit.Transform.FitToScreen="適合螢幕 (&F)"
|
||||
Basic.MainMenu.Edit.Transform.StretchToScreen="拉伸到螢幕 (&S)"
|
||||
Basic.MainMenu.Edit.Transform.CenterToScreen="垂直至中畫面 (&C)"
|
||||
Basic.MainMenu.Edit.Transform.FitToScreen="縮放到螢幕大小,不改變比例 (&F)"
|
||||
Basic.MainMenu.Edit.Transform.StretchToScreen="拉伸到螢幕大小 (&S)"
|
||||
Basic.MainMenu.Edit.Transform.CenterToScreen="置中畫面 (&C)"
|
||||
Basic.MainMenu.Edit.Order="排序 (&O)"
|
||||
Basic.MainMenu.Edit.Order.MoveUp="向上移動 (&U)"
|
||||
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.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.Profile="設定檔 (&P)"
|
||||
|
||||
|
@ -305,6 +325,14 @@ Basic.Settings.General.Theme="佈景主題"
|
|||
Basic.Settings.General.Language="語言"
|
||||
Basic.Settings.General.WarnBeforeStartingStream="啟動串流時顯示確認對話框"
|
||||
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.StreamType="串流類型"
|
||||
|
@ -314,30 +342,30 @@ Basic.Settings.Output.Format="錄影格式"
|
|||
Basic.Settings.Output.Encoder="編碼器"
|
||||
Basic.Settings.Output.SelectDirectory="選擇錄影資料夾"
|
||||
Basic.Settings.Output.SelectFile="選擇錄影檔案"
|
||||
Basic.Settings.Output.EnforceBitrate="強制設定實況流量上限"
|
||||
Basic.Settings.Output.EnforceBitrate="強制設定串流位元率上限"
|
||||
Basic.Settings.Output.Mode="輸出模式"
|
||||
Basic.Settings.Output.Mode.Simple="簡易"
|
||||
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.Stream="與實況同等畫質"
|
||||
Basic.Settings.Output.Simple.RecordingQuality.Stream="與串流同等畫質"
|
||||
Basic.Settings.Output.Simple.RecordingQuality.Small="高畫質,檔案大小中等"
|
||||
Basic.Settings.Output.Simple.RecordingQuality.HQ="近乎無損畫質,檔案大小巨大"
|
||||
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="警告:如果錄影與實況同時運作,並使用與實況不同的編碼品質設定將會增加額外的CPU使用量"
|
||||
Basic.Settings.Output.Simple.Warn.Lossless="警告:無損畫質將會產生大容量的暫存檔!無損畫質在高解析度或高幀率時,可能會每分鐘使用高達 7GB(gigabytes)的容量。除非您擁有海量的硬碟空間,否則不建議使用無損畫質錄製長時間的影片。"
|
||||
Basic.Settings.Output.Simple.Warn.VideoBitrate="警告:串流影像位元率將會被設為 %1,他是目前串流位元率的上限。如果您確定想要超過 %1 的限制,請開啟進階編碼器選項,並取消「強制設定串流位元率上限」。"
|
||||
Basic.Settings.Output.Simple.Warn.AudioBitrate="警告:實況串流位元率將會被設為 %1,他是目前串流位元率的上限。如果您確定想要超過 %1 的限制,請開啟進階編碼器選項,並取消「強制設定串流位元率上限」。"
|
||||
Basic.Settings.Output.Simple.Warn.Encoder="警告:如果錄影與串流同時運作,並使用與串流不同的編碼品質設定將會增加額外的CPU使用量"
|
||||
Basic.Settings.Output.Simple.Warn.Lossless="警告:無損畫質將會產生非常大的檔案!無損畫質在高解析度或高影格率時,可能會每分鐘使用高達 7GB(gigabytes)的容量。除非您擁有非常大量的硬碟空間,否則不建議使用無損畫質錄製長時間的影片。"
|
||||
Basic.Settings.Output.Simple.Warn.Lossless.Msg="你確定你想要使用無損畫質?"
|
||||
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.Hardware.QSV="硬體 (QSV)"
|
||||
Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="硬體 (NVENC)"
|
||||
Basic.Settings.Output.Simple.Encoder.Hardware.QSV="硬體編碼 (QSV)"
|
||||
Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="硬體編碼 (NVENC)"
|
||||
Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="軟體編碼( x264 預設低 CPU 使用率,將增加檔案容量 )"
|
||||
Basic.Settings.Output.VideoBitrate="影像頻率(kbit/s)"
|
||||
Basic.Settings.Output.AudioBitrate="音效頻率(kbit/s)"
|
||||
Basic.Settings.Output.VideoBitrate="影像位元率(kbit/s)"
|
||||
Basic.Settings.Output.AudioBitrate="音效位元率(kbit/s)"
|
||||
Basic.Settings.Output.Reconnect="自動重新連線"
|
||||
Basic.Settings.Output.RetryDelay="重試間隔(秒)"
|
||||
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.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.Adapter="顯示卡:"
|
||||
|
@ -392,11 +421,11 @@ Basic.Settings.Video.BaseResolution="來源(全畫面)解析度:"
|
|||
Basic.Settings.Video.ScaledResolution="輸出(縮放)解析度:"
|
||||
Basic.Settings.Video.DownscaleFilter="壓縮方式:"
|
||||
Basic.Settings.Video.DisableAeroWindows="暫時關閉 Aero 特效(僅限 Windows)"
|
||||
Basic.Settings.Video.FPS="FPS(幀率):"
|
||||
Basic.Settings.Video.FPS="FPS (影格率):"
|
||||
Basic.Settings.Video.FPSCommon="常用 FPS:"
|
||||
Basic.Settings.Video.FPSInteger="自訂 FPS:"
|
||||
Basic.Settings.Video.FPSFraction="自訂 FPS 比率:"
|
||||
Basic.Settings.Video.Numerator="幀數(分子):"
|
||||
Basic.Settings.Video.Numerator="影格數(分子):"
|
||||
Basic.Settings.Video.Denominator="秒數(分母):"
|
||||
Basic.Settings.Video.Renderer="渲染器:"
|
||||
Basic.Settings.Video.InvalidResolution="無效的解析度。 必須表達為 [寬]x[高] (例如:1920x1080)"
|
||||
|
@ -422,6 +451,11 @@ Basic.Settings.Audio.PushToTalkDelay="按壓時說話 延遲"
|
|||
Basic.Settings.Audio.UnknownAudioDevice="[設備未連接或不可用]"
|
||||
|
||||
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.Audio.BufferingTime="音訊緩衝時間"
|
||||
Basic.Settings.Advanced.Video.ColorFormat="色彩格式"
|
||||
|
@ -472,25 +506,25 @@ Hotkeys.Windows="Windows"
|
|||
Hotkeys.Super="超級"
|
||||
Hotkeys.Menu="選單"
|
||||
Hotkeys.Space="空格"
|
||||
Hotkeys.NumpadNum="數字鍵盤 %1"
|
||||
Hotkeys.NumpadMultiply="數字鍵 乘號"
|
||||
Hotkeys.NumpadDivide="數字鍵 除號"
|
||||
Hotkeys.NumpadAdd="數字鍵 加號"
|
||||
Hotkeys.NumpadSubtract="數字鍵 減號"
|
||||
Hotkeys.NumpadDecimal="數字鍵 十進位"
|
||||
Hotkeys.NumpadNum="九宮鍵 %1"
|
||||
Hotkeys.NumpadMultiply="九宮鍵 乘號"
|
||||
Hotkeys.NumpadDivide="九宮鍵 除號"
|
||||
Hotkeys.NumpadAdd="九宮鍵 加號"
|
||||
Hotkeys.NumpadSubtract="九宮鍵 減號"
|
||||
Hotkeys.NumpadDecimal="九宮鍵 十進位"
|
||||
Hotkeys.AppleKeypadNum="%1 (九宮鍵)"
|
||||
Hotkeys.AppleKeypadMultiply="* (九宮鍵)"
|
||||
Hotkeys.AppleKeypadDivide="/ (九宮鍵)"
|
||||
Hotkeys.AppleKeypadAdd="+ (鍵盤)"
|
||||
Hotkeys.AppleKeypadSubtract="+ (鍵盤)"
|
||||
Hotkeys.AppleKeypadDecimal=". (鍵盤)"
|
||||
Hotkeys.AppleKeypadEqual="+ (鍵盤)"
|
||||
Hotkeys.AppleKeypadAdd="+ (九宮鍵)"
|
||||
Hotkeys.AppleKeypadSubtract="+ (九宮鍵)"
|
||||
Hotkeys.AppleKeypadDecimal=". (九宮鍵)"
|
||||
Hotkeys.AppleKeypadEqual="+ (九宮鍵)"
|
||||
Hotkeys.MouseButton="滑鼠 %1"
|
||||
|
||||
Mute="靜音"
|
||||
Unmute="取消靜音"
|
||||
Push-to-mute="按壓時靜音"
|
||||
Push-to-talk="點擊即說"
|
||||
Push-to-talk="按壓時說話"
|
||||
|
||||
SceneItemShow="顯示 「%1」"
|
||||
SceneItemHide="隱藏 「%1」"
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>957</width>
|
||||
<width>1110</width>
|
||||
<height>724</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
@ -575,210 +575,224 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>4</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QComboBox" name="transitions">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>120</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<property name="spacing">
|
||||
<number>4</number>
|
||||
</property>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="transitionAdd">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>22</width>
|
||||
<height>22</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Basic.AddTransition</string>
|
||||
</property>
|
||||
<property name="accessibleName">
|
||||
<string>Basic.AddTransition</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="obs.qrc">
|
||||
<normaloff>:/res/images/add.png</normaloff>:/res/images/add.png</iconset>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="themeID" stdset="0">
|
||||
<string notr="true">addIconSmall</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="transitionRemove">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>22</width>
|
||||
<height>22</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Basic.RemoveTransition</string>
|
||||
</property>
|
||||
<property name="accessibleName">
|
||||
<string>Basic.RemoveTransition</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="obs.qrc">
|
||||
<normaloff>:/res/images/list_remove.png</normaloff>:/res/images/list_remove.png</iconset>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="themeID" stdset="0">
|
||||
<string notr="true">removeIconSmall</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="transitionProps">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>22</width>
|
||||
<height>22</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Basic.TransitionProperties</string>
|
||||
</property>
|
||||
<property name="accessibleName">
|
||||
<string>Basic.TransitionProperties</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="obs.qrc">
|
||||
<normaloff>:/res/images/configuration21_16.png</normaloff>:/res/images/configuration21_16.png</iconset>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="themeID" stdset="0">
|
||||
<string notr="true">configIconSmall</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<property name="spacing">
|
||||
<number>4</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="transitionDurationLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Basic.TransitionDuration</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>transitionDuration</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="transitionDuration">
|
||||
<property name="suffix">
|
||||
<string>ms</string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>10000</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>50</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>300</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<widget class="QLabel" name="sceneTransitionsLabel">
|
||||
<property name="text">
|
||||
<string>Basic.SceneTransitions</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QWidget" name="transitionsContainer" native="true">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>4</number>
|
||||
</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>
|
||||
<widget class="QComboBox" name="transitions">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>120</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<property name="spacing">
|
||||
<number>4</number>
|
||||
</property>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Preferred</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="transitionAdd">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>22</width>
|
||||
<height>22</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Basic.AddTransition</string>
|
||||
</property>
|
||||
<property name="accessibleName">
|
||||
<string>Basic.AddTransition</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="obs.qrc">
|
||||
<normaloff>:/res/images/add.png</normaloff>:/res/images/add.png</iconset>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="themeID" stdset="0">
|
||||
<string notr="true">addIconSmall</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="transitionRemove">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>22</width>
|
||||
<height>22</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Basic.RemoveTransition</string>
|
||||
</property>
|
||||
<property name="accessibleName">
|
||||
<string>Basic.RemoveTransition</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="obs.qrc">
|
||||
<normaloff>:/res/images/list_remove.png</normaloff>:/res/images/list_remove.png</iconset>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="themeID" stdset="0">
|
||||
<string notr="true">removeIconSmall</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="transitionProps">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>22</width>
|
||||
<height>22</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Basic.TransitionProperties</string>
|
||||
</property>
|
||||
<property name="accessibleName">
|
||||
<string>Basic.TransitionProperties</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="obs.qrc">
|
||||
<normaloff>:/res/images/configuration21_16.png</normaloff>:/res/images/configuration21_16.png</iconset>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="themeID" stdset="0">
|
||||
<string notr="true">configIconSmall</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<property name="spacing">
|
||||
<number>4</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="transitionDurationLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Basic.TransitionDuration</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="transitionDuration">
|
||||
<property name="suffix">
|
||||
<string>ms</string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>10000</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>50</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>300</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
|
@ -790,7 +804,7 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>957</width>
|
||||
<width>1110</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
@ -861,6 +875,7 @@
|
|||
</widget>
|
||||
<addaction name="transformMenu"/>
|
||||
<addaction name="orderMenu"/>
|
||||
<addaction name="actionLockPreview"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="actionAdvAudioProperties"/>
|
||||
</widget>
|
||||
|
@ -884,8 +899,23 @@
|
|||
<addaction name="actionRemoveSceneCollection"/>
|
||||
<addaction name="separator"/>
|
||||
</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="menuBasic_MainMenu_Edit"/>
|
||||
<addaction name="viewMenu"/>
|
||||
<addaction name="profileMenu"/>
|
||||
<addaction name="sceneCollectionMenu"/>
|
||||
<addaction name="menuBasic_MainMenu_Help"/>
|
||||
|
@ -1248,6 +1278,47 @@
|
|||
<string>Basic.MainMenu.AlwaysOnTop</string>
|
||||
</property>
|
||||
</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>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>896</width>
|
||||
<width>981</width>
|
||||
<height>667</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
@ -185,14 +185,21 @@
|
|||
</property>
|
||||
</widget>
|
||||
</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">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0" colspan="2">
|
||||
<item row="9" column="0" colspan="2">
|
||||
<widget class="QGroupBox" name="groupBox_10">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
|
@ -285,6 +292,23 @@
|
|||
</layout>
|
||||
</widget>
|
||||
</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>
|
||||
</widget>
|
||||
<widget class="QWidget" name="streamPage">
|
||||
|
@ -2497,8 +2521,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>80</width>
|
||||
<height>16</height>
|
||||
<width>98</width>
|
||||
<height>28</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
|
@ -2862,9 +2886,9 @@
|
|||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>559</width>
|
||||
<height>563</height>
|
||||
<y>-206</y>
|
||||
<width>803</width>
|
||||
<height>820</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_16">
|
||||
|
@ -2883,6 +2907,28 @@
|
|||
<item alignment="Qt::AlignTop">
|
||||
<widget class="QWidget" name="widget_11" native="true">
|
||||
<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>
|
||||
<widget class="QGroupBox" name="advancedVideoContainer">
|
||||
<property name="title">
|
||||
|
@ -3212,6 +3258,28 @@
|
|||
</layout>
|
||||
</widget>
|
||||
</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>
|
||||
<widget class="QLabel" name="advancedMsg">
|
||||
<property name="styleSheet">
|
||||
|
@ -3292,8 +3360,8 @@
|
|||
<slot>setCurrentIndex(int)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>159</x>
|
||||
<y>34</y>
|
||||
<x>310</x>
|
||||
<y>29</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>241</x>
|
||||
|
@ -3308,8 +3376,8 @@
|
|||
<slot>setCurrentIndex(int)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>586</x>
|
||||
<y>38</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>250</x>
|
||||
|
@ -3324,12 +3392,12 @@
|
|||
<slot>setVisible(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>875</x>
|
||||
<y>360</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>875</x>
|
||||
<y>427</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3340,12 +3408,12 @@
|
|||
<slot>setVisible(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>875</x>
|
||||
<y>360</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>466</x>
|
||||
<y>427</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3356,12 +3424,12 @@
|
|||
<slot>setVisible(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>875</x>
|
||||
<y>360</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>875</x>
|
||||
<y>503</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3372,12 +3440,12 @@
|
|||
<slot>setVisible(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>875</x>
|
||||
<y>360</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>466</x>
|
||||
<y>503</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3388,12 +3456,12 @@
|
|||
<slot>setCurrentIndex(int)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>705</x>
|
||||
<y>144</y>
|
||||
<x>259</x>
|
||||
<y>48</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>396</x>
|
||||
<y>245</y>
|
||||
<x>241</x>
|
||||
<y>30</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3404,12 +3472,12 @@
|
|||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>514</x>
|
||||
<y>344</y>
|
||||
<x>259</x>
|
||||
<y>60</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>748</x>
|
||||
<y>344</y>
|
||||
<x>228</x>
|
||||
<y>50</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3420,12 +3488,12 @@
|
|||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>864</x>
|
||||
<y>141</y>
|
||||
<x>259</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>427</x>
|
||||
<y>178</y>
|
||||
<x>228</x>
|
||||
<y>29</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3436,12 +3504,12 @@
|
|||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>864</x>
|
||||
<y>141</y>
|
||||
<x>259</x>
|
||||
<y>60</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>864</x>
|
||||
<y>178</y>
|
||||
<x>228</x>
|
||||
<y>50</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3452,12 +3520,12 @@
|
|||
<slot>setCurrentIndex(int)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>864</x>
|
||||
<y>141</y>
|
||||
<x>259</x>
|
||||
<y>60</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>427</x>
|
||||
<y>215</y>
|
||||
<x>259</x>
|
||||
<y>60</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3468,12 +3536,12 @@
|
|||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>864</x>
|
||||
<y>141</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>864</x>
|
||||
<y>215</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3484,12 +3552,12 @@
|
|||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>427</x>
|
||||
<y>355</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>862</x>
|
||||
<y>355</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3500,12 +3568,12 @@
|
|||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>424</x>
|
||||
<y>331</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>658</x>
|
||||
<y>331</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3516,12 +3584,12 @@
|
|||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>875</x>
|
||||
<y>254</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>466</x>
|
||||
<y>291</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3532,12 +3600,12 @@
|
|||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>516</x>
|
||||
<y>411</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>250</x>
|
||||
<y>92</y>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3548,12 +3616,12 @@
|
|||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>533</x>
|
||||
<y>273</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>449</x>
|
||||
<y>301</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3564,12 +3632,12 @@
|
|||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>690</x>
|
||||
<y>454</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>690</x>
|
||||
<y>506</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3580,12 +3648,12 @@
|
|||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>376</x>
|
||||
<y>196</y>
|
||||
<x>720</x>
|
||||
<y>280</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>305</x>
|
||||
<y>224</y>
|
||||
<x>346</x>
|
||||
<y>306</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3596,12 +3664,12 @@
|
|||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>417</x>
|
||||
<y>204</y>
|
||||
<x>761</x>
|
||||
<y>280</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>434</x>
|
||||
<y>234</y>
|
||||
<x>778</x>
|
||||
<y>306</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3612,12 +3680,12 @@
|
|||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>476</x>
|
||||
<y>202</y>
|
||||
<x>820</x>
|
||||
<y>280</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>466</x>
|
||||
<y>253</y>
|
||||
<x>810</x>
|
||||
<y>329</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3628,12 +3696,12 @@
|
|||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>518</x>
|
||||
<y>204</y>
|
||||
<x>862</x>
|
||||
<y>280</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>515</x>
|
||||
<y>277</y>
|
||||
<x>859</x>
|
||||
<y>352</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3644,12 +3712,12 @@
|
|||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>557</x>
|
||||
<y>207</y>
|
||||
<x>866</x>
|
||||
<y>280</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>866</x>
|
||||
<y>306</y>
|
||||
<y>375</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
|
@ -3660,12 +3728,28 @@
|
|||
<slot>setVisible(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>484</x>
|
||||
<y>147</y>
|
||||
<x>250</x>
|
||||
<y>39</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>483</x>
|
||||
<y>170</y>
|
||||
<x>250</x>
|
||||
<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>
|
||||
</hints>
|
||||
</connection>
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButton">
|
||||
<widget class="QRadioButton" name="createNew">
|
||||
<property name="text">
|
||||
<string>Basic.SourceSelect.CreateNew</string>
|
||||
</property>
|
||||
|
@ -73,7 +73,7 @@
|
|||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>radioButton</sender>
|
||||
<sender>createNew</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
<receiver>sourceName</receiver>
|
||||
<slot>setEnabled(bool)</slot>
|
||||
|
|
|
@ -328,6 +328,8 @@ bool OBSApp::InitGlobalConfigDefaults()
|
|||
config_set_default_string(globalConfig, "General", "Language",
|
||||
DEFAULT_LANG);
|
||||
config_set_default_uint(globalConfig, "General", "MaxLogs", 10);
|
||||
config_set_default_string(globalConfig, "General", "ProcessPriority",
|
||||
"Normal");
|
||||
|
||||
#if _WIN32
|
||||
config_set_default_string(globalConfig, "Video", "Renderer",
|
||||
|
@ -354,6 +356,16 @@ bool OBSApp::InitGlobalConfigDefaults()
|
|||
"CenterSnapping", false);
|
||||
config_set_default_double(globalConfig, "BasicWindow",
|
||||
"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__
|
||||
config_set_default_bool(globalConfig, "Video", "DisableOSXVSync", true);
|
||||
|
@ -1298,7 +1310,6 @@ static int run_program(fstream &logFile, int argc, char *argv[])
|
|||
return 0;
|
||||
|
||||
prof.Stop();
|
||||
PrintInitProfile();
|
||||
|
||||
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)
|
||||
{
|
||||
size_t base_len = strlen(name);
|
||||
|
|
|
@ -136,6 +136,9 @@ public:
|
|||
int GetConfigPath(char *path, size_t size, 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 config_t *GetGlobalConfig() {return App()->GlobalConfig();}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue