Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как сжимать видео?

1.8K
15 августа 2005 года
Sanya DLR
123 / / 03.03.2004
Интересуюсь принципами сжатия видео. Или существующими алгоритмами. Хочу сам сжимать (пока из кадров) и сам просматривать.
Дайте пожалуйста хорошую проверенную ссылку, тема наверное большая, чтобы прям здесь объяснять.
Но если не обломно, то тут распишите.
299
15 августа 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by Sanya DLR
Интересуюсь принципами сжатия видео. Или существующими алгоритмами. Хочу сам сжимать (пока из кадров) и сам просматривать.
Дайте пожалуйста хорошую проверенную ссылку, тема наверное большая, чтобы прям здесь объяснять.
Но если не обломно, то тут распишите.


Хочешь заняться работой лабораторий?
Для начала попробуй сжать простую картинку.
Это раз. Потом попробуй создать архиватор. Это два.
И уж потом приступай к видео.
А самый простой способ, это использовать уже готовую ДЛЛ.

279
16 августа 2005 года
bave
456 / / 07.03.2004
У меня есть функция сжатия RLE - там пара багов,
(один я даже знаю какой) - если хочешь взяться
я её выложу - исправишь баги (и себе и мне доброе
дело). - я её писал для сжатия текстур, но легко
покатит и для другого - а смысл я объясню.
1.8K
16 августа 2005 года
Sanya DLR
123 / / 03.03.2004
3D Bob:

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

На лабораторию я не тяну, но КАКИЕ-ТО же алгоритмы (принципы) распространяются свободно, чего я не знаю! (т.н. общеизвестные...) Все равно мне без чужого опыта не обойтись.

ДЛЛ не катит (это принципиально - иная среда выполнения) - тогда лучше уж виндовс медиа плеер, вместо как-нибудь...


bave:

ок. Давай функцию, посмотрим.
Однако... видео сжатие - это сжатие в десятки и сотни раз с потерями... несколько другие принципы, как я понимаю
279
16 августа 2005 года
bave
456 / / 07.03.2004
Дай бог памяти вспомнить что я там наворотил...

unsigned long BAVEPACKER:: compress(
void *pBuffer, //Указатель на область памяти куда
//считан файл (указатель на перый //байт
unsigned long cnt, //число байт (исх. размер)
UINT uCmp) //сжимать/не сжимать
{
unsigned int ms;
if(uCmp == 0) return cnt;
__asm
{
mov ecx,cnt
mov ebx,pBuffer
mov edi,ebx
xor esi,esi
label:
xor eax,eax
mov al,1
mov ah,[ebx]
add esi,2
equel:
mov dl,[ebx+1]
cmp ah,dl
jne n_equel
add ebx,1
add al,1
mov ah,[ebx]
dec ecx
jz exit_proc
jmp equel
n_equel:
dec ecx
add ebx,1
mov BYTE ptr [edi],al
mov BYTE ptr [edi+1],ah
add edi,1
jnz label
exit_proc:
mov ms,esi
}
return ms;
}
--------------------------------------
Вообщем в цикле пробегаем по весму файлу (вернее
сказать по области памяти куда он скопирован)
В аh помещаем первый байт, в dl - следующий и
сравниваем их если их содержимое одинаково al увеливаю на 1, перемешаюсь на следуюший байт - т.е. сравниваю 2-ой и 3-ий если одинаковые тогда снова al+1 и т. д. - короче в al копится число повторений (число одинаковых байт) - потом
записываем в первый байт число повторений, а во
второй само значение байта, в регистре esi -
накапливается новый размер файла..., а pBuffer
уже указывает на сжатые данные...
После выполнения функции можно сделать так:
pPtr = (byte *)malloc(newSize);
memset(pPtr, 0, newSize);
memcpy(pPtr, pBuffer, newSize);
free(pBuffer);
-------------------------------
После этого pPtr - будет указывать на область
памяти содержашей сжатые данные - их можно записать в файл.
------------------------------------------
Недостаток: Я забыл предусмотреть переполнение -
вдруг одинаковое значение байта будет повторяться
больше чем 256 раз (например картинка RGB без альфа канала вся белого цвета) - тогда в al окажется лажа
255
16 августа 2005 года
Dart Bobr
1.4K / / 09.04.2004
Цитата:
Originally posted by Sanya DLR
Интересуюсь принципами сжатия видео. Или существующими алгоритмами. Хочу сам сжимать (пока из кадров) и сам просматривать.
Дайте пожалуйста хорошую проверенную ссылку, тема наверное большая, чтобы прям здесь объяснять.
Но если не обломно, то тут распишите.


Надеюсь это поможет:

1.8K
17 августа 2005 года
Sanya DLR
123 / / 03.03.2004
unsigned long BAVEPACKER:: compress(
void *pBuffer, //Указатель на область памяти куда
//считан файл (указатель на перый //байт
unsigned long cnt, //число байт (исх. размер)
UINT uCmp) //сжимать/не сжимать
{
unsigned int ms;
if(uCmp == 0) return cnt;
__asm
{
mov ecx,cnt
mov ebx,pBuffer
mov edi,ebx
xor esi,esi
label:
xor eax,eax
mov al,1
mov ah,[ebx]
add esi,2
equel:
cmp cx,1 ;последний(или 0 ? )
jz n_equel ; не с чем сравнивать
mov dl,[ebx+1]
cmp ah,dl
jne n_equel
cmp al,255
jz n_equel ; записать и заново
add ebx,1
add al,1
mov ah,[ebx]
dec ecx
jz exit_proc
jmp equel
n_equel:

add ebx,1
mov BYTE ptr [edi],al
mov BYTE ptr [edi+1],ah
add edi,1
dec ecx ; так оно вернее
jnz label
exit_proc:
mov ms,esi
}
return ms;
}

+особая обработка последнего символа
+длинная цепочка - это несколько цепочек
+последняя проверка длины - с багом
А вообще-то, здесь еще нет пропуска цепочек неповторяющихся символов. Я такое делал - сжатие невелико. А если цветов (или градаций) много - вообще почти нет повторов.
279
17 августа 2005 года
bave
456 / / 07.03.2004
ну да сжатие не велико - поэтому я это не стал использовать... до ума доводить стало лень...
------------------------------------------
Но если сжимать видео - то на каждом кадре по чуть чуть и наберётся...
325
18 августа 2005 года
Franky
723 / / 10.08.2005
Лови! Хотел сам заняться - да лень, а доки копятся :)
Здесь форматы: Fli,Anm,Avi и GIF (до полного щастья :)
406
18 августа 2005 года
vitaly2003s
481 / / 27.07.2004
теория : http://compression.graphicon.ru/book/?
1.8K
18 августа 2005 года
Sanya DLR
123 / / 03.03.2004
Всем спасибо!
Если будет еще инфа по видео - давайте.
Если кто-то сам занимался видеоплеером, то поделитесь первыми... хмм... торетическими наработками - это как правило маленький по результату первый шаг, но оччень долгий когда сам разбираешся.
То есть, хотя бы про грабли и велосипеды расскажите.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог