Показаны сообщения с ярлыком видео. Показать все сообщения
Показаны сообщения с ярлыком видео. Показать все сообщения

2012-02-29

Ubuntu 12.04 - как-то все расплывчато...

Установил для пробы Ubuntu 12.04 LTS, не релиз, но уже близко. С помощью утилиты dconf-tools поставил сглаживание шрифтов на максимум, но все равно они были не такими четкими, как в предыдущей версии. Хотел было откатиться назад, но тут пришло в голову проверить настройки видеокарты. Обычно я туда никогда не лезу, но вот... Стоило поменять вот это


на это


то есть Auto на 60 Hz, как все стало просто прекрасно. Не так и сложно для карт Nvidia.
Надеюсь, кому-то поможет.

2010-06-28

Видео для android

Устройства на базе Google Android воспроизводят видео определенного формата (mp4). Чтобы сжать кино для просмотра можно использовать ffmpeg, собранный с кодеком x264.

К примеру, такой скрипт в арсенале андроидовода может прижиться. Назовем его android.sh, сделаем исполняемым и положим в какую-нибудь папку, проходящую по данным PATH.



Теперь сжатие файла выполняется командой:
android.sh FileName
или, если нужно выбрать звуковую дорожку
android.sh FileName 1

Пока что мне не попадалось видео, которые бы конвертировались криво. Ура ffmpeg-у.

А как быть с субтитрами?

Единственный плейер, который умеет играть видео с субтитрами (из тех, что мне известны) - mVideoPlayer (даже умеет их сдвигать на указанное кол-во миллисекунд в обе стороны). Единственный тип субтитров, которые он кушает - SRT. Соответственно, в кодировке UTF-8.
Значит, нужно конвертировать субтитры из других форматов. Специальные программы есть в репозитариях, но уже на третьем файле линуксоид подумает: а нельзя ли как-то это автоматизировать? Я искал что-нибудь консольное, и не нашел.
Пришлось, как всегда, брать python в руки. Пока что соорудил конвертировщик ASS в SRT, понадобится другой формат переводить - думаю, и с ним проблем не будет. На выходе отдает файл в исходной кодировке. Вот что получилось на скорую руку (создайте файл подобный предыдущему, например subconv.py)



Теперь файл конвертирую так:
subconv.py -f FileSub.ass
и создается FileSub.srt в той-же папке.
Для конвертирования пачки использую цикл:
for i in *.ass; do subconv.py -f "$i"; done

P.S. Буквально вчера было обновление mVideoPlayer, в котором добавилась поддержка субтитров SSA и ASS. Теперь стало еще легче.

Сборка свежего ffmpeg

Заметка на память. Сборка свежего ffmpeg с кодеком x264. Взято здесь.

sudo apt-get install subversion
mkdir ~/src
cd ~/src
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
sudo apt-get install checkinstall
sudo apt-get install libfaac-dev libfaad-dev libmp3lame-dev \
libtheora-dev libxvidcore-dev libvorbis-dev libogg-dev libdirac-dev \
libopenjpeg-dev libschroedinger-dev libspeex-dev libgsm1-dev yasm \
libopencore-amrnb-dev libopencore-amrwb-dev libdc1394-22-dev
sudo apt-get install git-core
git clone git://git.videolan.org/x264.git
cd x264
./configure
make
sudo checkinstall --fstrans=no --install=yes --pkgname=x264 \
--pkgversion "1:0.svn`date +%Y%m%d`-0.0ubuntu1" --default
sudo ./configure --enable-gpl --enable-nonfree --enable-pthreads \
--enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libtheora \
--enable-libx264 --enable-libxvid --enable-x11grab --enable-libdirac \
--enable-libopenjpeg --enable-libschroedinger --enable-libspeex \
--enable-libgsm --enable-libvorbis --enable-libopencore-amrnb \
--enable-libopencore-amrwb --enable-libdc1394 --enable-version3
sudo make
sudo checkinstall --fstrans=no --install=yes --pkgname=ffmpeg \
--pkgversion "3:0.svn`date +%Y%m%d` -12ubuntu3" --default
P.S. Если процессе сборки ffmpeg пишет так

.../libavcodec.so: undefined reference to `x264_encoder_open_94'
collect2: ld returned 1 exit status
make: *** [ffmpeg_g] Ошибка 1
возможно установлены лишние пакеты:

sudo apt-get purge x264 libx264-dev

2010-06-17

Собрать несколько видеофайлов в один

Используя mencoder, собрать несколько AVI-файлов:
sudo apt-get install mencoder
mencoder 1.avi 2.avi 3.avi -oac copy -ovc copy -o out.avi

Если у нас несколько файлов формата MOV, переведем их сначала в AVI, например, с помощью ffmpeg:
sudo apt-get install ffmpeg
for i in *.MOV; do ffmpeg -i "$i" -vcodec mpeg4 -b 480k -r 23.976 -acodec libmp3lame -ab 96k -sameq -pass 1 ${i%MOV}avi; done


Теперь соберем все AVI в один:
sudo apt-get install transcode-utils
avimerge -o out.avi -i *.avi

2009-09-02

Если FFmpeg при кодировании ругается на нехватку кодеков

На днях решил перекодировать пару видяшек для PSP жены, воспользовавшись ffmpeg, на что последний отреагировал, разведя руками - не знаю, мол, кодека mpeg4.
Стало ясно, что в системе установлен не полный набор кодеков. Чтобы решить эту проблему, делаем так:

Удаляем полностью ffmpeg и обновляем данные репозитариев:
$ sudo apt-get purge ffmpeg
$ sudo apt-get update

Устанавливаем полные библиотеки кодеков, они попросят удалить предыдущие. ОК.
$ sudo apt-get install libavcodec-unstripped-* libavdevice-unstripped-* libavformat-unstripped-* libavutil-unstripped-* libpostproc-unstripped-* libswscale-unstripped-*

Возвращаем ffmpeg:
$ sudo apt-get install ffmpeg

А вот скрипт, чтобы кодировать avi-шки в формат, который переваривает PSP:

#!/bin/bash
[ -d psp ] || mkdir psp
ffmpeg -i "$1" -f psp -s 368x208 -aspect 16:9 -vcodec mpeg4 -b 500k -acodec libfaac -ab 96k -ac 2 "psp/$1.MP4"

В интернетах встречается подобный скрипт, в котором написано "-acodec aac" - не верьте, будет ругаться.

2009-02-04

Кодирование видео: mencoder и поиск совершенства

Продолжая исследовать вопрос кодирования видео никак не могу найти универсальный вариант, чтобы написать скрипт конвертирования для Nokia N810 раз и навсегда. AVI - одним методом, MP4 другим, MKV - вообще третьим. То изображение жужжит как ненастроенный телевизор, то звук не совпадает с видео, то картинка бешено мчится вперед... Хотел все сделать одной командой для mencoder с набором параметров, но в итоге отказался от этого по ряду причин. И вот что решил: кодировать надо с несколько этапов. Для начала раздель видео и звук, и работать с ними отдельно. Потом получившиеся дорожки, а при необходимости и субтитры собирать в один MKV-файл.
Вот что получилось: [файл "~/bin/video2nokia"]

#!/bin/bash

# Получение аудиодорожки. Используется mplayer с опциями
mplayer "$1" -vo null -vc null -ao pcm:fast:file=audio.wav

# Кодирование аудиодорожки в mp3.
lame -V0 -h -b 160 --vbr-new audio.wav audio.mp3

# Кодирование видеодорожки без звука, в два прохода
mencoder -o /dev/null \
-nosound \
-ovc xvid
-xvidencopts vhq=1:bitrate=700:autoaspect:pass=1 -vf pullup,softskip,hqdn3d,scale=-2:240 "$1"
mencoder -o video.avi \
-nosound \
-ovc xvid -xvidencopts vhq=1:bitrate=700:autoaspect:pass=2 -vf pullup,softskip,hqdn3d,scale=-2:240 "$1"

# Слияние в файл MKV-файл
mkvmerge -o $1.mkv --language 0:und --default-track 0:yes -d 0 -A -S video.avi --default-track 0:yes -a 0 -D -S audio.mp3 --track-order 0:0,1:0

# Удаление отработанных файлов
rm audio.wav audio.mp3 video.avi


Итог: работет как надо. Все конвертирую одним скриптом, паример:
video2nokia file.avi

2008-12-09

Кодирование MKV (matroska) для Nokia N810 используя mencoder

Открытия, как обычно, следуют за засадами. Несколько раз сталкивался с проблемами, когда кодировал файлы .mkv. Например, если пытаюсь извлечь видеотрек из .mkv в файл avi - возникает ошибка при воспроизведении, видео идет какимим-то цветными кубиками.
Или рассинхронизируются аудио- и видеопотоки. Или звук становится таким, как будто его эквалайзером загнали на максимум, и страшно жужжит.
Сегодня нашел в сети такой вариант, и вроде бы он нормально отработал. Буду тестировать.

mencoder filein.mkv -o fileout.mkv -of lavf -oac lavc -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:v4mv:vqscal:mpeg_quant -vf scale=-2:240

P.S. Проверил. Хороший метод.

2008-06-18

О конвертировании видео в mencoder

За то время, пока я обживаюсь в linux, в мои руки попадались некоторые портативные устройства, позволяющие смотреть видеофайлы. Для путешествующего каждый день утром и вечером в электричках - актуально. Был коммуникатор с QVGA экраном (320x240) и есть таблетка Nokia N810 (800x480). С каждым из них возникла одна и та же задача: из имеющегося видео сделать клип под экран устройства. Чтож, нет ничего невозможного. Для решения задачи имеем: Ubuntu linux, mencoder, умелые ручки.
Все довольно просто. Чтобы кодировать файл для просмотра с приемлемым качеством на портативном устройстве:
mencoder file_in.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=384:keyint=250 -vf scale=320:240 -o file_out.avi
Здесь вы меняете file_in.avi, file_out.avi, 320:240 на ваши параметры. Качество звука менять не люблю, поэтому "-oac copy" - копирую его как есть.
Для владельцев Nokia N810 - не пытайтесь сделать клип на полное разрешение экрана - видеопроцессор не потянет такую нагрузку. Видео высотой в 240 пикселей для просмотра в дороге - вполне достаточно, поверьте. Кроме того, используйте mplayer для этого устройства, и забудьте проблемы с субтитрами как страшный сон.
Так как лень двигатель прогресса, через некоторое время завелся скрипт
~/bin/mne
который несколько облегчает мне жизнь (если захотите использовать, не забудьте сделать его исполняемым).
Текст скрипта:

#!/bin/bash
if [ $3 ]; then A=`echo "-aid $3"`; else A=""; fi;

case "$2" in

nokia)
[ -d nokia ] || mkdir nokia
echo "ДЛЯ NOKIA N770/800/810 С СОХРАНЕНИЕМ СООТНОШЕНИЯ СТОРОН"
sleep 2
mencoder $1 -mc 0 -oac lavc -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:v4mv:vqscale=2:mpeg_quant -vf scale=-2:240 $A -o nokia/$1
#mencoder $1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=384:keyint=250 -vf scale=-2:240 $A -o nokia/$1

exit 0
;;

*x*)
[ -d scale ] || mkdir scale
echo "$2 БЕЗ СОХРАНЕНИЯ СООТНОШЕНИЯ СТОРОН ОРИГИНАЛА"
sleep 2
W=`echo $2 | awk -Fx '{print($1)}'`
H=`echo $2 | awk -Fx '{print($2)}'`
mencoder $1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=384:keyint=250:abitrate=128 -vf scale=$W:$H $A -o scale/$1
;;

*)
echo "======================================================================================================";
echo "Использование возможно с вариантами:"
echo "filename.avi nokia (для просмотра на Nokia N770/800/810 без тормозов)"
echo "filename.avi 320x240 (жестко по заданным параметрам, их можно изменить в таком-же формате)"
echo "После первого параметра можно добавить второй числовой, обозначающий номер звуковой дорожки, например"
echo "filename.avi nokia 1"
echo "для дублированных фильмов, содержащих оригинальный звук на 1 дорожке,"
echo "который вам нужен. Дорожки нумеруются с 0"
echo "======================================================================================================";
exit 1
;;
esac