Кодирование для быстрого декодирования с помощью ffmpeg

Кодирование с помощью ffmpeg и libx264, есть ли пресеты или флаги, которые оптимизируют скорость декодирования?

Прямо сейчас кажется, что видео, перекодированные с одинаковыми размерами файлов, декодируются с очень разной скоростью с помощью Qtkit, и мне было интересно, есть ли варианты кодирования, чтобы скорость декодирования была максимальной.


person nbubis    schedule 07.01.2014    source источник
comment
Если вы используете нарезное кодирование, ваш декодер может использовать преимущества многопоточности (при условии, что ваш декодер может быть ускорен этим, например, декодирование одного потока является узким местом на многоядерном процессоре).   -  person Alex Cohn    schedule 07.01.2014
comment
@AlexCohn - можете ли вы указать какие-либо ссылки на нарезанное кодирование с помощью ffmpeg?   -  person nbubis    schedule 07.01.2014
comment
См. mewiki.project357.com/wiki/X264_Settings#slices и mewiki.project357.com/wiki/X264_Settings#sliced-threads. Такой подход может сократить время декодирования примерно на 75%, но за счет качества. Это актуально только для кадров высокого разрешения. Например. BlueRay Disk требуется 4 части.   -  person Alex Cohn    schedule 08.01.2014
comment
@ Натаниэль, не могли бы вы описать свою проблему подробнее, потому что вы упомянули о перекодировании. Является ли уменьшение разрешения вариантом для вас?   -  person Dundar    schedule 10.01.2014


Ответы (2)


В x264 есть --tune fastdecode (или -tune fastdecode при использовании ffmpeg), если вы хотите оптимизировать скорость декодирования за счет качества/эффективности сжатия. В libx264 настройка настройки доступна как один из параметров для x264_param_default_preset.

person nobody555    schedule 07.01.2014
comment
Это определенно помогает (увеличивает частоту кадров с 2 кадров в секунду до 9 кадров в секунду), но это все же не то же самое, что и исходное видео, которое воспроизводится со скоростью 30 кадров в секунду. Как-то перекодирование все портит :( - person nbubis; 07.01.2014
comment
Как был закодирован оригинал? Был ли вообще h264? Какое разрешение и нитраты? Возможно, дамп ffmpeg поможет лучше понять изменения. - person Alex Cohn; 07.01.2014
comment
Похоже, -tune fastdecode -tune zerolatency работает! Я приму ответ, но вы можете добавить к нему zerolatency. Ваше здоровье! - person nbubis; 11.01.2014
comment
imho настройка с нулевой задержкой не требует много декодирования. Единственные опции из него, которые могут помочь в декодировании, это --sliced-threads, если ваш декодер не поддерживает потоковую передачу кадров и поэтому нужны независимые слайсы для многопоточного декодирования и --bframes 0, но B-кадры не должны быть намного медленнее, чем P- кадры. - person nobody555; 12.01.2014
comment
@nmxprime Укажите его при использовании x264_param_default_preset(), чтобы получить с ним параметры по умолчанию. Или самостоятельно измените необходимые параметры посмотрев, какие параметры он изменяет в libx264 - person nobody555; 25.01.2014

Я использовал это в прошлом:

-b (чтобы удалить расчеты B-кадра)

-maxrate 8M (Я считаю, что это важно, потому что иногда средние значения имеют большое распределение по битрейту, поэтому, если вы установите 8M в качестве среднего, вы все равно можете найти пики 15M)

-tune fastdecode (уже объяснено выше)

person Sousaplex    schedule 20.03.2018