diff --git a/debian/control b/debian/control
index c156631bf..092cc89ab 100644
--- a/debian/control
+++ b/debian/control
@@ -8,6 +8,6 @@ Homepage: https://olivevideoeditor.org/
Package: olive-editor
Architecture: any
-Depends: ${misc:Depends}, ${shlibs:Depends}, libqt5multimedia5-plugins, frei0r-plugins
+Depends: ${misc:Depends}, ${shlibs:Depends}, libqt5multimedia5-plugins
Description: Nonlinear video editor focused on performance and simplicity
diff --git a/global/debug.cpp b/global/debug.cpp
index 6755c7901..d9aee5e21 100644
--- a/global/debug.cpp
+++ b/global/debug.cpp
@@ -97,7 +97,7 @@ void debug_message_handler(QtMsgType type, const QMessageLogContext &context, co
debug_stream << QString("[%1] %2 (%3:%4, %5)\n")
.arg(msgTag, localMsg, context.file, QString::number(context.line), context.function);
}
- debug_info.prepend(QString("[%2] %3 (%4:%5, %6)
")
+ debug_info.append(QString("[%2] %3 (%4:%5, %6)
")
.arg(fontColor, msgTag, localMsg, context.file, QString::number(context.line), context.function));
fflush(stderr);
if (olive::DebugDialog != nullptr && olive::DebugDialog->isVisible()) {
diff --git a/global/path.cpp b/global/path.cpp
index 8ba47a541..3c0eebb93 100644
--- a/global/path.cpp
+++ b/global/path.cpp
@@ -79,6 +79,9 @@ QList get_effects_paths() {
// folder in share folder - best for Linux
effects_paths.append(app_dir.filePath("../share/olive-editor/effects"));
+ // user path - best for linux
+ effects_paths.append(QDir(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation)).filePath("effects"));
+
// Olive will also accept a manually provided folder with an environment variable
QString env_path(qgetenv("OLIVE_EFFECTS_PATH"));
if (!env_path.isEmpty()) effects_paths.append(env_path);
diff --git a/olive.pro b/olive.pro
index 83f56d5c2..fcde7f036 100644
--- a/olive.pro
+++ b/olive.pro
@@ -35,7 +35,7 @@ system("which git") {
GITPATH = $$system(cygpath $$PWD)
}
- GITHASHVAR = $$system(git --git-dir="$$GITPATH/.git" --work-tree="$$GITPATH" log -1 --format=%h)
+ GITHASHVAR = $$system(git --git-dir=\"$$GITPATH/.git\" --work-tree=\"$$GITPATH\" log -1 --format=%h)
# Fallback for Ubuntu/Launchpad (extracts Git hash from debian/changelog rather than Git repo)
# (see https://answers.launchpad.net/launchpad/+question/678556)
@@ -48,10 +48,6 @@ system("which git") {
CONFIG += c++11
-CONFIG(debug, debug|release) {
- CONFIG += console
-}
-
SOURCES += \
main.cpp \
ui/mainwindow.cpp \
@@ -327,6 +323,10 @@ TRANSLATIONS += \
ts/olive_id.ts
win32 {
+ CONFIG(debug, debug|release) {
+ CONFIG += console
+ }
+
RC_FILE = packaging/windows/resources.rc
LIBS += -lavutil -lavformat -lavcodec -lavfilter -lswscale -lswresample -lOpenColorIO -lopengl32 -luser32
}
diff --git a/panels/panels.cpp b/panels/panels.cpp
index 2b50d04e8..eef2e83a8 100644
--- a/panels/panels.cpp
+++ b/panels/panels.cpp
@@ -111,6 +111,10 @@ void free_panels() {
}
void scroll_to_frame_internal(QScrollBar* bar, long frame, double zoom, int area_width) {
+ if (bar->value() == bar->minimum() || bar->value() == bar->maximum()) {
+ return;
+ }
+
int screen_point = getScreenPointFromFrame(zoom, frame) - bar->value();
int min_x = area_width*0.1;
int max_x = area_width-min_x;
diff --git a/panels/viewer.cpp b/panels/viewer.cpp
index 1bde2749a..e824ff347 100644
--- a/panels/viewer.cpp
+++ b/panels/viewer.cpp
@@ -64,7 +64,6 @@ extern "C" {
Viewer::Viewer(QWidget *parent) :
Panel(parent),
playing(false),
- just_played_(false),
media(nullptr),
seq(nullptr),
created_sequence(false),
@@ -292,7 +291,7 @@ void Viewer::play(bool in_to_out) {
playhead_start = seq->playhead;
playing = true;
- just_played_ = true;
+ SetAudioWakeObject(this);
set_playpause_icon(false);
start_msecs = QDateTime::currentMSecsSinceEpoch();
@@ -301,17 +300,14 @@ void Viewer::play(bool in_to_out) {
}
void Viewer::play_wake() {
- if (just_played_) {
- start_msecs = QDateTime::currentMSecsSinceEpoch();
- playback_updater.start();
- if (audio_thread != nullptr) audio_thread->notifyReceiver();
- just_played_ = false;
- }
+ start_msecs = QDateTime::currentMSecsSinceEpoch();
+ playback_updater.start();
+ if (audio_thread != nullptr) audio_thread->notifyReceiver();
}
void Viewer::pause() {
playing = false;
- just_played_ = false;
+ SetAudioWakeObject(nullptr);
set_playpause_icon(true);
playback_updater.stop();
playback_speed = 0;
@@ -352,11 +348,6 @@ void Viewer::pause() {
}
}
-bool Viewer::WaitingForPlayWake()
-{
- return just_played_;
-}
-
void Viewer::update_playhead_timecode(long p) {
current_timecode_slider->SetValue(p);
}
diff --git a/panels/viewer.h b/panels/viewer.h
index c7343f56d..f6bb29f1e 100644
--- a/panels/viewer.h
+++ b/panels/viewer.h
@@ -66,7 +66,6 @@ public:
void seek(long p);
void play(bool in_to_out = false);
void pause();
- bool WaitingForPlayWake();
bool playing;
long playhead_start;
qint64 start_msecs;
@@ -139,7 +138,6 @@ private:
double minimum_zoom;
bool playing_in_to_out;
long last_playhead;
- bool just_played_;
void set_zoom_value(double d);
void set_sb_max();
void set_playback_speed(int s);
diff --git a/rendering/audio.cpp b/rendering/audio.cpp
index a6d189e7b..e535d533a 100644
--- a/rendering/audio.cpp
+++ b/rendering/audio.cpp
@@ -400,3 +400,32 @@ void combobox_audio_sample_rates(QComboBox *combobox) {
combobox->addItem("88200 Hz", 88200);
combobox->addItem("96000 Hz", 96000);
}
+
+QObject* audio_wake_object = nullptr;
+QMutex audio_wake_mutex;
+
+QObject* GetAudioWakeObject()
+{
+ audio_wake_mutex.lock();
+
+ QObject* wake_object = audio_wake_object;
+ audio_wake_object = nullptr;
+
+ audio_wake_mutex.unlock();
+
+ return wake_object;
+}
+
+void SetAudioWakeObject(QObject *o)
+{
+ audio_wake_mutex.lock();
+ audio_wake_object = o;
+ audio_wake_mutex.unlock();
+}
+
+void WakeAudioWakeObject() {
+ QObject* audio_wake_object = GetAudioWakeObject();
+ if (audio_wake_object != nullptr) {
+ QMetaObject::invokeMethod(audio_wake_object, "play_wake", Qt::QueuedConnection);
+ }
+}
diff --git a/rendering/audio.h b/rendering/audio.h
index 1c7ebb0a8..facca657e 100644
--- a/rendering/audio.h
+++ b/rendering/audio.h
@@ -64,6 +64,10 @@ extern bool recording;
extern int audio_rendering_rate;
void clear_audio_ibuffer();
+QObject *GetAudioWakeObject();
+void SetAudioWakeObject(QObject* o);
+void WakeAudioWakeObject();
+
int current_audio_freq();
bool is_audio_device_set();
diff --git a/rendering/cacher.cpp b/rendering/cacher.cpp
index e56915bee..5a58744d9 100644
--- a/rendering/cacher.cpp
+++ b/rendering/cacher.cpp
@@ -460,8 +460,8 @@ void Cacher::CacheAudioWorker() {
}
}
- QMetaObject::invokeMethod(panel_footage_viewer, "play_wake", Qt::QueuedConnection);
- QMetaObject::invokeMethod(panel_sequence_viewer, "play_wake", Qt::QueuedConnection);
+ // If there's a QObject waiting for audio to be rendered, wake it now
+ WakeAudioWakeObject();
}
bool Cacher::IsReversed()
diff --git a/rendering/exportthread.cpp b/rendering/exportthread.cpp
index 2b91fede6..30079f737 100644
--- a/rendering/exportthread.cpp
+++ b/rendering/exportthread.cpp
@@ -59,6 +59,7 @@ ExportThread::ExportThread(const ExportParams ¶ms,
audio_stream(nullptr),
acodec(nullptr),
audio_frame(nullptr),
+ sws_frame(nullptr),
swr_frame(nullptr),
acodec_ctx(nullptr),
swr_ctx(nullptr),
@@ -215,6 +216,8 @@ bool ExportThread::SetupVideo() {
}
bool ExportThread::SetupAudio() {
+ // if video is disabled, no setup necessary
+ if (!params_.audio_enabled) return true;
// Find encoder for this codec
acodec = avcodec_find_encoder(static_cast(params_.audio_codec));
@@ -373,12 +376,12 @@ void ExportThread::Export()
}
// If video is enabled, set it up in the container now
- if (params_.video_enabled && !SetupVideo()) {
+ if (!SetupVideo()) {
return;
}
// If audio is enabled, set it up in the container now
- if (params_.audio_enabled && !SetupAudio()) {
+ if (!SetupAudio()) {
return;
}
@@ -421,6 +424,8 @@ void ExportThread::Export()
// If we're exporting audio, run compose_audio() which will write mixed audio to the internal audio buffer
if (params_.audio_enabled) {
+ waiting_for_audio_ = true;
+ SetAudioWakeObject(this);
olive::rendering::compose_audio(nullptr, olive::ActiveSequence.get(), 1, true);
}
@@ -484,6 +489,13 @@ void ExportThread::Export()
// If we're exporting audio, copy audio from the buffer into an AVFrame for encoding
if (params_.audio_enabled) {
+ if (waiting_for_audio_) {
+ waitCond.wait(&mutex);
+ }
+
+ // Make sure nothing is writing while we're retrieving
+ audio_write_lock.lock();
+
// Check if the count of encoded samples exceeds the current Sequence playhead, in which case we don't need to
// encode any audio at this moment
while (!interrupt_ && file_audio_samples <= (timecode_secs*params_.audio_sampling_rate)) {
@@ -518,6 +530,9 @@ void ExportThread::Export()
// Increment by the frame's number of samples
file_audio_samples += swr_frame->nb_samples;
}
+
+ audio_write_lock.unlock();
+
}
// Generating encoding statistics (e.g. the time it took to encode this frame/estimated remaining time)
@@ -672,6 +687,14 @@ void ExportThread::Interrupt()
interrupt_ = true;
}
+void ExportThread::play_wake()
+{
+ mutex.lock();
+ waiting_for_audio_ = false;
+ waitCond.wakeAll();
+ mutex.unlock();
+}
+
void ExportThread::wake() {
mutex.lock();
waitCond.wakeAll();
diff --git a/rendering/exportthread.h b/rendering/exportthread.h
index 0fd54f3ad..7c52e84f0 100644
--- a/rendering/exportthread.h
+++ b/rendering/exportthread.h
@@ -82,6 +82,8 @@ signals:
void ProgressChanged(int value, qint64 remaining_ms);
public slots:
void Interrupt();
+
+ void play_wake();
private:
bool Encode(AVFormatContext* ofmt_ctx, AVCodecContext* codec_ctx, AVFrame* frame, AVPacket* packet, AVStream* stream);
bool SetupVideo();
@@ -124,6 +126,8 @@ private:
QWaitCondition waitCond;
QString export_error;
+
+ bool waiting_for_audio_;
private slots:
void wake();
};
diff --git a/rendering/renderfunctions.cpp b/rendering/renderfunctions.cpp
index 69b098372..8a8fe5a63 100644
--- a/rendering/renderfunctions.cpp
+++ b/rendering/renderfunctions.cpp
@@ -748,7 +748,6 @@ GLuint olive::rendering::compose_sequence(ComposeSequenceParams ¶ms) {
// == END FINAL DRAW ON SEQUENCE BUFFER ==
}
-
}
} else {
if (c->media() != nullptr && c->media()->get_type() == MEDIA_TYPE_SEQUENCE) {
@@ -778,8 +777,8 @@ GLuint olive::rendering::compose_sequence(ComposeSequenceParams ¶ms) {
}
}
- if (audio_track_count == 0 && params.viewer != nullptr) {
- params.viewer->play_wake();
+ if (audio_track_count == 0) {
+ WakeAudioWakeObject();
}
if (!params.nests.isEmpty() && !params.nests.last()->fbo.isEmpty()) {
diff --git a/ts/olive_ru.ts b/ts/olive_ru.ts
index 6681c8106..c9662aaef 100644
--- a/ts/olive_ru.ts
+++ b/ts/olive_ru.ts
@@ -4,12 +4,12 @@
AboutDialog
-
+
Olive is a non-linear video editor. This software is free and protected by the GNU GPL.
Olive — нелинейный видеоредактор. Эта программа является свободной и защищена GNU GPL.
-
+
Olive Team is obliged to inform users that Olive source code is available for download from its website.
Исходный код Olive доступен для скачивания на сайте программы.
@@ -17,7 +17,7 @@
ActionSearch
-
+
Search for action...
Найти действие…
@@ -43,12 +43,12 @@
Audio
-
+
%1 Audio
-
+
Recording %1
Запись %1
@@ -61,11 +61,48 @@
Количество
-
+
Mix
Смешивание
+
+ AutoCutSilenceDialog
+
+
+ Cut Silence
+ Вырезать тишину
+
+
+
+ Attack Threshold:
+ Порог атаки:
+
+
+
+ Attack Time:
+ Время атаки:
+
+
+
+ Release Threshold:
+ Порог восстановления:
+
+
+
+ Release Time:
+ Время восстановления:
+
+
+
+ Cacher
+
+
+
+ Could not open %1 - %2
+ Не удалось открыть %1 - %2
+
+
ChannelLayoutName
@@ -115,7 +152,7 @@
CollapsibleWidget
-
+
<untitled>
<без названия>
@@ -123,7 +160,7 @@
ColorButton
-
+
Set Color
Установить цвет
@@ -131,27 +168,27 @@
CornerPinEffect
-
+
Top Left
Вверху слева
-
+
Top Right
Вверху справа
-
+
Bottom Left
Внизу слева
-
+
Bottom Right
Внизу справа
-
+
Perspective
Перспектива
@@ -191,89 +228,54 @@
Effect
-
+
Invalid effect
Некорректный эффект
-
+
No candidate for effect '%1'. This effect may be corrupt. Try reinstalling it or Olive.
-
- Cu&t
- В&ырезать
-
-
-
- &Copy
- &Скопировать
-
-
-
- Move &Up
- &Поднять
-
-
-
- Move &Down
- &Опустить
-
-
-
- D&elete
- &Удалить
-
-
-
- Load Settings From File
- Загрузить параметры из файла
-
-
-
- Save Settings to File
- Сохранить параметры в файл
-
-
-
+
Save Effect Settings
Сохранить параметры эффекта
-
-
+
+
Effect XML Settings %1
Файлы с параметрами эффектов %1
-
+
Save Settings Failed
Не удалось сохранить параметры
-
+
Failed to open "%1" for writing.
Не удалось открыть "%1" для записи.
-
+
Load Effect Settings
Загрузить параметры эффекта
-
-
+
+
Load Settings Failed
Не удалось загрузить параметры
-
+
Failed to open "%1" for reading.
Не удалось открыть "%1" для чтения.
-
+
This settings file doesn't match this effect.
Это файлс параметрами совсем другого эффекта.
@@ -281,73 +283,116 @@
EffectControls
-
+
Effects:
Эффекты:
-
- &Paste
- &Вставить
-
-
-
+
(none)
(нет)
-
+
Add Video Effect
Добавить видеоэффект
-
+
VIDEO EFFECTS
ВИДЕОЭФФЕКТЫ
-
+
Add Video Transition
Добавить видеопереход
-
+
Add Audio Effect
Добавить аудиоэффект
-
+
AUDIO EFFECTS
АУДИОЭФФЕКТЫ
-
+
Add Audio Transition
Добавить аудиопереход
-
-
- (Multiple clips selected)
- (Выделено больше одного клипа)
-
EffectRow
-
+
Disable Keyframes
Отключить ключевые кадры
-
+
Disabling keyframes will delete all current keyframes. Are you sure you want to do this?
Отключение приведёт к удалению всех текущих ключевых кадров. Вы уверены?
+
+ EffectUI
+
+
+ %1 (Opening)
+ %1 (открывается)
+
+
+
+ %1 (Closing)
+ %1 (закрывается)
+
+
+
+ %1 (multiple)
+ %1 (больше одного)
+
+
+
+ Cu&t
+ В&ырезать
+
+
+
+ &Copy
+ &Скопировать
+
+
+
+ Move &Up
+ &Поднять
+
+
+
+ Move &Down
+ &Опустить
+
+
+
+ D&elete
+ &Удалить
+
+
+
+ Load Settings From File
+ Загрузить параметры из файла
+
+
+
+ Save Settings to File
+ Сохранить параметры в файл
+
+
EmbeddedFileChooser
-
+
File:
Файл:
@@ -355,108 +400,108 @@
ExportDialog
-
+
Export "%1"
Экспортировать "%1"
-
+
Unknown codec name %1
-
+
Export Failed
Не удалось экспортировать
-
+
Export failed - %1
Не удалось экспортировать — %1
-
+
Invalid dimensions
Некорректный размер кадра
-
+
Export width and height must both be even numbers/divisible by 2.
Ширина и высота кадра при экспорте должны делиться на 2 без остатка.
-
+
Invalid codec
Некорректный кодек
-
+
Couldn't determine output parameters for the selected codec. This is a bug, please contact the developers.
-
+
Invalid format
Некорректный формат
-
+
Couldn't determine output format. This is a bug, please contact the developers.
-
+
Export Media
Экспортировать проект
-
+
%p% (Total: %1:%2:%3)
%p% (Итого: %1:%2:%3)
-
+
%p% (ETA: %1:%2:%3)
%p% (Осталось: %1:%2:%3)
-
+
Quality-based (Constant Rate Factor)
Качество (Constant Rate Factor)
-
+
Constant Bitrate
Постоянная скорость потока
-
-
+
+
Invalid Codec
Некорректный кодек
-
+
Failed to find a suitable encoder for this codec. Export will likely fail.
Не удалось найти подходящий кодировщик для этого кодека. Экспорт не гарантирован.
-
+
Failed to find pixel format for this encoder. Export will likely fail.
Не удалось найти пиксельный формат для этого кодировщика. Экспортировать скорее всего не получится.
-
+
Bitrate (Mbps):
Скорость потока (Мбит/с):
-
+
Quality (CRF):
Качество (CRF):
-
+
Quality Factor:
0 = lossless
@@ -471,78 +516,78 @@
51 = самое низкое качество
-
+
Target File Size (MB):
Конечный размер файла (Мб):
-
+
Format:
Формат:
-
+
Range:
Диапазон:
-
+
Entire Sequence
Вся последовательность
-
+
In to Out
От входа от выхода
-
+
Video
Видео
-
-
+
+
Codec:
Кодек:
-
+
Width:
Ширина:
-
+
Height:
Высота:
-
+
Frame Rate:
Частота кадров:
-
+
Compression Type:
Тип сжатия:
-
+
Advanced
Дополнительно
-
+
Audio
Звук
-
+
Sampling Rate:
Частота дискретизации:
-
+
Bitrate (Kbps/CBR):
Скорость потока (Кбит/с / CBR):
@@ -550,87 +595,87 @@
ExportThread
-
+
failed to send frame to encoder (%1)
-
+
failed to receive packet from encoder (%1)
-
+
could not video encoder for %1
-
+
could not allocate video stream
-
+
could not allocate video encoding context
-
+
could not open output video encoder (%1)
-
+
could not copy video encoder parameters to output stream (%1)
-
+
could not audio encoder for %1
-
+
could not allocate audio stream
-
+
could not allocate audio encoding context
-
+
could not open output audio encoder (%1)
-
+
could not copy audio encoder parameters to output stream (%1)
-
+
could not allocate audio buffer (%1)
-
+
could not create output format context
-
+
could not open output file (%1)
-
+
could not write output file header (%1)
-
+
could not write output file trailer (%1)
@@ -656,22 +701,12 @@
Frei0rEffect
-
+
Failed to load Frei0r plugin "%1": %2
Не удалось загрузить плагшин Frei0r "%1": %2
-
- NOTE: You can't load 32-bit Frei0r plugins into a 64-bit build of Olive. Please find a 64-bit version of this plugin or switch to a 32-bit build of Olive.
- Вы не можете загружать 32-разрядные плагины Frei0r в 64-разрядный Olive. Найдите 64-разрядную версию этого плагина или установите 32-разрядную сборку Olive.
-
-
-
- NOTE: You can't load 64-bit Frei0r plugins into a 32-bit build of Olive. Please find a 32-bit version of this plugin or switch to a 64-bit build of Olive.
- Вы не можете загружать 64-разрядные плагины Frei0r в 32-разрядный Olive. Найдите 32-разрядную версию этого плагина или установите 64-разрядную сборку Olive.
-
-
-
+
Error loading Frei0r plugin
Ошибка при загрузке плагина Frei0r
@@ -679,22 +714,22 @@
GraphEditor
-
+
Graph Editor
Редактор графов
-
+
Linear
Линейный
-
+
Bezier
Безье
-
+
Hold
Константа
@@ -702,17 +737,17 @@
GraphView
-
+
Zoom to Selection
Масштабировать в выделение
-
+
Zoom to Show All
Масштабировать и показать всё
-
+
Reset View
Сбросить масштаб
@@ -743,7 +778,7 @@
KeyframeNavigator
-
+
Enable Keyframes
Включить ключевые кадры
@@ -751,17 +786,17 @@
KeyframeView
-
+
Linear
Линейный
-
+
Bezier
Безье
-
+
Hold
Константа
@@ -779,14 +814,14 @@
С&бросить до исходного
-
-
+
+
Set Value
Установить значение
-
-
+
+
New value:
Новое значение:
@@ -812,52 +847,52 @@
LoadThread
-
+
Version Mismatch
Несовпадение версий
-
+
This project was saved in a different version of Olive and may not be fully compatible with this version. Would you like to attempt loading it anyway?
Этот проект был сохранён в другой версии Olive, которая неполностью совместима с установленной у вас. Всё-таки попробовать загрузить?
-
+
Invalid Clip Link
Некорректная связь клипов
-
+
This project contains an invalid clip link. It may be corrupt. Would you like to continue loading it?
В проекте обнаружена некорректная связь клипов. Всё-таки попробовать загрузить её?
-
+
%1 - Line: %2 Col: %3
%1 - Строка: %2 Столбец: %3
-
+
User aborted loading
Пользователь прервал загрузку
-
+
XML Parsing Error
Ошибка разбора XML
-
+
Couldn't load '%1'. %2
Не удалось загрузить '%1'. %2
-
+
Project Load Error
Ошибка при загрузке проекта
-
+
Error loading project: %1
Ошибка при загрузке проекта: %1
@@ -865,517 +900,447 @@
MainWindow
-
+
Welcome to %1
Приветствуем в %1
-
+
&File
&Файл
-
+
&New
&Создать
-
+
&Open Project
&Открыть проект
-
+
Clear Recent List
Очистить список
-
+
Open Recent
Открыть недавний
-
+
&Save Project
Со&хранить проект
-
+
Save Project &As
Сохранить проект &как
-
+
&Import...
&Импортировать…
-
+
&Export...
- &Экспортировать….
+ &Экспортировать…
-
+
E&xit
В&ыход
-
+
&Edit
&Правка
-
+
&Undo
&Отменить
-
+
Redo
Вернуть
-
+
Select &All
Выд&елить всё
-
+
Deselect All
Снять выделение
-
+
Ripple to In Point
Сдвиг до точки входа
-
+
Ripple to Out Point
Сдвиг до точки выхода
-
+
Edit to In Point
Правка до точки входа
-
+
Edit to Out Point
Правка до точки выхода
-
+
Delete In/Out Point
Удалить точку входа/выхода
-
+
Ripple Delete In/Out Point
Удалить со сдвигом точку входа/выхода
-
+
Set/Edit Marker
Установить/Изменить маркер
-
+
&View
&Вид
-
+
Zoom In
Приблизить
-
+
Zoom Out
Отдалить
-
+
Increase Track Height
Увеличить высоту дорожки
-
+
Decrease Track Height
Уменьшить высоту дорожки
-
+
Toggle Show All
Показывать весь проект
-
+
Track Lines
Линии дорожек
-
+
Rectified Waveforms
Волновая форма от низа
-
+
Frames
Кадры
-
+
Drop Frame
С пропуском кадров
-
+
Non-Drop Frame
Без пропуска кадров
-
+
Milliseconds
Миллисекунды
-
+
Title/Action Safe Area
Безопасная область
-
+
Off
Выкл.
-
+
Default
По умолчанию
-
+
4:3
4:3
-
+
16:9
16:9
-
+
Custom
Другая
-
+
Full Screen
Полноэкранный режим
-
+
Full Screen Viewer
Просмотр в полноэкранном режиме
-
+
&Playback
Вос&произведение
-
+
Go to Start
К началу
-
+
Previous Frame
К предыдущему кадру
-
+
Play/Pause
Воспроизведение/Пауза
-
+
Play In to Out
Проиграть от входа до выхода
-
+
Next Frame
К следующему кадру
-
+
Go to End
В конец
-
+
Go to Previous Cut
-
+
Go to Next Cut
-
+
Go to In Point
К точке входа
-
+
Go to Out Point
К точке выхода
-
+
Shuttle Left
Уменьшить скорость
-
+
Shuttle Stop
Пауза
-
+
Shuttle Right
Увеличить скорость
-
+
Loop
Петля
-
+
&Window
&Окно
-
+
Project
Проект
-
+
Effect Controls
Управление эффектами
-
+
Timeline
Монтажный стол
-
+
Graph Editor
Редактор графов
-
+
Media Viewer
Просмотр проекта
-
+
Sequence Viewer
Просмотр последовательностей
-
+
Maximize Panel
Развернуть панель
-
+
Lock Panels
Закрепить панели
-
+
Reset to Default Layout
Вернуть исходный вид панелей
-
+
&Tools
&Инструменты
-
+
Pointer Tool
Указатель
-
+
Edit Tool
Выделение
-
+
Ripple Tool
Монтаж со сдвигом
-
+
Razor Tool
Подрезка
-
+
Slip Tool
Прокрутка с совмещением
-
+
Slide Tool
Прокрутка
-
+
Hand Tool
Навигация
-
+
Transition Tool
Переход
-
+
Enable Snapping
Включить прилипание
-
- Selecting Also Seeks
- Выделение с перемоткой
+
+ Auto-Cut Silence
+ Вырезать тишину
-
- Edit Tool Also Seeks
- Выделение с перемоткой
-
-
-
- Edit Tool Selects Links
- Выделение выбирает связи
-
-
-
- Seek Also Selects
- Перемотка с выделением
-
-
-
- Seek to the End of Pastes
- Перемотка до конца вставок
-
-
-
- Scroll Wheel Zooms
- Колесо мыши масштабирует монтажный стол
-
-
-
- Hold CTRL to toggle this setting
-
-
-
-
- Invert Timeline Scroll Axes
-
-
-
-
- Enable Drag Files to Timeline
- Разрешить перетаскивание на монтажный стол извне
-
-
-
- Auto-Scale By Default
- Автоматически масштабировать по умолчанию
-
-
-
- Enable Seek to Import
-
-
-
-
- Audio Scrubbing
- Воспроизводить звук при прокрутке
-
-
-
- Enable Drop on Media to Replace
-
-
-
-
- Enable Hover Focus
- Включить фокус наводкой
-
-
-
- Ask For Name When Setting Marker
- Спрашивать имя маркера при добавлении
-
-
-
+
No Auto-Scroll
Без автопрокрутки
-
+
Page Auto-Scroll
Прокручивать перелистыванием
-
+
Smooth Auto-Scroll
Прокручивать плавно
-
+
Preferences
Параметры
-
+
Clear Undo
Очистить историю изменений
-
+
&Help
&Справка
-
+
A&ction Search
&Найти команду
-
+
Debug Log
Журнал отладки
-
+
&About...
&О программе…
-
+
<untitled>
<без названия>
@@ -1383,17 +1348,17 @@
Marker
-
+
Set Marker
Установить маркер
-
+
Set clip marker name:
Название маркера клипа:
-
+
Set sequence marker name:
Название маркера последовательности:
@@ -1401,52 +1366,52 @@
Media
-
+
New Folder
Новая папка
-
+
Name:
Название:
-
+
Filename:
Имя файла:
-
+
Video Dimensions:
Размер кадров:
-
+
Frame Rate:
Частота кадров:
-
+
%1 field(s) (%2 frame(s))
полей: %1 (кадров: %2)
-
+
Interlacing:
Чересстрочность:
-
+
Audio Frequency:
Частота звука:
-
+
Audio Channels:
Звуковых каналов:
-
+
Name: %1
Video Dimensions: %2x%3
Frame Rate: %4
@@ -1459,17 +1424,17 @@ Audio Layout: %6
Звуковые каналы: %6
-
+
Name
Название
-
+
Duration
Длительность
-
+
Rate
Частота
@@ -1477,27 +1442,27 @@ Audio Layout: %6
MediaPropertiesDialog
-
+
"%1" Properties
Свойства "%1"
-
+
Tracks:
Дорожек:
-
+
Video %1: %2x%3 %4FPS
Видео %1: %2x%3 %4к/с
-
+
Audio %1: %2Hz %3
Звук %1: %2Гц %3
-
+
%n channel(s)
%n канал
@@ -1506,27 +1471,27 @@ Audio Layout: %6
-
+
Conform to Frame Rate:
-
+
Alpha is Premultiplied
Предумноженный альфа-канал
-
+
Auto (%1)
Авто (%1)
-
+
Interlacing:
Чересстрочность:
-
+
Name:
Название:
@@ -1534,122 +1499,123 @@ Audio Layout: %6
MenuHelper
-
+
&Project
&Проект
-
+
&Sequence
П&оследовательность
-
+
&Folder
П&апка
-
+
Set In Point
Установить точку входа
-
+
Set Out Point
Установить точку выхода
-
+
Reset In Point
Сбросить точку входа
-
+
Reset Out Point
Сбросить точку выхода
-
+
Clear In/Out Point
Очистить точку входа/выхода
-
+
Add Default Transition
Добавить переход по умолчанию
-
+
Link/Unlink
Связать/Убрать связь
-
+
Enable/Disable
Включить/Отключить
-
+
Nest
Вложить
-
+
Cu&t
В&ырезать
-
+
Cop&y
С&копировать
-
+
+
&Paste
&Вставить
-
+
Paste Insert
-
+
Duplicate
Сделать копию
-
+
Delete
Удалить
-
+
Ripple Delete
Удалить со сдвигом
-
+
Split
Разделить
-
+
Invalid aspect ratio
Некорректное соотношение сторон
-
+
The aspect ratio '%1' is invalid. Please try again.
-
+
Enter custom aspect ratio
Введите другое соотношение сторон
-
+
Enter the aspect ratio to use for the title/action safe area (e.g. 16:9):
Введите соотношение сторон для этой безопасной области (например, 16:9)
@@ -1657,127 +1623,127 @@ Audio Layout: %6
NewSequenceDialog
-
+
Editing "%1"
Правка "%1"
-
+
New Sequence
Новая последовательность
-
+
Preset:
Предстановка:
-
+
Film 4K
Кино 4К
-
+
TV 4K (Ultra HD/2160p)
TV 4K (Ultra HD/2160p)
-
+
1080p
1080p
-
+
720p
720p
-
+
480p
480p
-
+
360p
360p
-
+
240p
240p
-
+
144p
144p
-
+
NTSC (480i)
NTSC (480i)
-
+
PAL (576i)
PAL (576i)
-
+
Custom
Другое
-
+
Video
Видео
-
+
Width:
Ширина:
-
+
Height:
Высота:
-
+
Frame Rate:
Частота кадров:
-
+
Pixel Aspect Ratio:
Соотношение сторон пикселя:
-
+
Square Pixels (1.0)
Квадратные пиксели (1.0)
-
+
Interlacing:
Чересстрочность:
-
+
None (Progressive)
Нет (прогрессивно)
-
+
Audio
Звук
-
+
Sample Rate:
Частота дискретизации:
-
+
Name:
Название:
@@ -1785,67 +1751,77 @@ Audio Layout: %6
OliveGlobal
-
+
Olive Project %1
Проект Olive %1
-
+
Auto-recovery
Автовосстановление
-
+
Olive didn't close properly and an autorecovery file was detected. Would you like to open it?
Olive аварийно завершил работу, обнаружен файл автовосстановления. Открыть его?
-
+
Open Project...
Открыть проект…
-
+
Missing recent project
Отсутствует недавний проект
-
+
The project '%1' no longer exists. Would you like to remove it from the recent projects list?
Проект '%1' больше не существует. Удалить его из списка недавних?
-
+
Save Project As...
Сохранить проект как…
-
+
Unsaved Project
Несохранённый проект
-
+
This project has changed since it was last saved. Would you like to save it before closing?
Проект был изменён с момента последнего сохранения. Хотите сохранить его перед закрытием?
-
+
No active sequence
Нет активных последовательностей
-
- Please open the sequence you wish to export.
- Откройте последовательность, которую хотите экспортировать
+
+ Please open the sequence to perform this action.
+ Откройте последовательность для выполнения этого действия.
-
+
+ No clips selected
+ Клипы не выделены
+
+
+
+ Select the clips you wish to auto-cut
+ Выделите клипы, в которых надо вырезать тишину
+
+
+
Missing Project File
Отсутствует проектный файл
-
+
Specified project '%1' does not exist.
Указанный проект '%1' не существует.
@@ -1858,285 +1834,389 @@ Audio Layout: %6
Панорама
-
- Playback
-
- Generating Proxy: %1%
- Создаётся прокси: %1%
-
-
PreferencesDialog
-
+
Preferences
Параметры
-
+
+ Default Sequence
+ Последовательности по умолчанию
+
+
+
Invalid CSS File
Некорректный файл CSS
-
+
CSS file '%1' does not exist.
Файл CSS '%1' не существует.
-
+
Confirm Reset All Shortcuts
Подтвердите действие
-
+
Are you sure you wish to reset all keyboard shortcuts to their defaults?
Вы действительно хотите сбросить все клавиатурные комбинации к исходным значениям?
-
+
Import Keyboard Shortcuts
Импортировать клавиатурные комбинации
-
-
+
+
Error saving shortcuts
Ошибка при сохранении клавиатурных комбинаций
-
+
Failed to open file for reading
Не удалось открыть файл для чтения
-
+
Export Keyboard Shortcuts
Экспортировать клавиатурные комбинации
-
+
Export Shortcuts
Экспортировать клавиатурные комбинации
-
+
Shortcuts exported successfully
Комбинации успешно экспортированы
-
+
Failed to open file for writing
Не удалось открыть файл для записи
-
+
Browse for CSS file
Указать файл CSS
-
+
Delete All Previews
Удалить все миниатюры
-
+
Are you sure you want to delete all previews?
Действительно удалить все миниатюры?
-
+
Previews Deleted
Миниатюры удалены
-
+
All previews deleted succesfully. You may have to re-open your current project for changes to take effect.
Все миниатюры успешно удалены. Возможно, понадобится заново открыть проект, чтобы изменения вступили в силу.
-
+
Language:
Язык:
-
+
+ Default Sequence Settings
+
+
+
+
+ Add Default Effects to New Clips
+ Добавлять эффекты по умолчанию в новые клипы
+
+
+
+ Automatically Seek to the Beginning When Playing at the End of a Sequence
+
+
+
+
+ Selecting Also Seeks
+ Выделение с перемоткой
+
+
+
+ Edit Tool Also Seeks
+ Выделение с перемоткой
+
+
+
+ Edit Tool Selects Links
+ Выделение выбирает связи
+
+
+
+ Seek Also Selects
+ Перемотка с выделением
+
+
+
+ Seek to the End of Pastes
+ Перемотка до конца вставок
+
+
+
+ Scroll Wheel Zooms
+ Колесо мыши масштабирует монтажный стол
+
+
+
+ Hold CTRL to toggle this setting
+
+
+
+
+ Invert Timeline Scroll Axes
+
+
+
+
+ Enable Drag Files to Timeline
+ Разрешить перетаскивание на монтажный стол извне
+
+
+
+ Auto-Scale By Default
+ Автоматически масштабировать по умолчанию
+
+
+
+ Auto-Seek to Imported Clips
+
+
+
+
+ Audio Scrubbing
+ Воспроизводить звук при прокрутке
+
+
+
+ Drop Files on Media to Replace
+
+
+
+
+ Enable Hover Focus
+ Включить фокус наводкой
+
+
+
+ Ask For Name When Setting Marker
+ Спрашивать имя маркера при добавлении
+
+
+
+ Appearance
+ Внешний вид
+
+
+
+ Theme
+ Тема
+
+
+
+ Olive Dark (Default)
+ Olive Dark (по умолчанию)
+
+
+
+ Olive Light
+ Olive Light
+
+
+
+ Native
+ Системная
+
+
+
+ Native (Light Icons)
+ Системная со светлыми значками
+
+
+
+ Use Native Menu Styling
+
+
+
+
Custom CSS:
Свой CSS:
-
+
Browse
Просмотр
-
+
Image sequence formats:
Форматы изображений:
-
+
Audio Recording:
Запись звука:
-
+
Mono
Моно
-
+
Stereo
Стерео
-
+
Effect Textbox Lines:
Строк в редакторе титров:
-
+
Thumbnail Resolution:
Разрешение миниатюр:
-
+
Waveform Resolution:
Разрешение волновой формы:
-
+
Delete Previews
Удалить миниатюры
-
+
Use Software Fallbacks When Possible
По возможности использовать программную реализацию вместо аппаратной
-
+
General
Общие
-
+
Behavior
Поведение
-
- Seeking
- Позиционирование
-
-
-
- Accurate Seeking
-Always show the correct frame (visual may pause briefly as correct frame is retrieved)
- Точное позиционирование
-Всегда показывать правильный кадр; на его получение может уходить немного времени
-
-
-
- Fast Seeking
-Seek quickly (may briefly show inaccurate frames when seeking - doesn't affect playback/export)
- Быстрое позиционирование
-Переходы без пауз, возможен кратковременный показ неправильного кадра в просмотре
-
-
-
+
Memory Usage
Использование памяти
-
+
Upcoming Frame Queue:
Очередь последующих кадров:
-
-
+
+
frames
кадров
-
-
+
+
seconds
секунд
-
+
Previous Frame Queue:
Очередь предыдущих кадров:
-
+
Playback
Воспроизведение
-
+
Output Device:
Устройство выхода:
-
-
+
+
Default
По умолчанию
-
+
Input Device:
Устройство входа:
-
+
Sample Rate:
Частота дискретизации:
-
+
Audio
Звук
-
+
Search for action or shortcut
Искать действие или комбинацию клавиш
-
+
Action
Действие
-
+
Shortcut
Комбинация
-
+
Import
Импортировать
-
+
Export
Экспортировать
-
+
Reset Selected
Сбросить выбранное
-
+
Reset All
Сбросить все
-
+
Keyboard
Клавиатурные комбинации
@@ -2144,17 +2224,17 @@ Seek quickly (may briefly show inaccurate frames when seeking - doesn't aff
PreviewGenerator
-
+
Failed to find any valid video/audio streams
-
+
Could not open file - %1
Не удалось открыть файл — %1
-
+
Could not find stream information - %1
Не удалось найти информацию потока — %1
@@ -2162,104 +2242,144 @@ Seek quickly (may briefly show inaccurate frames when seeking - doesn't aff
Project
-
+
+ New
+ Создать
+
+
+
+ Open Project
+ Открыть проект
+
+
+
+ Save Project
+ Сохранить проект
+
+
+
+ Undo
+ Отменить
+
+
+
+ Redo
+ Вернуть
+
+
+
+ Tree View
+ В виде дерева
+
+
+
+ Icon View
+ В виде миниатюр
+
+
+
+ List View
+ В виде списка
+
+
+
Search media, markers, etc.
Искать файлы, маркеры и т.д.
-
+
Project
Проект
-
+
Sequence
Последовательность
-
+
Replace '%1'
Заменить '%1'
-
-
+
+
All Files
Все файлы
-
-
+
+
No active sequence
Нет активных последовательностей
-
+
No sequence is active, please open the sequence you want to replace clips from.
Нет активных последовательностей. Откройте последовательность, в которой хотите заменить клипы.
-
+
Active sequence selected
Выбрана активная последовательность
-
+
You cannot insert a sequence into itself, so no clips of this media would be in this sequence.
Вы не можете вставить последовательность в саму себя, так что клипы из этих файлов не могут попасть в эту последовательность.
-
+
Rename '%1'
Переименовать '%1'
-
+
Enter new name:
Введите новое название:
-
+
Delete media in use?
Удалить используемые в проекте файлы?
-
+
The media '%1' is currently used in '%2'. Deleting it will remove all instances in the sequence. Are you sure you want to do this?
Файл '%1' уже используется в '%2'. Его удаление приведет к удалению всех его копий в выбранной последовательности. Вы точно этого хотите?
-
+
Skip
Пропустить
-
+
Import a Project
Импортировать проект
-
+
"%1" is an Olive project file. It will merge with this project. Do you wish to continue?
"%1" является проектом Olive и будет добавлен в этот проект. Продолжить?
-
+
Image sequence detected
Обнаружена последовательность изображений
-
+
The file '%1' appears to be part of an image sequence. Would you like to import it as such?
Похоже, что файл '%1' яавляется частью последовательности изображений. Загрузить его как таковой?
-
+
Import media...
Импортировать медиафайлы…
-
+
No sequence is active, please open the sequence you want to delete clips from.
Нет активных последовательностей. Откройте последовательность, из которой хотите удалить клипы.
@@ -2267,77 +2387,77 @@ Seek quickly (may briefly show inaccurate frames when seeking - doesn't aff
ProxyDialog
-
+
Create Proxy
Создать прокси
-
+
Proxy
Прокси
-
+
Dimensions:
Размер:
-
+
Same Size as Source
В размере оригинала
-
+
Half Resolution (1/2)
Половина оригинала (1/2)
-
+
Quarter Resolution (1/4)
Четверть оригинала (1/4)
-
+
Eighth Resolution (1/8)
Восьмая оригинала (1/8)
-
+
Sixteenth Resolution (1/16)
Шестнадцатая оригинала (1/16)
-
+
Format:
Формат:
-
+
ProRes HQ
ProRes HQ
-
+
Location:
Размещение:
-
+
Same as Source (in "%1" folder)
Как в исходнике (в папке «%1»)
-
+
Proxy file exists
Прокси-файл уже существует
-
+
The file "%1" already exists. Do you wish to replace it?
Файл «%1» уже существует. Заменить его?
-
+
Custom Location
Другое размещение
@@ -2345,7 +2465,7 @@ Seek quickly (may briefly show inaccurate frames when seeking - doesn't aff
ProxyGenerator
-
+
Finished generating proxy for "%1"
Завершено создание прокси для "%1"
@@ -2418,10 +2538,108 @@ Seek quickly (may briefly show inaccurate frames when seeking - doesn't aff
Вы не можете вставить последовательность в саму себя.
+
+ RichTextEffect
+
+
+ Text
+ Текст
+
+
+
+ Padding
+ Отступ
+
+
+
+ Position
+ Позиция
+
+
+
+ Vertical Align:
+ Верт. выравнивание:
+
+
+
+ Top
+ Сверху
+
+
+
+ Center
+ По центру
+
+
+
+ Bottom
+ Снизу
+
+
+
+ Auto-Scroll
+ Автопрокрутка
+
+
+
+ Off
+ Выкл.
+
+
+
+ Up
+ Вверх
+
+
+
+ Down
+ Вниз
+
+
+
+ Left
+ Влево
+
+
+
+ Right
+ Вправо
+
+
+
+ Shadow
+ Тень
+
+
+
+ Shadow Color
+ Цвет тени
+
+
+
+ Shadow Angle
+ Угол тени
+
+
+
+ Shadow Distance
+ Длина тени
+
+
+
+ Shadow Softness
+ Мягкость тени
+
+
+
+ Shadow Opacity
+ Непрозрачность тени
+
+
Sequence
-
+
%1 (copy)
%1 (копия)
@@ -2429,7 +2647,7 @@ Seek quickly (may briefly show inaccurate frames when seeking - doesn't aff
ShakeEffect
-
+
Intensity
Интенсивность
@@ -2439,7 +2657,7 @@ Seek quickly (may briefly show inaccurate frames when seeking - doesn't aff
Вращение
-
+
Frequency
Частота
@@ -2447,7 +2665,7 @@ Seek quickly (may briefly show inaccurate frames when seeking - doesn't aff
SolidEffect
-
+
Type
Тип
@@ -2472,12 +2690,12 @@ Seek quickly (may briefly show inaccurate frames when seeking - doesn't aff
Непрозрачность
-
+
Color
Цвет
-
+
Checkerboard Size
Размер клеток
@@ -2485,142 +2703,142 @@ Seek quickly (may briefly show inaccurate frames when seeking - doesn't aff
SourcesCommon
-
+
Import...
Импортировать…
-
+
New
Создать
-
+
View
Вид
-
+
Tree View
В виде таблицы
-
+
Icon View
В виде миниатюр
-
+
Show Toolbar
Показывать панель
-
+
Show Sequences
Показывать последовательности
-
+
Replace/Relink Media
Заменить/пересвязать файлы
-
+
Reveal in Explorer
Открыть в Проводнике
-
+
Reveal in Finder
Открыть в Finder
-
+
Reveal in File Manager
Открыть в файловом менеджере
-
+
Replace Clips Using This Media
Заменить клипы с этими файлами
-
+
Create Sequence With This Media
Создать последовательность с этими файлами
-
+
Duplicate
Создать копию
-
+
Delete All Clips Using This Media
Удалить все клипы с этим файлом
-
+
Proxy
Прокси
-
+
Generating proxy: %1% complete
Создание прокси: завершено на %1%
-
+
Create/Modify Proxy
Создать/Изменить прокси
-
+
Create Proxy
Создать прокси
-
+
Modify Proxy
Изменить прокси
-
+
Restore Original
Восстановить оригинал
-
+
Delete
Удалить
-
+
Preview in Media Viewer
-
+
Properties...
Свойства…
-
+
Replace Media
Заменить файлы
-
+
You dropped a file onto '%1'. Would you like to replace it with the dropped file?
Вы бросили файл в '%1'. Заменить на брошенное?
-
+
Delete proxy
Удалить прокси
-
+
Would you like to delete the proxy file "%1" as well?
Заодно удалить прокси-файл "%1"?
@@ -2628,37 +2846,37 @@ Seek quickly (may briefly show inaccurate frames when seeking - doesn't aff
SpeedDialog
-
+
Speed/Duration
Скорость/длительность
-
+
Speed:
Скорость:
-
+
Frame Rate:
Частота кадров:
-
+
Duration:
Длительность:
-
+
Reverse
Реверс
-
+
Maintain Audio Pitch
Сохранять высоту тона
-
+
Ripple Changes
Изменять со сдвигом
@@ -2666,20 +2884,78 @@ Seek quickly (may briefly show inaccurate frames when seeking - doesn't aff
TextEditDialog
-
+
Edit Text
Изменить текст
+
+
+ Thin
+
+
+
+
+ Extra Light
+
+
+
+
+ Light
+
+
+
+
+ Normal
+ Обычный
+
+
+
+ Medium
+
+
+
+
+ Demi Bold
+
+
+
+
+ Bold
+
+
+
+
+ Extra Bold
+
+
+
+
+ Black
+
+
+
+
+ TextEditEx
+
+
+ Edit Text
+ Изменить текст
+
+
+
+ &Edit Text
+ &Изменить текст
+
TextEffect
-
+
Text
Текст
-
+
Font
Шрифт
@@ -2689,151 +2965,156 @@ Seek quickly (may briefly show inaccurate frames when seeking - doesn't aff
Кегль
-
+
Color
Цвет
-
+
Alignment
Выравнивание
-
+
Left
Слева
-
-
+
+
Center
По центру
-
+
Right
Справа
-
+
Justify
По ширине
-
+
Top
Сверху
-
+
Bottom
Снизу
-
+
Word Wrap
Перенос строки
-
+
+ Padding
+ Отступ
+
+
+
+ Position
+ Позиция
+
+
+
Outline
Обводка
-
+
Outline Color
Цвет обводки
-
+
Outline Width
Толщина обводки
-
+
Shadow
Тень
-
+
Shadow Color
Цвет тени
-
+
Shadow Angle
Угол тени
-
+
Shadow Distance
Длина тени
-
+
Shadow Softness
Мягкость тени
-
+
Shadow Opacity
Непрозрачность тени
-
+
Sample Text
Образец текста
-
-
- &Edit Text
- &Изменить текст
-
TimecodeEffect
-
+
Timecode
Тайм-код
-
+
Sequence
Последовательность
-
+
Media
Файл
-
+
Scale
Масштаб
-
+
Color
Цвет
-
+
Background Color
Цвет фона
-
+
Background Opacity
Непрозрачность фона
-
+
Offset
Смещение
-
+
Prepend
Префикс
@@ -2841,156 +3122,152 @@ Seek quickly (may briefly show inaccurate frames when seeking - doesn't aff
Timeline
-
+
Timeline:
Монтажный стол:
- <none>
- <нет>
-
-
-
+
Effect already exists
Эффект уже добавлен
-
+
Clip '%1' already contains a '%2' effect. Would you like to replace it with the pasted one or add it as a separate effect?
Клип '%1' уже содержит эффект '%2'. Хотите заменить его на вставляемый эффект или добавить вставляемый эффект как отдельный?
-
+
Add
Добавить
-
+
Replace
Заменить
-
+
Skip
Пропустить
-
+
Do this for all conflicts found
Применить для всех конфликтов
-
+
Nested Sequence
Вложенная последовательность
-
+
Title...
Титры…
-
+
Solid Color...
Цветная заливка…
-
+
Bars...
Испытательная таблица…
-
+
Tone...
Звуковой сигнал…
-
+
Noise...
Шум…
-
+
Unsaved Project
Несохранённый проект
-
+
You must save this project before you can record audio in it.
Перед записью звука необходимо сохранить проект.
-
+
Click on the timeline where you want to start recording (drag to limit the recording to a certain timeframe)
Щелкните на монтажном столе в точке, от которой хотите начать запись звука. Перетащите курсор после щелчка, чтобы сразу задать длительность записи.
-
+
Pointer Tool
Указатель
-
+
Edit Tool
Выделение
-
+
Ripple Tool
Монтаж со сдвигом
-
+
Razor Tool
Подрезка
-
+
Slip Tool
Прокрутка с совмещением
-
+
Slide Tool
Прокрутка
-
+
Hand Tool
Навигация
-
+
Transition Tool
Переход
-
+
Snapping
Прилипание
-
+
Zoom In
Приблизить
-
+
Zoom Out
Отдалить
-
+
Record audio
Записать звук
-
+
Add title, solid, bars, etc.
Добавить титры, заливку цветом, испытательную таблицу и т.д.
-
+
(none)
(нет)
@@ -2998,7 +3275,7 @@ Seek quickly (may briefly show inaccurate frames when seeking - doesn't aff
TimelineHeader
-
+
Center Timecodes
Центрировать тайм-код
@@ -3006,66 +3283,37 @@ Seek quickly (may briefly show inaccurate frames when seeking - doesn't aff
TimelineWidget
-
+
&Undo
&Отменить
-
+
&Redo
В&ернуть
-
- C&ut
- В&ырезать
-
-
-
- Cop&y
- С&копировать
-
-
-
- &Paste
- &Вставить
-
-
-
- R&ipple Delete
- Уда&лить со сдвигом
-
-
-
+
Sequence Settings
Параметры последовательности
-
+
&Speed/Duration
С&корость/Длительность
-
- Auto-s&cale
- Авто&масштабирование
-
-
-
+
&Reveal in Project
&Показать в проекте
-
+
Properties
Свойства
- R&ename
- Пере&именовать
-
-
-
+
%1
Start: %2
End: %3
@@ -3076,54 +3324,57 @@ Duration: %4
Длительность: %4
- Rename '%1'
- Переименовать '%1'
+
+ R&ipple Delete Empty Space
+ &Удалить со сдвигом пустое пространство
- Rename multiple clips
- Переименовать клипы
+
+ Auto-Cut Silence
+ Вырезать тишину
- Enter a new name for this clip:
- Новое название этого клипа:
+
+ Auto-S&cale
+ Авто&масштабирование
-
+
Error
Ошибка
-
+
Couldn't locate media wrapper for sequence.
-
+
Title
Титры
-
+
Solid Color
Цветная заливка
-
+
Bars
Испытательная таблица
-
+
Tone
Звуковой сигнал
-
+
Noise
Шум
-
+
Duration:
Длительность:
@@ -3131,22 +3382,27 @@ Duration: %4
ToneEffect
-
+
Type
Тип
+
+
+ Sine
+ Синусоида
+
Frequency
Частота
-
+
Amount
Количество
-
+
Mix
Смешать
@@ -3159,160 +3415,45 @@ Duration: %4
Позиция
-
+
Scale
Масштаб
-
+
Uniform Scale
Сохранять пропорции
-
+
Rotation
Вращение
-
+
Anchor Point
Точка привязки
-
+
Opacity
Непрозрачность
-
+
Blend Mode
Режим смешивания
-
+
Normal
Обычный
-
-
- Darken
- Замена темным
-
-
-
- Multiply
- Умножение
-
-
-
- Color Burn
- Затемнение основы
-
-
-
- Linear Burn
- Линейное затемнение
-
-
-
- Lighten
- Замена светлым
-
-
-
- Screen
- Экран
-
-
-
- Color Dodge
- Осветление основы
-
-
-
- Linear Dodge (Add)
- Линейное осветление (+)
-
-
-
- Overlay
- Перекрытие
-
-
-
- Soft Light
- Рассеянный свет
-
-
-
- Hard Light
- Направленный свет
-
-
-
- Vivid Light
- Яркий свет
-
-
-
- Linear Light
- Линейный свет
-
-
-
- Pin Light
- Точечный свет
-
-
-
- Hard Mix
- Жесткое смешение
-
-
-
- Difference
- Разница
-
-
-
- Exclusion
- Исключение
-
-
-
- Reflect
- Отражение
-
-
-
- Substract
- Вычитание
-
-
-
- Average
- Среднее
-
-
-
- Glow
- Свечение
-
-
-
- Negation
- Отрицание
-
-
-
- Phoenix
- Феникс
-
Transition
-
+
Length
Длительность
@@ -3328,64 +3469,48 @@ Duration: %4
VSTHost
-
-
-
+
+
Error loading VST plugin
Ошибка при загрузке плагина VST
-
- Failed to create VST reference
-
-
-
-
+
Failed to load VST plugin "%1": %2
-
- NOTE: You can't load 32-bit VST plugins into a 64-bit build of Olive. Please find a 64-bit version of this plugin or switch to a 32-bit build of Olive.
-
-
-
-
- NOTE: You can't load 64-bit VST plugins into a 32-bit build of Olive. Please find a 32-bit version of this plugin or switch to a 64-bit build of Olive.
-
-
-
-
+
Failed to locate entry point for dynamic library.
-
+
VST Error
Ошибка VST
-
+
Plugin's magic number is invalid
-
+
Plugin
Плагин
-
+
Interface
Интерфейс
-
+
Show
Показать
-
+
VST Plugin
Плагин VST
@@ -3393,75 +3518,85 @@ Duration: %4
Viewer
-
+
Sequence Viewer
Просмотр последовательностей
-
+
Media Viewer
Просмотр проекта
-
+
(none)
(нет)
+
+
+ Drag video only
+ Перетаскивать только видео
+
+
+
+ Drag audio only
+ Перетаскивать только звук
+
ViewerWidget
-
+
Save Frame as Image...
Сохранить кадр как изображение…
-
+
Show Fullscreen
Полноэкранный режим
-
+
Disable
Отключить
-
+
Screen %1: %2x%3
Экран %1: %2×%3
-
+
Zoom
Масштаб
-
+
Fit
Уместить
-
+
Custom
Другой
-
+
Close Media
Закрыть файл
-
+
Save Frame
Сохранить кадр
-
+
Viewer Zoom
Масштаб просмотра
-
+
Set Custom Zoom Value:
Другое значение масштаба:
@@ -3469,7 +3604,7 @@ Duration: %4
ViewerWindow
-
+
Exit Fullscreen
Выйти из полноэкранного режима
@@ -3477,12 +3612,12 @@ Duration: %4
VoidEffect
-
+
(unknown)
(неизвестно)
-
+
Missing Effect
Отсутствующий эффект
@@ -3498,12 +3633,12 @@ Duration: %4
transition
-
+
Invalid transition
Некорректный переход
-
+
No candidate for transition '%1'. This transition may be corrupt. Try reinstalling it or Olive.
diff --git a/ui/effectui.cpp b/ui/effectui.cpp
index bc790a67c..676defaea 100644
--- a/ui/effectui.cpp
+++ b/ui/effectui.cpp
@@ -86,6 +86,7 @@ EffectUI::EffectUI(Effect* e) :
SetTitle(effect_name);
QWidget* ui = new QWidget(this);
+ ui->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum);
SetContents(ui);
SetExpanded(e->IsExpanded());
diff --git a/ui/keyframenavigator.cpp b/ui/keyframenavigator.cpp
index 9849eb5f1..6a50d4aeb 100644
--- a/ui/keyframenavigator.cpp
+++ b/ui/keyframenavigator.cpp
@@ -39,7 +39,11 @@ KeyframeNavigator::KeyframeNavigator(QWidget *parent, bool addLeftPad) : QWidget
key_controls->addStretch();
}
+ QSizePolicy button_size_policy;
+ button_size_policy.setRetainSizeWhenHidden(true);
+
left_key_nav = new QPushButton(this);
+ left_key_nav->setSizePolicy(button_size_policy);
left_key_nav->setIcon(olive::icon::LeftArrow);
left_key_nav->setIconSize(left_key_nav->iconSize()*0.5);
left_key_nav->setVisible(false);
@@ -48,6 +52,7 @@ KeyframeNavigator::KeyframeNavigator(QWidget *parent, bool addLeftPad) : QWidget
connect(left_key_nav, SIGNAL(clicked(bool)), this, SIGNAL(clicked()));
key_addremove = new QPushButton(this);
+ key_addremove->setSizePolicy(button_size_policy);
key_addremove->setIcon(olive::icon::Diamond);
key_addremove->setIconSize(key_addremove->iconSize()*0.5);
key_addremove->setVisible(false);
@@ -56,6 +61,7 @@ KeyframeNavigator::KeyframeNavigator(QWidget *parent, bool addLeftPad) : QWidget
connect(key_addremove, SIGNAL(clicked(bool)), this, SIGNAL(clicked()));
right_key_nav = new QPushButton(this);
+ right_key_nav->setSizePolicy(button_size_policy);
right_key_nav->setIcon(olive::icon::RightArrow);
right_key_nav->setIconSize(right_key_nav->iconSize()*0.5);
right_key_nav->setVisible(false);
diff --git a/ui/sourceiconview.cpp b/ui/sourceiconview.cpp
index 140f54931..d4f1ecceb 100644
--- a/ui/sourceiconview.cpp
+++ b/ui/sourceiconview.cpp
@@ -98,7 +98,7 @@ SourceIconDelegate::SourceIconDelegate(QObject *parent) :
{
}
-QSize SourceIconDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
+QSize SourceIconDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &) const
{
if (option.decorationPosition == QStyleOptionViewItem::Top) { // Icon Mode
diff --git a/ui/timelineheader.cpp b/ui/timelineheader.cpp
index 81816492a..59f6d3919 100644
--- a/ui/timelineheader.cpp
+++ b/ui/timelineheader.cpp
@@ -66,9 +66,9 @@ TimelineHeader::TimelineHeader(QWidget *parent) :
in_visible(0),
fm(font()),
dragging_markers(false),
- scroll(0)
+ scroll(0),
+ height_actual(fm.height())
{
- height_actual = fm.height();
setCursor(Qt::ArrowCursor);
setMouseTracking(true);
setFocusPolicy(Qt::ClickFocus);
@@ -467,6 +467,10 @@ void TimelineHeader::paintEvent(QPaintEvent*) {
path.lineTo(in_x+PLAYHEAD_SIZE+1, yoff);
path.lineTo(start);
p.fillPath(path, Qt::red);
+
+ // Draw white line at the top for clarity
+ p.setPen(Qt::gray);
+ p.drawLine(0, 0, width(), 0);
}
}
diff --git a/ui/viewerwidget.cpp b/ui/viewerwidget.cpp
index 3261a25cc..c78309f6b 100644
--- a/ui/viewerwidget.cpp
+++ b/ui/viewerwidget.cpp
@@ -242,7 +242,7 @@ void ViewerWidget::frame_update() {
}
// render the audio
- olive::rendering::compose_audio(viewer, viewer->seq.get(), viewer->get_playback_speed(), viewer->WaitingForPlayWake());
+ olive::rendering::compose_audio(viewer, viewer->seq.get(), viewer->get_playback_speed(), false);
}
}