Какой рейтинг вас больше интересует?
|
Главная /
Каталог блоговCтраница блогера Жизнь на свободе/Записи в блоге |
Жизнь на свободе
Голосов: 1 Адрес блога: http://sovety.blogspot.com/ Добавлен: 2008-02-19 12:40:29 блограйдером Lurk |
|
Автоматические отступы в XML
2009-08-20 14:50:00 (читать в оригинале)Для просмотра какого-нибудь XML часто нужно автоматически его отформатировать (чтобы отступы слева соответствовали вложенности элементов). Особенно это полезно, когда весь исходный XML записан в одну большую строку. Такие файлы — это нечитаемая каша, которую, однако, легко привести в порядок.
Первый способ — используем XSLT
Есть у меня файл с вот таким XSL-преобразованием:<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:param name="indent-increment" select="' '" />
<xsl:template match="*">
<xsl:param name="indent" select="'
'"/>
<xsl:value-of select="$indent"/>
<xsl:copy>
<xsl:copy-of select="@*" />
<xsl:apply-templates>
<xsl:with-param name="indent"
select="concat($indent, $indent-increment)"/>
</xsl:apply-templates>
<xsl:value-of select="$indent"/>
</xsl:copy>
</xsl:template>
<xsl:template match="comment()|processing-instruction()">
<xsl:copy />
</xsl:template>
<!-- WARNING: this is dangerous. Handle with care -->
<xsl:template match="text()[normalize-space(.)='']"/>
</xsl:stylesheet>
Код взял здесь (предложил Николай Григорьев). Там ещё несколько вариантов есть.
В дополнение к XSL-файлу есть у меня ещё и скрипт-однострочник, который это преобразование применяет. Я выполняю XSL с помощью любимого мной
xmlstarlet
. Это программка с интерфейсом командной строки для работы с XML.#!/bin/sh
# указать правильный путь к файлу с преобразованием!
xmlstarlet tr ~/bin/indent-xml.xsl
Пользуюсь этим скриптом так:
$ xmlindent < исходный.xml | view -
И всё, можно читать любой XML с правильными отступами. И подсветкой синтаксиса (
view
— это Vim!). Кроме xmlstarlet
есть и другие XSLT-процессоры. На память приходит xsltproc
и библиотечки для разных языков программирования. Вот, например, однострочник на Python.Второй способ — используем xmllint
В пакете libxml2-utils
есть программка для проверки и форматирования XML — xmllint
. Для форматирования использовать так:$ xmllint --format исходный.xml
Так даже проще.
Третий способ — xmlindent
xmlindent
— отдельная утилита, написанная на чистом Си. Говорят, работает и с задачей справляется.По теме:
Редактирование HTML и XML в Vim (добавил про HTML Entities)
Выделение HTML-тегов, строк и блоков кода в Vim
Vim в терминале: сохранение отступов вставленного текста
Как ускорить или замедлить видеоролик
2009-07-20 23:59:00 (читать в оригинале)Иногда нужно замедлить (растянуть) видеоролик, чтобы он игрался как будто в режиме замедленного воспроизведения, а иногда нужно наоборот, показать «на перемотке» слишком длинный ролик, выбросить часть кадров и ускорить воспроизведение. О том как это сделать — сия заметка.
Изменить частоту кадров в видеопотоке позволяет программа
yuvfps
из пакета mjpegtools
. Как и большинство утилит пакета она принимает и отдаёт видеопоток в формате YUV4MPEG. И ffmpeg
, и mencoder
тоже умеют работать с YUV4MPEG (и умеют читать и писать всякие другие форматы). Я приведу пример использования ffmpeg
.Итак, чтобы ускорить видео, нужно взять исходный файл и посмотреть, какая в нём частота кадров
$ ffmpeg -i normal.ogg
FFmpeg version SVN-r13582, Copyright (c) 2000-2008 Fabrice Bellard, et al.
...
Input #0, ogg, from 'normal.ogg':
Duration: 00:00:10.49, start: 0.000000, bitrate: 150 kb/s
Stream #0.0: Video: theora, yuv420p, 320x240 [PAR 1:1 DAR 4:3], 30.00 tb(r)
Must supply at least one output file
В данном случае исходный файл — 30 кадров в секунду. Затем нужно решить, во сколько раз уменьшить число кадров (исходя из желаемой длительности ролика). Потом берём исходный файл (
normal.ogg
в примере) и преобразовываем его в YUV4MPEG-поток (первый вызов ffmpeg
), после нужно дважды вызвать yuvfps
, первый раз, чтобы изменить число кадров в потоке (yuvfps -s 5:2 -r 1:1
сокращает исходные 2.5 кадра до одного), второй раз, чтобы перезаписать заголовок потока, указав скорость воспроизведения (yuvfps -r 30:1 -c
устанавливает скорость 30 кадров в секунду). В конце опять вызываем ffmpeg
и кодируем в нужный формат (я сохранил в формате Ogg/Theora, чтобы можно было вставлять в веб-странички тэгом <video>
). Всё вместе:$ ffmpeg -i normal.ogg -sameq -f yuv4mpegpipe - | \
yuvfps -s 5:2 -r 1:1 | yuvfps -r 30:1 -c | \
ffmpeg -f yuv4mpegpipe -i - -sameq -y fast.ogg
Аналогично можно увеличить число кадров. Дополнительные кадры интерполируются:
$ ffmpeg -i normal.ogg -sameq -f yuv4mpegpipe - | \
yuvfps -s 1:3 -r 1:1 | yuvfps -r 30:1 -c | \
ffmpeg -f yuv4mpegpipe -i - -sameq -y slow.ogg
В этот раз видео замедляется в 3 раза: на каждую «треть» исходного кадра (
-s 1:3
) создаётся целый кадр (-r 1:1
). Вообще, как легко заметить, в качестве частоты кадров для yuvfps
можно указывать любые дроби в виде числитель:знаменатель.Немного более гладкой интерполяции при увеличении числа кадров вроде бы можно добиться, если использовать yuvmotionfps, но чудес он не делает.
Теперь можно сравнить все три видео. Для просмотра нужен современный браузер с поддержкой тэга
<video/>
.Исходное видео:
Ускоренное в 2.5 раза:
И замедленное в 3 раза:
P.S. В качестве иллюстрации использовал ролик Breitenlee-VESTAS-V-52.
Как ускорить или замедлить видеоролик
2009-07-20 23:59:00 (читать в оригинале)Иногда нужно замедлить (растянуть) видеоролик, чтобы он игрался как будто в режиме замедленного воспроизведения, а иногда нужно наоборот, показать «на перемотке» слишком длинный ролик, выбросить часть кадров и ускорить воспроизведение. О том как это сделать — сия заметка.
Изменить частоту кадров в видеопотоке позволяет программа
yuvfps
из пакета mjpegtools
. Как и большинство утилит пакета она принимает и отдаёт видеопоток в формате YUV4MPEG. И ffmpeg
, и mencoder
тоже умеют работать с YUV4MPEG (и умеют читать и писать всякие другие форматы). Я приведу пример использования ffmpeg
.Итак, чтобы ускорить видео, нужно взять исходный файл и посмотреть, какая в нём частота кадров
$ ffmpeg -i normal.ogg
FFmpeg version SVN-r13582, Copyright (c) 2000-2008 Fabrice Bellard, et al.
...
Input #0, ogg, from 'normal.ogg':
Duration: 00:00:10.49, start: 0.000000, bitrate: 150 kb/s
Stream #0.0: Video: theora, yuv420p, 320x240 [PAR 1:1 DAR 4:3], 30.00 tb(r)
Must supply at least one output file
В данном случае исходный файл — 30 кадров в секунду. Затем нужно решить, во сколько раз уменьшить число кадров (исходя из желаемой длительности ролика). Потом берём исходный файл (
normal.ogg
в примере) и преобразовываем его в YUV4MPEG-поток (первый вызов ffmpeg
), после нужно дважды вызвать yuvfps
, первый раз, чтобы изменить число кадров в потоке (yuvfps -s 5:2 -r 1:1
сокращает исходные 2.5 кадра до одного), второй раз, чтобы перезаписать заголовок потока, указав скорость воспроизведения (yuvfps -r 30:1 -c
устанавливает скорость 30 кадров в секунду). В конце опять вызываем ffmpeg
и кодируем в нужный формат (я сохранил в формате Ogg/Theora, чтобы можно было вставлять в веб-странички тэгом <video>
). Всё вместе:$ ffmpeg -i normal.ogg -sameq -f yuv4mpegpipe - | \
yuvfps -s 5:2 -r 1:1 | yuvfps -r 30:1 -c | \
ffmpeg -f yuv4mpegpipe -i - -sameq -y fast.ogg
Аналогично можно увеличить число кадров. Дополнительные кадры интерполируются:
$ ffmpeg -i normal.ogg -sameq -f yuv4mpegpipe - | \
yuvfps -s 1:3 -r 1:1 | yuvfps -r 30:1 -c | \
ffmpeg -f yuv4mpegpipe -i - -sameq -y slow.ogg
В этот раз видео замедляется в 3 раза: на каждую «треть» исходного кадра (
-s 1:3
) создаётся целый кадр (-r 1:1
). Вообще, как легко заметить, в качестве частоты кадров для yuvfps
можно указывать любые дроби в виде числитель:знаменатель.Немного более гладкой интерполяции при увеличении числа кадров вроде бы можно добиться, если использовать yuvmotionfps, но чудес он не делает.
Теперь можно сравнить все три видео. Для просмотра нужен современный браузер с поддержкой тэга
<video/>
.Исходное видео:
Ускоренное в 2.5 раза:
И замедленное в 3 раза:
P.S. В качестве иллюстрации использовал ролик Breitenlee-VESTAS-V-52.
Вы не поверите — Ubuntu Cola!
2009-07-14 13:03:00 (читать в оригинале)Эта заметка не про линукс. Эта заметка про газированный напиток Ubuntu Cola. Вот он:
Купил вчера в автомате в итальянском университете за 1,80 €. На этикетке спереди значок Fairtrade. Сзади надпись:
Ubuntu. “Я есть, потому что есть мы”. Благодаря программе Fairtrade производители тростникового сахара в Малави и Замбии могут заключать более выгодные контракты и вкладывать средства в социальные, экономические и природоохранные проекты. К тому же, мы возвращаем 15% нашей прибыли в эти страны через программу Ubuntu Africa. Посетите: www.ubuntu-trading.comВот такая кола. Вот такая убунту. Кстати, на вкус оказалась довольно хороша.
Вы не поверите — Ubuntu Cola!
2009-07-14 13:03:00 (читать в оригинале)Эта заметка не про линукс. Эта заметка про газированный напиток Ubuntu Cola. Вот он:
Купил вчера в автомате в итальянском университете за 1,80 €. На этикетке спереди значок Fairtrade. Сзади надпись:
Ubuntu. “Я есть, потому что есть мы”. Благодаря программе Fairtrade производители тростникового сахара в Малави и Замбии могут заключать более выгодные контракты и вкладывать средства в социальные, экономические и природоохранные проекты. К тому же, мы возвращаем 15% нашей прибыли в эти страны через программу Ubuntu Africa. Посетите: www.ubuntu-trading.comВот такая кола. Вот такая убунту. Кстати, на вкус оказалась довольно хороша.
Категория «Бизнес»
Взлеты Топ 5
+1006 |
1094 |
ДеВаЧкА-НеФоРмАлКа |
+989 |
1001 |
White_Rabbit_Pics |
+988 |
1000 |
Смотрим на жизнь сквозь сетку |
+934 |
1101 |
Вадим Гоц |
+928 |
932 |
Блог о подарках и праздниках |
Падения Топ 5
-1 |
10 |
Блог Находчивого Продавца |
-1 |
459 |
alexfox2011 - BLOG.I.UA |
-2 |
3 |
Деньги в интернете |
-5 |
992 |
Allendy.ru - экономический портал |
-6 |
729 |
Натяжные потолки Херсон |
Популярные за сутки
Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.