Кодирование для плавного прямого и обратного воспроизведения видео

есть ли способ кодировать видео так, чтобы прямое и обратное воспроизведение было очень плавным? Возможно ли это в h264?

мое понимание основной структуры кодирования видео заключается в том, что если видео сделано из кадров

f1  f2  f3  f4  f5  f6  f7  f8  f9  f10 ...

, которые кодируются как

i1  d2  d3  d4  d5  i6  d7  d8  d9  d10 ...

здесь

i(k) == f(k), d(k) == f(k) - f(k-1)

ie i - это iframe и d это разница кадров, так что размер видео намного меньше, чем размер всех изображений (кадров) потому что дельты меньше целых кадров. Потом f8, Я поток и декодировать из ближайшего предыдущего iframe i6 и применить дельт.

поэтому/декодирования потокового цена за каркас идти вперед по стоимость объекта iframe. Но возвращаясь назад, можно сделать гораздо больше. Например, если на f6 Я хочу перейти к предыдущему кадру f5, мне нужно декодировать все из предыдущего iframe f1. Есть ли способ кодировать вещи, чтобы это не например, путем дополнительного хранения удобной (и как-то избыточной) информации f6 - f5 ?

Я знаком с ffmpeg и в идеале хотел бы его использовать.

мой вариант использования следующий:

Я потокового видео на мобильный клиент. Видео всегда приостанавливается, и пользователь ищет назад и вперед через ползунок. Отсталых ищу порой замирал, и я верю, что, когда он проходит через кадр и вернуться много и redecode чтобы добраться до предыдущего кадра. Вперед, это нормально.

12
задан Guig
23.05.2023 4:55 Количество просмотров материала 2679
Распечатать страницу

1 ответ

Кажется, что вы хотите использовать ключевой кадр для каждого кадра, чтобы не было прямого сжатия. Если каждый кадр хранится полностью (хотя и в сжатом виде), то стоимость перехода назад и вперед будет одинаковой (за исключением стоимости дополнительного пространства для хранения). M-JPEG это естественно, например.

С помощью H264 можно задать минимальное и максимальное расстояние между ключевыми кадрами (iframes) при использовании ffmpeg:

--keyint <integer> (x264)
-g <integer> (FFmpeg)
Keyframe interval, also known as GOP length. This 
determines the maximum distance between I-frames. 
Very high GOP lengths will result in slightly more 
efficient compression, but will make seeking in the 
video somewhat more difficult. Recommended default: 250 

--min-keyint <integer> (x264)
-keyint_min <integer> (FFmpeg)
Minimum GOP length, the minimum distance between I-frames. 
Recommended default: 25 

Если вы установите оба из них к 1, тогда это должно заставить iframe на кадр, и никакие прогнозирующие или кадры дельты.

2
отвечен Paul 2023-05-24 12:43

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх