STM32 видеоплеер AVI с OSD меню. Оптимизация jpeg декодера на ассемблере
STM32 видеоплеер AVI с OSD меню. Оптимизация jpeg декодера на ассемблере.
В видео демонстрируются анимационные фильмы (на правах лицензии Creative Commons):
“Elephants Dream“: © Сopyright 2006, Blender Foundation /
“Big Buck Bunny“: © Сopyright 2008, Blender Foundation /
“Sintel“: © Copyright 2010, Blender Foundation /
Blender Foundation — некоммерческая организация, занимающаяся разработкой программного пакета трёхмерного моделирования с открытым исходным кодом под названием Blender ().
Требования к формату AVI:
- поток видео mjpeg (motion jpeg), т.е. видеокадры должны быть закодированы jpeg кодеком;
- поток аудио mp3, т.е. звук должен быть закодирован mp3 кодеком.
Для преобразования видеофайла к поддерживаемому плеером формату рекомендуется использовать библиотеку ffmpeg. Например, следующая командная строка преобразует mp4-видео в поддерживаемый плеером формат avi с размером кадра 320х240, частотой 25 кадров в секунду, с качеством кодирования 15:
ffmpeg -i -c:a mp3 -c:v mjpeg -s 320x240 -r 25 -q 15
где:
-i - указание на файл-источник, который вы хотите преобразовать в поддерживаемый плеером формат avi;
- выходной файл с расширением avi, в котором будет сохранен результат преобразования;
-c:a mp3 - указание на то, что “звуковая дорожка“ (аудиопоток) в выходном файле должна быть в формате кодека mp3;
-c:v mjpeg - указание на то, что “видео дорожка“ (видеопоток) в выходном файле должна быть в формате кодека mjpeg (набор картинок, закодированных кодеком jpeg, т.н., motion jpeg);
-s 320x240 - указание на размер видеокадра в выходном файле avi (ширина, высота);
-r 25 - указание на частоту видеокадров в выходном файле avi (кадров в секунду);
-q 15 - указание на качество кодирования файла avi (от 1 (наилучшее) до 31 (наихудшее)). Качество звука можно задать ключом -b, означающим bitrate (скорость потока в бит/с). Например, такой ключ, как, -b:a 128k, задаст для звукового потока скорость в 128 кбит/с, что считается для кодека mp3 начальным уровнем при кодировании музыкальных данных (32-96 кбит/с достаточно для кодирования речи, а от 96 кбит/с и более - музыки низкого качества). Потока в 256 кбит/с достаточно для высокого качества музыки при кодировании mp3. 320 кбит/с - предел для кодека mp3.
При преобразовании видео учитывайте соотношение сторон кадра исходного видео. Например, если исходное видео имело соотношение сторон кадра 16:9, то при использовании дисплея с шириной 320 пикселей, высота выходного кадра должна быть 180 пикселей. Т.е. параметр s для приведенного примера должен быть задан в виде 320х180. Если соотношение сторон исходного кадра 4:3, то при использовании дисплея с шириной 320 пикселей высота выходного кадра должна быть 240 пикселей. Т.е. параметр s для этого примера должен быть задан в виде 320х240. Параметр q определяет качество кодирования и может принимать значения от 1 до 31. С увеличением q качество снижается, а с уменьшением - увеличивается. Этот параметр, естественно, влияет на производительность программного декодера jpeg.
Перечень компонентов:
- плата разработки stm32f401ccu6
- 3.2“ дисплей с тачскрином ILI9341 (подключение по spi)
- аудио-ЦАП pcm5102a
- модуль микро SD-карты
- макетная плата
- провода для макетной платы
- энкодер с кнопкой
- конденсаторы керамические мкФ - 2 шт.
Ссылка на проект (гитхаб):
Контакты автора:
@VadRov
stm32, jpeg stm32, avi stm32, mp3 stm32, video stm32, audio stm32, видео stm32, аудио stm32
#stm32 #jpeg #video