SHOW:
|
|
- or go back to the newest paste.
| 1 | **Webm-тред** | |
| 2 | ||
| 3 | Тред техподдержки(Устаревшая, но работает): http://2ch.hk/s/res/978430.html | |
| 4 | Отдельный WebM-тред с аниме: *ссылка на данный тред* | |
| 5 | ||
| 6 | Если браузер вместо воспроизведения отдельных видео ругается на повреждённый видеофайл, либо не воспроизводит звук — он скорее всего не может в VP9 и в Opus. См. http://en.wikipedia.org/wiki/HTML5_Audio#Supported_audio_codecs . | |
| 7 | ||
| 8 | Имеется проблема среди пользователей Хрома с 35-й версией, а также браузера на основе этого движка, нервно сосут в сторонке из-за нечётного разрешения: https://code.google.com/p/chromium/issues/detail?id=379127 . | |
| 9 | ||
| 10 | Для поиска соуса видео сохраняем кадр (правый клик по видео) и ищем его на http://images.google.com . | |
| 11 | ||
| 12 | **О кодировании WebM** | |
| 13 | Доступные кодеки — VP8 (видео) и Vorbis или Opus (звук), максимально допустимый размер файла — 6144КБ. | |
| 14 | ||
| 15 | **Синтаксис аргументов ffmpeg** | |
| 16 | `ffmpeg [опции исходного файла] -i исходной_файл [[опции файла 2] -i файл2] [опции кодирования] выходной_файл` | |
| 17 | Все описываемые здесь параметры, если для них не указано иное, идут в опции кодирования. | |
| 18 | Фильтры видео: `-vf фильтр1=параметры,фильтр2,...` | |
| 19 | Выбор дорожек (потоков, выводятся при чтении файла в виде «Stream #0:0»): `-map 0:0 -map 0:1` | |
| 20 | Перезаписывать файл без предупреждения: `-y` | |
| 21 | При указании расширения webm по умолчанию используются Vorbis и VP8. Для VP9 следует добавить -c:v libvpx-vp9 -strict -2. | |
| 22 | ||
| 23 | **Сжатие видео с фиксированным качеством** | |
| 24 | В случае с небольшими фрагментами, для которых лимит 6МБ не страшен, следует использовать фиксированное качество (crf). Отрезаем фрагмент 20 секунд начиная с 10 минут: | |
| 25 | - | Есть два метода контроля ширины потока: «Сжатие видео с фиксированным качеством» и «Подгонка под объём при максимальном качестве». |
| 25 | + | |
| 26 | Параметр -b:v (битрейт видео) при указании crf используется в роли максимального пикового битрейта. Значение crf может быть от 4 (максимальное для VP8 качество) до 60 (говно). | |
| 27 | ||
| 28 | **Подгонка под объём при максимальном качестве** | |
| 29 | Допустим, нужно сконвертировать в WebM 2 минуты файла video.mkv начиная с 10 минут. Прикидываем разрешение — если движения в видео не слишком много, то можно взять 500 пикселей по ширине. | |
| 30 | Первым делом производим оценку сложности видео (она сохраняется в файл ffmpeg2pass-0.log) и заодно кодируем звук: | |
| 31 | `ffmpeg -ss 10:00 -i video.mkv -t 2:00 -vf scale=500:-1 -pass 1 out-a.webm` | |
| 32 | В последней строке вывода будет указан размер звуковой дорожки: audio:1532kB. Если получилось больше половины доступного объёма — нужно снижать качество звука, см ниже. | |
| 33 | Далее вычисляем битрейт по формуле `bitrate = (filesize - audio_size) * 8bit / time`. Для фрагмента 2 минуты это будет `(6144 - 1532)KiB * 8bit / 120sec = 307kbit/s`. | |
| 34 | Второй проход — кодируем видео и копируем звук из результата первого прохода: | |
| 35 | `ffmpeg -ss 10:00 -i video.mkv -i out-a.webm -map 0:v -map 1:a -t 2:00 -c:a copy -vf scale=500:-1 -b:v 307k -auto-alt-ref 1 -lag-in-frames 16 -quality best -pass 2 out.webm` | |
| 36 | Если размер вышел больше 6144КБ — значит, сработало ограничение минимального качества libvpx. Рекомендуется не играться с ним, а уменьшить разрешение или fps и повторить оба прохода. | |
| 37 | Многопоточность (параметр -threads) использовать не рекомендуется — она увеличивает размер видео. | |
| 38 | ||
| 39 | **Звук** | |
| 40 | Доступно два аудиокодека — libvorbis и libopus. Opus обладает лучшим соотношением битрейт/качество, Vorbis поддерживается большим кол-вом браузеров. | |
| 41 | Внимание: если сделать звук моно, то в firefox он будет слышен только слева. Параметр ffmpeg для конвертации в стерео — `-ac 2`. Многоканальный звук работает в firefox с 29 версии. | |
| 42 | По умолчанию для webm используется libvorbis, для управления им обычно достаточно одной настройки: `-q:a <качество>`, где качество указывается числом от 0 (говно) до 9 (почти без потерь), по умолчанию — 2. Пример: | |
| 43 | `ffmpeg -i video.mkv -q:a 7 -ac 2 out.webm` | |
| 44 | Внимание: **libvorbis'у нельзя указывать фиксированный битрейт** (-b:a) — это сильно портит качество звука. | |
| 45 | Opus'у наоборот указывать битрейт необходимо, также для отключения ограничений старой версии формата webm нужно указать `-strict -2`: | |
| 46 | `ffmpeg -i video.mkv -c:a libopus -vbr on -application audio -b:a 48k -strict -2 -ac 2 out.webm` | |
| 47 | **Внимание:** ffmpeg неэффективно муксит Opus, итоговый файл получается на 10-20% больше, чем с mkvmerge. | |
| 48 | ||
| 49 | **Наложение субтитров** | |
| 50 | `ffmpeg -i video.mkv -ss 10:01 -t 30 -vf scale=500:-1,subtitles=video.mkv -b:v 300k out.webm` | |
| 51 | или | |
| 52 | - | **FPS** |
| 52 | + | |
| 53 | - | `ffmpeg -i video.mkv -r 30 out.webm` |
| 53 | + | |
| 54 | - | Значение фпс не следует брать с потолка — получится дёрганое говно. Можно взять исходное значение и поделить пополам. |
| 54 | + | |
| 55 | Внимание: параметр -ss ffmpeg'а следует указывать после входного файла — иначе тайминг субтитров будет считаться от начала фрагмента. | |
| 56 | - | **Добавление превью** |
| 56 | + | |
| 57 | - | Как превью используется первый кадр. Делаем видео с кадром из картинки и тишиной вместо звука, кодируя его с теми же параметрами, что и основное видео: |
| 57 | + | |
| 58 | - | `ffmpeg -i pic.jpg -filter_complex 'anullsrc [a]' -map 0:v -map '[a]' -shortest <параметры энкода видео> pic.webm` |
| 58 | + | |
| 59 | - | и склеиваем его с основным видео: |
| 59 | + | |
| 60 | - | `mkvmerge -w pic.webm + video.webm -o out.webm` |
| 60 | + | Скрипт для удобного вырезания фрагментов в mpv: http://pastebin.com/q6MTsKQ4 . |
| 61 | Функция вычисления битрейта видео по длительности для zsh: http://pastebin.com/W92txUbZ | |
| 62 | - | **Нарезка видео на фрагменты** |
| 62 | + | |
| 63 | - | `mkvmerge -w --split 6040k video.webm -o out.web` (получатся файлы out-001.webm и т.д). |
| 63 | + | |
| 64 | Текст поста: http://pastebin.com/5TMzCwED | |
| 65 | Старый текст поста с превью, со сплитом видео: http://pastebin.com/0EfiyXUY | |
| 66 | - | `ffmpeg -i animu.mkv -ss 10:01 -t 30 -vf scale=500:-1,subtitles=animu.mkv -b:v 300k out.webm` |
| 66 | + |