Анимублядский WebM-тред для приличных анимублядей и прочих аутистов. Безграмотное быдло с рудабом, порнографией, мокрыми письками, домашним видео с котиками и прочей ерундой отправляется в порнотред >>73150864.
Все описываемые здесь параметры, если для них не указано иное, идут в опции кодирования. Фильтры видео: -vf фильтр1=параметры,фильтр2,...
Выбор дорожек (потоков, выводятся при чтении файла в виде «Stream #0:0»): -map 0:0 -map 0:1
Перезаписывать файл без предупреждения: -y
При указании расширения webm по умолчанию используются Vorbis и VP8. Для VP9 следует добавить -c:v libvpx-vp9 -strict -2.
Сжатие видео с фиксированным качеством В случае с небольшими фрагментами, для которых лимит 6МБ не страшен, следует использовать фиксированное качество (crf). Отрезаем фрагмент 20 секунд начиная с 10 минут: ffmpeg -ss 10:00 -i video.mkv -t 20 -crf 30 -b:v 5m out.webm
Параметр -b:v (битрейт видео) при указании crf используется в роли максимального пикового битрейта. Значение crf может быть от 4 (максимальное для VP8 качество) до 60 (говно).
Запихивание максимального качества в указанный объём Допустим, нужно сконвертировать в WebM 2 минуты файла video.mkv начиная с 10 минут. Прикидываем разрешение — если движения в видео не слишком много, то можно взять 500 пикселей по ширине. Первым делом производим оценку сложности видео (она сохраняется в файл ffmpeg2pass-0.log) и заодно кодируем звук: ffmpeg -ss 10:00 -i video.mkv -t 2:00 -vf scale=500:-1 -pass 1 out-a.webm
В последней строке вывода будет указан размер звуковой дорожки: audio:1532kB. Если получилось больше половины доступного объёма — нужно снижать качество звука, см ниже. Далее вычисляем битрейт по формуле bitrate = (filesize - audio_size) 8bit / time . Для фрагмента 2 минуты это будет (6144 - 1532)KiB 8bit / 120sec = 307kbit/s . Второй проход — кодируем видео и копируем звук из результата первого прохода: 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
Если размер вышел больше 6144КБ — значит, сработало ограничение минимального качества libvpx. Рекомендуется не играться с ним, а уменьшить разрешение или fps и повторить оба прохода. Многопоточность (параметр -threads) использовать не рекомендуется — она увеличивает размер видео.
Звук Доступно два аудиокодека — libvorbis и libopus. Opus обладает лучшим соотношением битрейт/качество, Vorbis поддерживается большим кол-вом браузеров. Внимание: если сделать звук моно, то в firefox он будет слышен только слева. Параметр ffmpeg для конвертации в стерео — -ac 2 . Многоканальный звук работает в firefox с 29 версии. По умолчанию для webm используется libvorbis, для управления им обычно достаточно одной настройки: -q:a <качество> , где качество указывается числом от 0 (говно) до 9 (почти без потерь), по умолчанию — 2. Пример: ffmpeg -i video.mkv -q:a 7 -ac 2 out.webm
Внимание: libvorbis'у нельзя указывать фиксированный битрейт (-b:a) — это сильно портит качество звука. Opus'у наоборот указывать битрейт необходимо, также для отключения ограничений старой версии формата webm нужно указать -strict -2 : ffmpeg -i video.mkv -c:a libopus -vbr on -application audio -b:a 48k -strict -2 -ac 2 out.webm
Внимание: ffmpeg неэффективно муксит Opus, итоговый файл получается на 10-20% больше, чем с mkvmerge.
Как видно из параметров, mpv позволяет увеличивать субтитры (--sub-scale) и сдвигать их вверх (--sub-pos). Также mpv берёт сабы автоматически из контейнера или из файла с совпадающем с видео именем, а для ffmpeg требуется указание файла. При этом mpv пока не пригоден для двухпроходного кодирования с указанием среднего битрейта, а для ffmpeg в щиндовсе нужно настраивать fontconfig: https://github.com/AlsaAsksMiley/webm-thread-misc/blob/master/Fontconfig_and_subs.txt Внимание: параметр -ss ffmpeg'а следует указывать после входного файла — иначе тайминг субтитров будет считаться от начала фрагмента. В git-версии фильтр subtitles ffmpeg'а научился брать шрифты из контейнера и понимать параметр si (номер потока с нужными сабами), коммиты 7e6b3ad и 7a0e689.
>>73171627 На прыщах делал другое видео (132 секунды, ~41 секунда конвертации в среднем на одну секунду видео, полтора часа на конвертацию, репортаж про клерка, особо много движения там не было), сейчас его не нашёл, завтра это видео сконвертирую.
>>73171205 Так а сравнение кодирования одного и того же фрагмента с одинаковыми настройками под разными ОС запилишь? Фрагмент может быть совсем небольшим. > Таймер поставить не догадался Может быть достаточно значения fps. Жаль, правда, что только один знак после запятой. > по субъективным ощущениям, всё заняло где-то 3 часа. Ты не далёк от истины: 5217 frames / 0.5 fps / 60 seconds /60 minutes = 2.89 hours,
Олсо, видео у тебя жёсткое, оно бы и на xeon'е долго кодировалось, наверно.
>>73172334 Не, >>73172157 я серьезно. Уже месяц как на каникулы с университета приехал домой, мать каждый день спать гонит в 12. Ну и к тому же я с видео ступил, что другой по сложности исходник взял.
>>73173872 В Сербии, если тебя это реально интересует
>>73173970 Помню только что сначала ФПС понизили где-то до четырех, а затем вроде бы подняли до 60 каким-то специальным плеером, который пытается "додумать" необходимые кадры. Вот это (http://www.spirton.com/convert-videos-to-60fps/) когда-то был гайд по изготовлению 60 fps webm'ок, но я все таки так и не проверил как он работает, и работает ли вообще.
>>73174344 Мы ходили там на байдарках Ибр-Западная Морава-вверх по Дунаю до Белграда. Могу точно сказать что реки там ужасно грязные, а так же чувствуется относительно недавнее наводнение, так как по всем деревьям вдоль рек на пару метров вверх по веткам разбросаны клоки мусора. Ну, а в остальном все было вполне нормально. Многие там знают английский, что-то понимают по-русски.
>>73174369 Спасибо, к предыдущему треду доделал. Весной с VP8 вообще не получалось никак
>>73175895 Ананасы, в подобном треде видел вебм где тянка из чудачество любви не помеха крутила жопой и пальцами под какую-то музыку, все было зацикленно конечно же. В общем, ищу этот вебм!
>>73177665 Все вы так говорили, а потом оказывается, что она мертва уже пару часов, а ты думал, что просто спать легла, после удушения или лошадиной дозы снотворного.
>>73178634 Что это? Что-то про дальнобойщиков? Нужно научиться водить. Права купил пару лет назад, сейчас есть возможность ездить на родительском автомобиле. Какие есть симуляторы годные, чтобы хоть немного понять где там что?
для приличных анимублядей и прочих аутистов.
Безграмотное быдло с рудабом, порнографией, мокрыми письками, домашним видео с котиками и прочей ерундой отправляется в порнотред .
Тред техподдержки (в оп-посте устаревшая хуита): http://2ch.hk/s/res/978430.html
Обсуждение припадочных модераторов: http://2ch.hk/d/res/148930.html
Филиал треда с большими WebM'ками (до 20МБ): http://2ch.hk/f/res/22235.html
Если браузер вместо воспроизведения отдельных видео ругается на повреждённый видеофайл, либо не воспроизводит звук — он скорее всего не может в VP9 или Opus. См. http://en.wikipedia.org/wiki/HTML5_Audio#Supported_audio_codecs.
Хромоги с зондом 35 версии, а также пользователи браузеров на его движке сосут на вебмках с нечётными размерами: https://code.google.com/p/chromium/issues/detail?id=379127.
Для поиска соуса видео сохраняем кадр (правый клик по видео) и ищем его на http://images.google.com.
О кодировании WebM
Доступные кодеки — VP8 или VP9 для видео и Vorbis или Opus для звука, размер файла — 6144КБ.
Синтаксис аргументов ffmpeg
ffmpeg [опции исходного файла] -i исходной_файл [[опции файла 2] -i файл2] [опции кодирования] выходной_файл
Все описываемые здесь параметры, если для них не указано иное, идут в опции кодирования.
Фильтры видео: -vf фильтр1=параметры,фильтр2,...
Выбор дорожек (потоков, выводятся при чтении файла в виде «Stream #0:0»): -map 0:0 -map 0:1
Перезаписывать файл без предупреждения: -y
При указании расширения webm по умолчанию используются Vorbis и VP8. Для VP9 следует добавить -c:v libvpx-vp9 -strict -2.
Сжатие видео с фиксированным качеством
В случае с небольшими фрагментами, для которых лимит 6МБ не страшен, следует использовать фиксированное качество (crf). Отрезаем фрагмент 20 секунд начиная с 10 минут:
ffmpeg -ss 10:00 -i video.mkv -t 20 -crf 30 -b:v 5m out.webm
Параметр -b:v (битрейт видео) при указании crf используется в роли максимального пикового битрейта. Значение crf может быть от 4 (максимальное для VP8 качество) до 60 (говно).
Запихивание максимального качества в указанный объём
Допустим, нужно сконвертировать в WebM 2 минуты файла video.mkv начиная с 10 минут. Прикидываем разрешение — если движения в видео не слишком много, то можно взять 500 пикселей по ширине.
Первым делом производим оценку сложности видео (она сохраняется в файл ffmpeg2pass-0.log) и заодно кодируем звук:
ffmpeg -ss 10:00 -i video.mkv -t 2:00 -vf scale=500:-1 -pass 1 out-a.webm
В последней строке вывода будет указан размер звуковой дорожки: audio:1532kB. Если получилось больше половины доступного объёма — нужно снижать качество звука, см ниже.
Далее вычисляем битрейт по формуле bitrate = (filesize - audio_size) 8bit / time
. Для фрагмента 2 минуты это будет (6144 - 1532)KiB 8bit / 120sec = 307kbit/s
.
Второй проход — кодируем видео и копируем звук из результата первого прохода:
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
Если размер вышел больше 6144КБ — значит, сработало ограничение минимального качества libvpx. Рекомендуется не играться с ним, а уменьшить разрешение или fps и повторить оба прохода.
Многопоточность (параметр -threads) использовать не рекомендуется — она увеличивает размер видео.
Звук
Доступно два аудиокодека — libvorbis и libopus. Opus обладает лучшим соотношением битрейт/качество, Vorbis поддерживается большим кол-вом браузеров.
Внимание: если сделать звук моно, то в firefox он будет слышен только слева. Параметр ffmpeg для конвертации в стерео — -ac 2
. Многоканальный звук работает в firefox с 29 версии.
По умолчанию для webm используется libvorbis, для управления им обычно достаточно одной настройки: -q:a <качество>
, где качество указывается числом от 0 (говно) до 9 (почти без потерь), по умолчанию — 2. Пример:
ffmpeg -i video.mkv -q:a 7 -ac 2 out.webm
Внимание: libvorbis'у нельзя указывать фиксированный битрейт (-b:a) — это сильно портит качество звука.
Opus'у наоборот указывать битрейт необходимо, также для отключения ограничений старой версии формата webm нужно указать -strict -2
:
ffmpeg -i video.mkv -c:a libopus -vbr on -application audio -b:a 48k -strict -2 -ac 2 out.webm
Внимание: ffmpeg неэффективно муксит Opus, итоговый файл получается на 10-20% больше, чем с mkvmerge.
Наложение субтитров
ffmpeg -i animu.mkv -ss 10:01 -t 30 -vf scale=500:-1,subtitles=animu.mkv -b:v 300k out.webm
или
mpv animu.mkv --start 10:01 --length 30 --vf scale=500:-2,sub --sub-pos 90 --sub-scale 1.3 --ovcopts b=300k -o out.webm
Как видно из параметров, mpv позволяет увеличивать субтитры (--sub-scale) и сдвигать их вверх (--sub-pos). Также mpv берёт сабы автоматически из контейнера или из файла с совпадающем с видео именем, а для ffmpeg требуется указание файла.
При этом mpv пока не пригоден для двухпроходного кодирования с указанием среднего битрейта, а для ffmpeg в щиндовсе нужно настраивать fontconfig: https://github.com/AlsaAsksMiley/webm-thread-misc/blob/master/Fontconfig_and_subs.txt
Внимание: параметр -ss ffmpeg'а следует указывать после входного файла — иначе тайминг субтитров будет считаться от начала фрагмента.
В git-версии фильтр subtitles ffmpeg'а научился брать шрифты из контейнера и понимать параметр si (номер потока с нужными сабами), коммиты 7e6b3ad и 7a0e689.
Ссылки
Программы и их документация: http://ffmpeg.org, http://mpv.io, http://www.bunkus.org/videotools/mkvtoolnix/.
Гуй с минимумом кнопок для ретардов (сперма-only): https://github.com/WebMBro/WebMConverter/releases.
Исходники op-webm'а (скрипт на zsh и пикчи): https://github.com/pituz/webm-thread/tree/master/overlay
Текст поста: https://github.com/pituz/webm-thread/blob/master/op-paste