Сообщения

Записки айтишника и музыканта



Сообщения



Вновь обновлён код сайта.

Что нового:
- Добавлена возможность создавать до 5-ти дополнительных страниц. Каждая из них может содержать либо ленту сообщений, либо текст/html (была только одна и только с текстом/html).
- Функциональность дополнительных страниц перенесена в index.php (раньше была в additional.php, который теперь удалён, как неиспользуемый).
- Добавлен "Режим для слабовидящих", увеличивающий контрастность и размер текста (по-умолчанию выключен).

Были изменены некоторые css. Для корректного отображения может потребоваться очистка кэша браузера.

В ближайшее время будет проведён отлов багов.


Комментариев нет.


Довольно долго не мог разобраться - почему видео, которое я сделал для телефона с помощью "ffmpeg -vcodec libx264", не играется его штатным плеером. Вроде бы всё в порядке, библиотеки стоят, кодирование проходит нормально, компьютер получившееся видео открывает и играет без проблем.
Вся информация на форумах о подобных проблемах сводилась ко всяким "-movflags faststart", который не для интернет-видео мало полезен.

Итак, задача: сделать видео для смартфона под управлением Android, используя ffmpeg.
Дополнительная задача: разобраться почему видео, закодированное с помощью кодека libx264, не работает.


Тех. инфо:
Дистрибутив: Gentoo
ffmpeg: 3.2.4 ...
x264: 0.0.20160712 USE="10bit interlaced threads" ...
x265: 2.3 USE="10bit 12bit" ...
Смартфон под управлением Android 6.0.1 на процессоре Snapdragon 617.


На решение натолкнуло сообщение об ошибке при попытке сменить профиль на "-vprofile baseline", а так же предупреждение о невозможности сменить pix_fmt на yuv420p с yuv420p10le.

Оказывается, что если собрать x264 с поддержкой 10bit, то 10-битый режим будет доступен не как опция, а как единственно возможный! Профиль в этом случае будет high10, а другие недоступны, ровно как и другие pix_fmt! В этом и была проблема, что мобильный не умеет играть 10-битное видео штатными средствами (возможно vlc или кто еще для android и умеют).

Решений несколько:
  1. Пересобрать x264 без флага USE="-10bit", тогда всё будет воспроизводиться нормально, но если вам потребуется сделать 10-битное - придётся возвращать флаг.
  2. Оставить x264 c USE="10bit", а для телефонного видео использовать другие 264-кодеки, использующие только (по умолчанию) 8-ми битные алгоритмы, например libopenh264 или h264_vaapi (если ваша видеокарта поддерживает).


Пример: ffmpeg -i input.file -f matroska -vcodec libopenh264 -vb 2000k -acodec copy output.file.mkv

или для vaapi: ffmpeg -vaapi_device /dev/dri/renderD128 -i input.file -f matroska -vcodec h264_vaapi -vb 2000k -vf "format=nv12,hwupload" -acodec copy output.file.mkv

Касательно качества. Сложилось впечатление, что при одинаковых битрейтах libx264 всё же выигрывает по качеству картинки у остальных вариантов h264.
Перспективный кодек libx265 (hevc), по качеству выигрывает у h264 несравнимо, однако жмёт ГОРАЗДО медленнее! Разница в скорости сжатия между libopenh264 и libx265 у меня более чем 10-ти кратная!

Пример использования libx265: ffmpeg -i input.file -f matroska -vcodec libx265 -pix_fmt yuv420p -vb 2000k -acodec copy output.file.mkv

PS. В примерах аудиокодек - copy, т.е. оставить без изменений. Стандартным считается aac, хотя телефонами в наши дни поддерживается большинство.


Комментариев нет.


Подбор для соло-гитары.

Эта тема часто звучит за кадром во всех сезонах. Впервые обратил на неё внимание в 3 серии 1-го сезона.

Может быть сделаю видео, а пока - как обычно: ноты с табулатурой и миди к ним.


Комментариев нет.


Переложение для соло-гитары, сделанное на основе дуэтной версии.
Возможно еще будет правиться.

