Прошлые домены не функционирует! Используйте адрес
ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна.
Подробности случившегося. Мы призываем всех неравнодушных
помочь нам с восстановлением утраченного контента!
Тред для приличных анимублядей и прочих аутистов.
Безграмотное быдло с рудабом, порнографией, мокрыми письками, домашним видео с котиками и прочей ерундой отправляется в порнотред .
Тред техподдержки (в оп-посте устаревшая хуита): http://2ch.hk/s/res/978430.html
Внимание: сраный пидромод периодически удаляет тред. Обсуждение тут: http://2ch.hk/d/res/148930.html
Филиал треда с большими WebM'ками (до 20МБ): http://2ch.hk/f/res/22235.html
Если браузер вместо воспроизведения отдельных видео ругается на повреждённый видеофайл, либо не воспроизводит звук — он скорее всего не может в Opus. См. http://en.wikipedia.org/wiki/HTML5_Audio#Supported_audio_codecs.
Для поиска соуса видео сохраняем кадр (правый клик по видео) и ищем его на http://images.google.com.
О кодировании WebM
Доступные кодеки — VP8 (видео) и Vorbis или Opus (звук), размер файла — 6144КБ.
VP9 поддерживается! -c:v libvpx-vp9
Синтаксис аргументов ffmpeg
ffmpeg [опции исходного файла] -i исходной_файл [[опции файла 2] -i файл2] [опции кодирования] выходной_файл
Все описываемые здесь параметры, если для них не указано иное, идут в опции кодирования.
Фильтры видео: -vf фильтр1=параметры,фильтр2,...
Выбор дорожек (потоков, выводятся при чтении файла в виде «Stream #0:0»): -map 0:0 -map 0:1
Перезаписывать файл без предупреждения: -y
Сжатие видео с фиксированным качеством
В случае с небольшими фрагментами, для которых лимит 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 -auto-alt-ref 1 -lag-in-frames 20 -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 20 -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 -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.
(хромоги, обрезка чёрных полос, нарезка видео на фрагменты, fps, превью и скрипты вырезаны из пасты из-за ограничений на длину поста)
Ссылки
Программы и их документация: 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