-
Notifications
You must be signed in to change notification settings - Fork 1k
Add translation to Russian language #146
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
|
Thanks Sheisuka, I hope another person that knows Russian can review it. |
|
Hey @leandromoreira, I know Russian so I can review it on this weekend |
|
Hi @vardbabayan |
|
@Sheisuka Sure, just ping me when it's ready for review |
|
Hey @vardbabayan, it's ready |
|
|
||
| Мы начнём с краткого ликбеза: что такое видео, аудио, кодек и контейнер, затем вкратце пройдемся по командной строке `FFmpeg`, и, наконец, перейдём к коду. Если вам это неинтересно, смело пролистывайте прямо к разделу [Learning FFmpeg libav the hard way](#learn-ffmpeg-libav-the-hard-way) (да, ссылка с картинкой посреди фразы — это отсылка к мемам, не баг). | ||
|
|
||
| Кто-то говорит, что видеостриминг в Интернете — будущее традиционного ТВ. В любом случае, FFmpeg — вещь, которую стоит изучить. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Думаю "Some people used to say" точнее перевести как "Некоторые люди раньше говорили, что ..."
| * [видео — то, что ты видишь!](#video---what-you-see) | ||
| * [аудио — то, что ты слышишь!](#audio---what-you-listen) | ||
| * [кодек — сжатие данных](#codec---shrinking-data) | ||
| * [контейнер — дом для аудио и видео](#container---a-comfy-place-for-audio-and-video) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"comfy place" - уютное место, здесь стоит поправить "контейнер - уютное место для аудио и видео"
| * [контейнер — дом для аудио и видео](#container---a-comfy-place-for-audio-and-video) | ||
| * [FFmpeg — командная строка](#ffmpeg---command-line) | ||
|
|
||
| * [FFmpeg CLI 101](#ffmpeg-command-line-tool-101) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo: [FFmpeg CLI 101] shouldn't be [FFmpeg — командная строка 101] ?
| * [Transsizing (изменение разрешения)](#transsizing) | ||
| * [Бонус: адаптивный стриминг](#bonus-round-adaptive-streaming) | ||
| * [Дальше — больше](#going-beyond) | ||
| * [Learning FFmpeg libav the hard way](#learn-ffmpeg-libav-the-hard-way) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Learning FFmpeg libav the hard way -> Изучаем FFmpeg и libav трудным путем
поправить тот же момент на 15й строке
| * [Дальше — больше](#going-beyond) | ||
| * [Learning FFmpeg libav the hard way](#learn-ffmpeg-libav-the-hard-way) | ||
|
|
||
| * [Глава 0 — печально известный «hello world»](#chapter-0---the-infamous-hello-world) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: вокруг hello world можно убрать кавычки
|
|
||
| ## аудио — то, что ты слышишь! | ||
|
|
||
| Молчаливое видео может многое передать, но без звука это будет совсем не то. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Здесь дословно будет немного иначе перевод:
- Хотя видео без звука может выражать самые разные чувства, добавление звука делает просмотр более приятным.
| $ ffmpeg -i input.mp4 output.avi | ||
| ``` | ||
|
|
||
| Мы только что сделали **ремаксим** (remuxing) — конвертировали один контейнер в другой. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ремаксим -> ремультиплексирование
| 4. опции выходного файла | ||
| 5. выходной URL/путь | ||
|
|
||
| Блоки 2–5 можно повторять сколько угодно. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: 2-5 -> 2, 3, 4 и 5
(порядок аргументов важен)
| bunny_1080p_60fps_vp9.webm # выходной url | ||
| ``` | ||
|
|
||
| Эта команда берёт `mp4` с двумя потоками (аудио в `aac` и видео в `h264`) и делает `webm`, изменяя и аудио-, и видео-кодеки. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Более корректный перевод:
Эта команда берёт на входе файл mp4 с двумя потоками (аудио закодированное кодеком aac и видео закодированное с помощью кодека h264) и конвертирует в webm, изменяя изначальные аудио, и видео кодеки.
|
|
||
| **Что это?** преобразование одного из потоков (аудио или видео) из одного кодека в другой. | ||
|
|
||
| **Зачем?** иногда устройство (TV, смартфон, консоль и т.д.) не поддерживает кодек X, но поддерживает кодек Y; также новые кодеки нередко дают лучшую степень сжатия. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
иногда устройство -> иногда некоторые устройства
|
|
||
| **Что это?** конвертация из одного формата (контейнера) в другой. | ||
|
|
||
| **Зачем?** некоторые устройства не поддерживают контейнер X, но поддерживают Y; новые контейнеры иногда дают современные фичи. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"иногда некоторые устройства ..."
"дают ..." -> "предоставляют ..."
|
|
||
|  | ||
|
|
||
| **Что это?** изменение битрейта или создание альтернативных «редишнов» (версий). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Предлагаю поправить, чтобы оставить ссылку на оригинальный термин для читателей:
или создание альтернативных версий видео (renditions).
|
|
||
| **Что это?** изменение битрейта или создание альтернативных «редишнов» (версий). | ||
|
|
||
| **Зачем?** кто-то будет смотреть через `2G` на слабом смартфоне, а кто-то — через `fiber` на 4K-TV; стоит предложить несколько версий одного видео под возможности зрителя. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fiber -> оптоволокно
стоит предложить несколько версий одного видео с разным битрейтом под возможности зрителя.
|
|
||
|  | ||
|
|
||
| **Что это?** изменение разрешения. Как уже сказано, часто идёт в паре с transrating. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: Как уже сказано, transsizing часто идёт в паре с transrating.
|
|
||
|  | ||
|
|
||
| **Что это?** производим несколько разрешений (битрейтов), режем медиа на чанки и отдаём по HTTP. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
режем медиа на чанки -> режем медиа на фрагменты
|
|
||
| **Что это?** производим несколько разрешений (битрейтов), режем медиа на чанки и отдаём по HTTP. | ||
|
|
||
| **Зачем?** гибкость — можно смотреть и на слабом смартфоне, и на 4K-TV; легко масштабировать и деплоить, но может добавить задержку. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Больше передает смысл этот вариант:
Зачем? чтобы обеспечить гибкий медиаконтент, который можно смотреть как на маломощном смартфоне, так и на 4K-телевизоре, его также легко масштабировать и развертывать, но это может добавить задержку.
|
|
||
| ## Дальше — больше | ||
|
|
||
| [Применений FFmpeg — тьма](https://github.com/leandromoreira/digital_video_introduction/blob/master/encoding_pratical_examples.md#split-and-merge-smoothly). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[Применений FFmpeg — тьма] -> [Существует множество других способов использования FFmpeg.]
| Раз уж [FFmpeg](#ffmpeg---command-line) настолько полезен в CLI для базовых операций с медиафайлами, как использовать его в своих программах? | ||
|
|
||
| FFmpeg — это [набор библиотек](https://www.ffmpeg.org/doxygen/trunk/index.html), которые можно интегрировать в свои приложения. | ||
| Обычно при установке FFmpeg ставятся и эти библиотеки. Я буду называть их совокупно **FFmpeg libav**. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
дабы не использовать "cовокупно" -> Я буду называть набор этих библиотек FFmpeg libav.
|
|
||
| > Это название — дань уважения серии Zed Shaw [Learn X the Hard Way](https://learncodethehardway.org/), в частности его книге Learn C the Hard Way. | ||
|
|
||
| ## Глава 0 — печально известный «hello world» |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
кавычки вокруг hello world не нужны
| ## Глава 0 — печально известный «hello world» | ||
|
|
||
| Этот hello world не выведет `"hello world"` в терминал :tongue: | ||
| Вместо этого мы **распечатаем информацию о видео** — формат (контейнер), длительность, разрешение, каналы аудио; а затем **декодируем несколько кадров и сохраним их как изображения**. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-
каналы аудио -> аудио каналы
в речи обычно так звучит естественнее -
а затем -> и напоследок
|  | ||
|
|
||
| Сначала нужно загрузить медиафайл в компонент [`AVFormatContext`](https://ffmpeg.org/doxygen/trunk/structAVFormatContext.html) (контейнер также называют «format»). | ||
| На самом деле полностью файл не читается: зачастую парсится только заголовок. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
«format» -> формат (и без кавычек)
форма файла = контейнер файла (e.g mp4 / mov / etc..)
| Сначала нужно загрузить медиафайл в компонент [`AVFormatContext`](https://ffmpeg.org/doxygen/trunk/structAVFormatContext.html) (контейнер также называют «format»). | ||
| На самом деле полностью файл не читается: зачастую парсится только заголовок. | ||
|
|
||
| После чтения минимального **заголовка контейнера** можно получить доступ к его потокам (по сути — сырой аудио/видео). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(по сути — сырой аудио/видео) поменять на (думайте о них как о примитивных аудио и видеоданных)
| На самом деле полностью файл не читается: зачастую парсится только заголовок. | ||
|
|
||
| После чтения минимального **заголовка контейнера** можно получить доступ к его потокам (по сути — сырой аудио/видео). | ||
| Каждый поток доступен через [`AVStream`](https://ffmpeg.org/doxygen/trunk/structAVStream.html). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Каждый поток доступен через компонент, называемый AVStream ...
|
|
||
| > Stream — красивое слово для «непрерывного потока данных». | ||
|
|
||
| Допустим, у нашего видео два потока: аудио в [AAC](https://en.wikipedia.org/wiki/Advanced_Audio_Coding) и видео в [H264 (AVC)](https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC). Из каждого потока мы извлекаем **кусочки данных** — пакеты, [`AVPacket`](https://ffmpeg.org/doxygen/trunk/structAVPacket.html). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Переделать весь абзац:
Допустим, у нашего видео есть два потока: аудио в AAC Кодек и видео в H264 (AVC) Кодек. Из каждого потока мы извлекаем кусочки данных, называеые пакетами которые будут загружены в компонент называемый AVPacket.
|
|
||
| Допустим, у нашего видео два потока: аудио в [AAC](https://en.wikipedia.org/wiki/Advanced_Audio_Coding) и видео в [H264 (AVC)](https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC). Из каждого потока мы извлекаем **кусочки данных** — пакеты, [`AVPacket`](https://ffmpeg.org/doxygen/trunk/structAVPacket.html). | ||
|
|
||
| **Данные в пакетах всё ещё кодированы** (сжаты), и чтобы их декодировать, передаём их соответствующему [`AVCodec`](https://ffmpeg.org/doxygen/trunk/structAVCodec.html). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
кодированы -> закодированы
из контекста т.к далее их придется декодировать
Hi there
I've translated README to Russian!
It's not brilliant but I hope it will do the job