12

Я пытаюсь найти наиболее подходящий формат видео без потерь для видео 1280x720 25fps. Видео имеет 4 минуты. Звук будет 320 кбит / с mp3, это не имеет большого значения. Идеальные условия:

  • Без потерь (может быть без потерь)
  • Контейнер + кодек можно играть на большинстве платформ
  • Контейнер + кодек можно воспроизводить на современных проигрывателях DVD (с поддержкой других форматов, кроме DVD)
  • Размер менее 700 МБ

Это вообще возможно? Уже три дня боролись, без каких-либо удовлетворительных результатов, даже получая файлы 12 ГБ (кажется, много - 3 ГБ / мин).

3 ответа3

19

Лучший фактический, математически без потерь формат, который я знаю, это huffyuv, но он будет генерировать невероятно большие файлы и не будет совместим со многими. Для записи, ffmpeg может сделать это с:

ffmpeg -i input -c:v huffyuv -c:a libmp3lame -b:a 320k output.avi

X264, кодер h.264 с открытым исходным кодом, имеет режим без потерь. Это может происходить внутри контейнера MP4 и должно быть совместимо с большинством аппаратного обеспечения, созданного за последние несколько лет. Первая команда даст быструю скорость кодирования, но большой файл; вторая команда займет намного больше времени, но файл должен быть примерно вдвое меньше быстро закодированного (хотя он все равно будет довольно большим):

ffmpeg -i input -c:v libx264 -crf 0 -preset ultrafast -c:a libmp3lame -b:a 320k output.mp4

ffmpeg -i input -c:v libx264 -crf 0 -preset veryslow -c:a libmp3lame -b:a 320k output.mp4

Если это не дает вам достаточно маленький файл, CRF обычно считается «визуально без потерь»:

ffmpeg -i input -c:v libx264 -crf 18 -preset veryfast -c:a libmp3lame -b:a 320k output.mp4

Как правило, я рекомендую очень быстрый пресет для кодирования с x264, по моему опыту, он предлагает лучший компромисс между скоростью и размером (существует большой спад в размере файла между супербыстрым и очень быстрым, любой медленнее, чем этот, и он более инкрементный). Общий совет заключается в том, чтобы использовать самые медленные пресеты, которые вы можете обработать, пресеты: ультрабыстрые, сверхбыстрые, очень быстрые, быстрые, быстрые, средние, медленные, медленные, очень низкие.

Смотрите здесь для более подробного руководства по кодированию x264.

0

В эти дни мне нравится webm:

ffmpeg -i input.avi -c:v libvpx-vp9 -lossless 1 output.webm

Я читал, что для более быстрого преобразования с многоядерными процессорами рекомендуется использовать на один поток меньше, чем у реальных ядер. Итак, с 8 ядрами вы можете указать 7 потоков, как это:

ffmpeg -i input.avi -c:v libvpx-vp9 -threads 7 -lossless 1 output.webm
-1
# КОНТЕЙНЕР

Для полной совместимости с DVD-плеерами вам необходимо использовать формат MPEG-2, контейнер, ограничения, кодеки. Я предполагаю, что "современные проигрыватели" означают совместимость с "mp4", которая в основном и в основном является проигрывателем файлов mp4 - H.264, MPEG-4, AVC => libx264
читать дальше: https://de.wikipedia.org/wiki/H.264

# ВИДЕО

Посмотрите https://trac.ffmpeg.org/wiki/Encode/H.264, особенно ту часть, где речь идет о "профиле" и "уровне", для совместимости
Использование -profile:v high -level 4.0 должно сделать это

# AUDIO

Избегайте перекодирования аудио-треков с помощью кодеков с потерями - любой формат mp3 с потерями, даже 320 кбит / с.
Вместо этого используйте -c:a copy .

До сих пор это сделало довольно хорошую работу для меня. нет проблем с синхронизацией
Аудиопотоки не привязаны к ключевым кадрам. Возможны точные разрезы.
Если ваша звуковая дорожка записана с частотой дискретизации 44 кГц, используйте макс. 256kbps

Используйте кодеки с потерями только для окончательного кодирования вашего видео, если вам необходимо выполнить определенные предварительные условия.

Я слышал о некоторых проблемах с синхронизацией звука, но похоже, что основная проблема была, это был защищенный материал (!).

# В заключение

Я бы предпочел что-то вроде этого:
ffmpeg -i input -c:v libx264 -crf 5 -preset faster -profile:v high -level 4.0 -c:a copy output.mp4

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .