Архив

Публикации с меткой ‘Linux’

Использование NeroAAC для кодирования под Linux

26 февраля 2012 Нет комментариев

Те, кто сталкивался с кодированием видео для он-лайна на своих серверах под Linux наверняка в курсе, что средства FFMPEG для кодирования звука в AAC, а именно библиотека libfaac дает ужасное качество на низких битрейтах. Работа над ней была заброшена несколько лет назад и она не поддерживает профиль HE. Ища выход из сложившейся ситуации оказалось, что все не так плохо и для этих целей можно использовать neroAAC (само собой только для личных целей, читайте лицензию ^_^), который дает потрясающие результаты даже для битрейтов вроде 32кбпс.

1) Качаем последнюю версию отсюда: http://www.nero.com/eng/release-notes-nerodigital-nero-aac-codec.html
2) Находим в архиве linux/neroAacEnc и копируем на сервер
3) Устанавливаем: install –D –m755 linux/neroAacEnc /usr/bin/

Предположим раньше мы кодировали так:
/usr/bin/ffmpeg -i "input.mp4" -pass 1 -vcodec libx264 –vpre hq -f mp4 -b 400k -bt 400k -an "tmp.mp4"
/usr/bin/ffmpeg -i "input.mp4" -pass 2 -vcodec libx264 –vpre hq -f mp4 -b 400k -bt 400k -acodec libfaac -ab 128k -ac 2 -async 1 "tmp2.mp4"
/usr/bin/qt-faststart "tmp2.mp4" "out.mp4"

Теперь это будет выглядеть так:
/usr/bin/ffmpeg -i "input.mp4" -pass 1 -vcodec libx264 –vpre hq -f mp4 -b 400k -bt 400k -an "tmp.mp4"
/usr/bin/ffmpeg -i "input.mp4" -pass 2 -vcodec libx264 –vpre hq -f mp4 -b 400k -bt 400k -an "tmp2.mp4"
/usr/bin/ffmpeg -i "input.mp4" -acodec pcm_s16le -vn "audio1.wav"
/usr/bin/neroAacEnc -br 65536 -2pass -if "audio1.wav" -of "audio1.aac"
/usr/bin/ffmpeg -i "input.mp4" -i "audio1.aac" -acodec copy -vcodec copy -f mp4 "tmp3.mp4"
/usr/bin/qt-faststart "tmp3.mp4" "out.mp4"

Пояснения построчно:
1) Первый проход кодирования видео (без звука)

2) Второй проход кодирования видео (без звука)

3) Вытаскиваем звуковую дорожку из видео в несжатом виде

4) Кодируем звуковую дорожку в AAC-формат

5) Собираем звук и видео в единый файл без перекодирования

6) Переносим метаданные в начало файла

Profit!

Подключение нового второго винчестера в Linux (CentOS). FDISK -> MKFS.EXT3 -> FSTAB

26 апреля 2010 Нет комментариев

В общем, этот текст для чайников. =) Выдали тут на руки новый выделенный сервер. Там стоит второй винчестер, естессно его не отформатировали и не подключили должным образом в систему. Пришлось разбираться самому. В рунете гайда не нашел, юзал английские хелпы. Так что пишу для других страдальцев и для себя, когда ситуация повторится, а я уже все забуду. =)

1) Итак заходим под root (администратором) через SSH на сервер

2) Сначала смотрим свой диск с помощью
>> fdisk –l
Выбираем из списка, что подходит по размеру новому винчестеру и явно не имеет разбивки. Имя у этого диска будет что-то вроде /dev/sda

3) Создаем раздел на диске с помощью fdisk:
>> fdisk /dev/sda
Примерный лог запуска и ваши действия приведены ниже:
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won’t be recoverable.

The number of cylinders for this disk is set to 4865 (вместо этого числа будет любое другое).
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-4865, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-4865, default 4865): 4865

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 83

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Эта процедура создаст один большой раздел на новом диске. Имя у него будет что-то вроде /dev/sda1

4) После вышеприведенной процедуры форматируем раздел в одну из Linux файловых систем. В моем случае я выбрал ext3. Используем для этого следующую команду:
>> /sbin/mkfs.ext3 /dev/sda1

Лог выполнения команды будет вроде такого:

Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
4889248 inodes, 9769520 blocks
488476 blocks (5.00%) reserved for the super user
First data block=0
299 block groups
32768 blocks per group, 32768 fragments per group
16352 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

5) Далее необходимо прикрутить (монтировать, от слова mount) этот диск к какому-нибудь символьному адресу, для доступа из программ и консоли. Например мы хотим что бы данные диска были доступны из папки /hdd2 При этом мы хотим что бы данные были доступны и после перезагрузки компьютера, то бишь всегда.

6) Сначала создаем папку (если она отсутствует)
>> mkdir /hdd2

7) Копируем файлик /etc/fstab сюда /etc/fstab_backup на случай проблем, что бы можно было откатиться:
>> cp /etc/fstab /etc/fstab_backup

8) Открываем для редактирования файлик /etc/fstab и в конце пишем следующую строчку:

/dev/sda1 /hdd2 ext3 defaults 1 1

Там наверняка уже есть что-то похожее для первого диска. Сохраняем файл.

9) Далее проверяем, что все в порядке набрав (и убедившись что нет ошибок):
>> mount –a
и скопировав что-нибудь в папку /hdd2