Все описываемые здесь параметры, если для них не указано иное, идут в опции кодирования. Фильтры видео: -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 -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 неэффективно муксит 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.
>>72962859 Если бы ты был аниме, то ты бы превратил свою жизнь в то, чем она и так является сейчас. Даже если бы ты был кошкодевочкой, то все равно вёл бы себя не как она, а как великовозрастный дебил в её теле. Так что не помогло бы.
> frame= 4140 fps=0.7 q=0.0 Lsize= 4378kB time=00:02:18.13 bitrate= 259.6kbits/s > video:4349kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.667739% > real 94m23.081s > user 94m20.092s > sys 0m3.848s
(9460+23)/138=~41 В среднем 41 секунда реального времени на кодирование 1 секунды видео. Причём когда я только поставил видео конвертиться, значение fps было больше, со временем, наверно, упало. Ящитаю, оптимизация не прошла зря, хотя для видео размера 500x283 это довольно плохо, надо было оставить оригинальный размер. i3-2350M-кун
>>72968654 >У тебя одна вебм что ли? 21 по Мадоке. > Понарежь из твшек же Нет цели нарезать весь тайтл. К тому же некоторые сцены просто не хочется делать.
>>72971703 > если были какие-то вопросы по прыщам Не было. Сейчас думаю, как безболезненно вычистить xfce и всю ту парашу, что была установлена с лайв-сиди.
>>72973028 > Сейчас думаю, как безболезненно вычистить xfce и всю ту парашу, что была установлена с лайв-сиди. aptitude search '~i !~M' покажет все отмеченные установленными вручную пакеты. Сделай с ненужными aptitude markauto , остальное уйдёт само.
>>72978732 Вчера дело было, точно уже не помню. Битрейт считал по обычной схеме, вроде в два прохода, но без -quality а может и с -quality good, ну и разрешение 640x360, поэтому довольно быстро.
>>72977521 >А сколько надо? На всякий случай не буду говорить. Но у моей вебки, той что без порнухи рисованной, размер другой. И она не 12 секунд длительностью по понятным причинам.
>>72979203 Собсна вот, она кодировалась с теми же параметрами, но почему-то вышла за пределы 6144K. Я хотел из запостить как вчера было модно: слева vp8, справа vp9.
>>72979653 Квадраты заметны конечно, но не так смертельно. Лучшей демонстрацией вп9 является то видио про пилота. А простые оп можно и через вп8 делать.
>>72977691 Вот, смотри. Тут правда битрейт разный, так как вебки с vp9 больше по размеру получаются, и с таким же битрейтом, как у вебки с vp8 был выставлен, в шестимегабайтный лимит не влезло бы. Та, что с vp9 слева. Плюс, я еще выше по треду >>72968537 амвешку с vp9 постил, которую вчера нарезал.
>>72980974 > А -quality? Не указывал. > Можешь попробовать еще -vbr off - для звука. Со звуком меня и так всё устраивает. Я его кодирую в начале, иногда слушаю кусок, а потом считаю битрейт видео от его размера.
>>72981081 > Первое vp8, второе vp9? По-моему, там хорошо видно, какое видео распидорашено.
>>72981277 Я хочу сначала получше изучить поведение дефолта, а потом уже курить документацию и смотреть, как будут влиять разные параметры. Но спасибо, попробую.
Знающий анон, подскажи. На vp9 пофикшено проблема с одноканальным звуком vorbis в фаерфоксе? А то раньше в одном наушнике только играло. Приходилось два канала указывать, в ущерб качеству видео.
>>72982620 Уже удалил исходник: нужно было место на диске. > -bufsize 231K Имхо, это больше повлияет на соотношение битрейт/качество, чем на контроль ширины потока.
>>72982634 Маловероятно. Не думаю, что из-за смены видеокодека как-то меняется обработка звука.
>>72984665 С одним проходом либо битрейт получается выше, либо картинку распидорашивает на кейфреймах. Можно ещё заюзать -vf setpts=PTS/0.1, получится 0.1фпс. Но тогда вместо -vframes надо указывать -t. > -threads 1 > -crf 4 Это дефолт, можно не писать. > -r 1 Нужно поставить перед -i, иначе картинка будет лупиться с дефолтными 25фпс, а потом 24 из них будут выкидываться. Пустая трата ресурсов. > -b:a 192k Не дохуя ли для opus'а-то? Лучше бы тогда заюзал vorbis с -q:a 5.
>>72984854 При первом проходе -shortest не работает.
>>72986905 Битрейт — это отношение размера файла к длительности. Это могло быть сказано только в контексте сравнения с другим кодеком, про отношение битрейта к качеству.
>>72987375 Молодец. А теперь посчитаем. У тебя: > video: 1275kB > frames 17 75кб на кадр. У меня: > video: 634kB > frames: 35 18кб на кадр. Кто-то соснул аж в 4 раза.
>>72987259 > Без -b:v 99M картинку в начале видео распидорасило С двумя проходами бы не распидорасило.
>>72984424 > Но работать будет только в браузере. Значит, у тебя вместо плеера какое-то говно, скорее всего мокрописечное. В mpv и mplayer всё работает. Олсо, у некоторых товарищей с firefox 31 под спермой от видео с одним кадром звук оставался до перезапуска браузера.
>>72988331 А тред мы читаем жопой? У него одна картинка с частотой 1/10fps. Дефолтных 200кбпс VP8 для сохранения такой картинки с близким к лосслессу качеством более чем достаточно.
>>72987868 >Кто-то соснул аж в 4 раза. Кто-то обосрался и начал съезжать с темы. У нас уговор был о кодировании в один проход и чтобы картинку не распидорашивало. О размерах речи не было. >>72988331 Битрейта добавь.
>>72988668 > Кто-то обосрался и начал съезжать с темы. Нет, кто-то читал посты жопой, разговор был именно об этом. В >>72985445 было сказано: > С одним проходом либо битрейт получается выше, либо картинку распидорашивает на кейфреймах.
Помоги, двощ. Как сделать чтобы в первый проход (из двух) записывалось только аудио, без видео? Видео вроде бы и не записывается, да и не показывает, но mpv говорит что video stream есть. -vn ломает нахуй видеоанализ первого прохода. У меня боли.
Сап вебач выручай. Есть один ТТГЛ. Суть такова хочу нарезать его но в русской озвучкой (пожалуй единственное аниме в котором русская озвучка лучше) но беда в том что в самом что озвучка идет отдельным файлом. Что делать? Реквестирую советов мудрых и не очень.
>>72985428 Цветоперередача лучше, присмотрись. Квадраты там из за разницы в битрейте, в вебке с vp9 их немножко больше, битрейт там примерно на две сотни ниже, по сравнению с соседней, так как с таким же битрейтом, как я в вебке с vp8 выставил, в шесть мегабайт бы не влезло, я специально в том посте отметил это.
>>72989193 Не делай так. Сначала сконвертируй отдельно аудио в файл, например, out-a.ogg, главное, не забудь указать -vn, иначе он тебе туда Theora присобачит. Потом кодируй в два прохода видеофайл, например, out-v.webm. Потом склеивай аудио из первого файла (out-a.ogg) и видео из второго(out-v.webm).
>>72989193 >Как сделать чтобы в первый проход (из двух) записывалось только аудио, без видео? Как-то так: ffmpeg -i src.mkv -an -pass 1 -f null /dev/null -vn audio.webm В сперме вместо /dev/null писать NUL.
>>72989626 > Я ничего о размерах не говорил. А я говорил именно о размерах: > либо битрейт получается выше Ты же кукарекал что два прохода для статичной картинки не нужны. Мб ты нашёл способ обходить здешний лимит в 6144кб?
> Или я должен был все твои посты с начала треда читать? Речь о том, что ты читаешь жопой те посты, на которые отвечаешь.
> Не можешь в дискас, помалкивай. Сказал упёртый баран, для которого четырёхкратное увеличение размера видеопотока — не аргумент. Не смотря на то, что об эффективности сжатия речь шла изначально.
>>72989874 > ffmpeg -y -r 0.0025906 -i %d.jpg У меня не работает, ffmpeg 2.2 и 2.3. Потому и пляски с setpts. Ты хоть проверял?
>>72991650 Ну давай разберём по частям тобою написанное. Ты общался с совершенно другим аноном по поводу хуй знает чего, потом ты влез в дискас между мной и ещё одним аноном и инкриминируешь мне что я не прочитал тот дискас между тобой и ним. Завязывай обтекать уже, шавка.
>>72992605 >До этого вебм с опусом просто не циклилась. Я помню, у меня они и сейчас не циклятся толком, надо вручную видео с начала перезапускать, с помощью ползунка. Но раньше такого как сейчас у меня не было, чтобы последние две-три секунды циклились каждый раз, это только после перехода на макабу появилось, раньше просто звук заедал время от времени, минут через 5-10, если видео закрыть забыть.
>>72996497 ДВС есть, а огнестрела нет, даже сраных арбалетов нет. Лучники появились один раз за весть сериал, натянули всех на кукан и больше не появлялись.
>>72996767 Лучником хорошим просто так не станешь, бендить легче. Арбалеты - их ещё и заряжать заебёшься, можно конечно делать это на основе бендинга, но в это смогут единицы. Огнестрел, не очень необходим, когда ты с рук можешь молнией ебашить, а быстро путешествовать необходимо всегда.
>>72996985 Ты же сам понимаешь, какую хуйню написал. Что неплохо (для детского мультика) смотрелось в средневековье в дизильпанковых декорациях уже идиотизм.
>>72996985 >Огнестрел, не очень необходим, когда ты с рук можешь молнией
Доступность для каждого, незаметность, скорость полёта снаряда, никакой бендер не успеет среагировать на летящую в него пулю да что там, даже звук выстрела достигнет его уже после попадания. Очевидный обосрамс любого мага.
>>72994770 Я вот так ту вебку >>72994474 кодировал ffmpeg -i mis.mp4 -ss 00:00:06.200 -to 00:08:00.000 -c:v libvpx-vp9 -c:a libopus -strict -2 -b:a 40k -crf 4 -b:v 75K -quality best -vf scale=400:-1 363.webm. >>72995494 Немножко не понял, к чему ты этой вебкой мне ответил. Или ты просто так?
>>73002689 > School 13 вроде Nyet. >>73002698 > Кто-то говорил, что Йошираку более повседневный, чем но Но Бьйори Плюнь тому в рожу. Там круглосуточный театр абсурда и к повседневности разве что пара моментов имеет отношение.
>>73004098 Рельса, у меня два вопроса: 1) Почему ты так долго отвечаешь, хотя сидишь в этом треде постоянно? 2) Сколько по времени делал и с какими параметрами? >>73000808
>>73004191 >1) Почему ты так долго отвечаешь, хотя сидишь в этом треде постоянно? Я могу случайно пропустить пост, или отойти ненадолго куда нибудь, когда я надолго отхожу, я пишу обычно, но это редко бывает. Еще иногда я довольно долго думаю, что написать, или ответить кому нибудь, или пост долго редактирую и перепечатываю. >Сколько по времени делал и с какими параметрами? Минут 10-15, от конкретной вебки зависит, чем длинней, и выше разрешение с битрейтом выставленным, тем дольше. Это с vp9 и -quality best, с vp8 гораздо быстрее. >и с какими параметрами? Опус, libvpx-vp9, настройки битрейта, разрешения, длительности. Но вообще, набор команд тоже от конкретной вебки зависит.
VP9 vs VP8: ultimate comparsion. Для VP9 пришлось указать битрейт, как будто я хочу 16-метровый файл — иначе получалось 17kbps. А VP8 наоборот захуячил 8 метров и наотрез отказывался делать меньше не смотря на ограничения битрейта — в правом файле видео пришлось обрезать на третьей минуте.
>>73011521 За заебал ты уже со своим говнодабом. Уймись наконец.
>>72991945 Это в firefox 31 такой баг. В 29 и 30 не было.
>>73013911 17kbps видео (итоговый средний битрейт). Я тогда экспериментировал с mpdecimate, поэтому кадров в 2 раза меньше, чем на роликах в >>73013911.
Рельсаны, мне нужны моменты, где рейлган краснеет, смотрит в телефон и ещё, наверное, если есть держит детишек в руках/гладит по голове. Пишите номер серии и таймкод.
Доброго утречка, мои зайчишки-шалунишки! Опять сонненькие, сладенькие котятки? Ну ка, давайте маленькие, просыпайтесь, мордочку умывульки, лапками потягульки-потягульки! Одну лапку подняли, другу лапку подняли - полетели, полетели, полетели, наааа головку сели. Какие вы у меня умнички, медвежатки ласковые, пингвинчики прямо ня, люблю вас всех, нежненькие мои, любименькие, лапками няшите игриво, лентюльки мои пушистенькие, вставать не хотите, глазки сонные, ушки маленькие, мордочкой кривите, а я вас обниму так нежненько, на коленочку посажу и к животику нежненько прижму, чтобы вы бурундчуки махонькие не мёрзли, мурлыкой фыркали приятно так, тёпленько в ладошку и хвостиками хитрили, как котятки смешнявые, ня воть :3
Любая встреча с томным, пускай будет серия с мостом, где она краснеет несколько раз - рейлган сезон 2 серия 14. Можно ещё вспомнить момент из 2 сезона индекса, 9 серия, где томный практически её выебал.
>смотрит в телефон
Хуй знает, вспоминается только финальный момент 2-ого филлера в космосе, рейлган сезон 2 серия 24.
>держит детишек в руках/гладит по голове
Не было такой хуйни, она же ненавидит детей. Хотя мб в серии с приютом что-то подобное было. Рейлган сезон 1 серия 18. Таймкоды лень смотреть.
Тред техподдержки (в оп-посте устаревшая хуита): 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 -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 неэффективно муксит 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/short/op-paste