Более всего походит на версию Громина-Кузнецова.

Ноты: Django by John Lewis (guitar scores).pdf
Миди: Django by John Lewis (guitar scores).midi


Комментариев нет.


Встречал на одном форуме ссылку на эту тему в своём старом дневнике, который нынче удалён, по этому делаю репост здесь.

Начиная с ядер 3.10 (если не ошибаюсь) в ядро Linux добавлена возможность использования устройства bcache для хранения данных. По сути bcache является массивом из обычного "блинного" диска, используемого для хранения данных, и твердотельного (SSD), используемого для их кэширования. Скорость работы с данными на таком устройстве оптимизируется за счет скоростного потенциала SSD, при этом его объём равен объёму основного "блинного" диска.
Более подробную информацию можно найти на множестве вики, например тут (на арчевики, как всегда, всё очень хорошо расписано).

Здесь я расскажу о своём опыте установки корневого раздела системы на такой массив.
Сложность заключается в том, что в стандартное ядро gentoo система bcache не включена, однако собрать его с ней нам никто не запрещает. Кроме того массив должен быть инициализирован до того, как дисковые устройства будут смонтированы.
Именно решение этих двух проблем я здесь и опишу.

Во-первых по причине отсутствия bcache в стандартном ядре gentoo нам придется отказаться от обычного установочного диска. Путём проб и ошибок обнаружил, что в установочных дисках от ArchLinux bcache имеется, по этому использовал их. Обычный dualboot от ArchLinux нам подойдёт.
Во-вторых нам понадобится инициализировать массив на ранней стадии загрузки, для чего я воспользовался initramfs.

Последовательность действий:
1. Загружаемся с установочника от ArchLinux.
2. Собираем bcache-tools из Aur (на этой стадии есть подводный камень, об этом чуть позже).
3. Создаём с помощью этого набора утилит массив (/dev/bcacheX). Не забываем отрезать от диска кусок для /boot раздела.
4. Форматируем, монтируем их и устанавливаем Gentoo по хендбуку.
5. Устанавливаем genkernel, т.к. нам понадобится создать валидный initramfs.
6. Дальше редактируем файл /usr/share/genkernel/defaults/linuxrc. В нем перед секцией #Determine root device вставляем следующие команды:

#Init Bcache Devices
for i in /dev/sd*; do
echo $i >/sys/fs/bcache/register_quiet
done

7. Собираем ядро (не забыв про CONFIG_BCACHE=y) и устанавливаем загрузчик (в fstab указываем соответственно /dev/bcacheX как root-устройство).

Приведенный в пункте 6 скрипт перебирает все /dev/sdX устройства и если они маркированы как составная часть массива инициализирует их. Соответственно, если у вас устройства не SATA или имеют другую маркировку - измените эту часть скрипта по своим нуждам. Так же можно не перебирать все устройства, а указать конкретные, именно те, которые вы используете.

После перезагрузки система должна нормально загрузиться с массива.

Пара слов о том самом подводном камне. Последний раз, когда я пытался установить bcache-tools, загрузившись с установочника ArchLinux, мне не хватило свободного места на рамдиске для его компиляции(!). Обходной путь использовал следующий, создал tmpfs достаточно большого размера, на него накатил базовый ArchLinux, chroot-нулся в него, собрал bcache-tools и уже там создал массив.

Еще одно замечание, касающееся rt-ядер: CONFIG_BCACHE=y исключает установку "Processor type and features->Preemption Model" в "Fully Preemptible Kernel (RT)", как максимум доступен режим "Preemptible Kernel (Basic RT)", который не сильно отличается (если вообще отличается) от обычного "Preemptible Kernel (Low-Latency Desktop)". Так что решайте сами, что вам нужнее: повышенная отзывчивость, или скорость обмена данными с диском...

Если на текущий момент эта информация не актуальна, или есть замечания по статье - просьба сообщить.


Комментариев нет.

Предыдущие  "Страница 1⁄3"  Следующие

Создано: maestromony (maestromony@gmail.com)