Конвертация видео файлов на сервере
21.08.2009, 22:42Рубрика: other
Пришло время столкнутся с кодированием видео на сервере. Заливается стандартный AVI , и нужно из него получить MP4 (иногда и FLV).
Нормальная, обычная ситуация, только свои проблемы тоже есть. Нет стандартного нормального решения, все что используется, работает не так как хочется. Ко всему этому все советуют в качестве конвертора использовать то ffmpeg, то mencoder, то vlc. Было перепробовано все! И выбор пал все таки на ffmpeg.
С mencoder’ом и vlc были проблемы в некорректном создании контейнера MP4, то еще что то. Особо углубляться в проблемные штуки не хочется, а лучше показать правильное решение.
Самой главной проблемой при работе с ffmpeg то, что нельзя указать только ширину видео. Нужно указывать точно WIDTH x HEIGHT. То есть, чтобы пропорционально найти высоту видео, нужно ее подсчитать.
На помощь пришел shtirlic.com, спасибо ему за это. Вырезано и доработано:
TARGETWIDTH=480
(( TARGETHEIGHT=480 * ${SIZES[1]} / ${SIZES[0]} ))
if [[ $TARGETHEIGHT > 270 ]]
then
TARGETHEIGHT=270
fi
if [[ $(( TARGETWIDTH % 2 )) = 1 ]]
then
(( TARGETWIDTH++ ))
fi
if [[ $(( TARGETHEIGHT % 2 )) = 1 ]]
then
(( TARGETHEIGHT++ ))
fi
SIZE="${TARGETWIDTH}x${TARGETHEIGHT}"
Вот имеем и ширину, и высоту. Далее сам запуск конвертации:
- -threads 8 – eсли процессор мощный, то скорость конвертирования будет быстрее
- -vcodec libx264 – видео кодек для MP4
- -acodec libfaac – аудио кодек для MP4
- -async 1 – главный параметр если вы конвертируете звук 5.1 в стерео. Иначе возможен ассинхрон звука и видео
- -f mp4 – собственно контейнер MP4 (для FLV естественно -f flv)
- указывайте файлы в кавычках, мало ли какие названия могут попасться
Конвертация запущена, и успешно получаем MP4. Но, meta данные хранятся в конце файла, а нужно перенести их в начало, дабы плеер получил всю информацию по файлу и стал воспроизводить его сразу. По этой информации Интернет напичкан статьями. И здесь она тоже будет.
Для этого нам понадобится утилита qt-faststart:
Все. Данные перенесены. Файл готов к просмотру.
Есть конечно утилита MP4Box, но она не захотела работать с файлами от ffmpeg, но зато работала с файлами созданными с помощью mencoder.
Если требуется постоянная конвертация видео, то используйте отдельный сервер для этого. Если нет такой возможности, то не грузите сервер, а перед очередной конвертацией проверяйте наличие ffmpeg в памяти:
then
exit;
fi
Запихиваем все в скрипт файл
if [ ! -z $(ps ax |grep -o "ffmpeg -[i]") ]
then
exit;
fi
if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]
then
exit;
fi
PATH=$1
FILE_AVI=$2
FILE_MP4=$3
cd "$PATH"
SIZES=$( ffmpeg -i "$FILE_AVI" 2>&1 | grep -o "[0-9]\{2,\}x[0-9]\{2,\}[, ]" | tr -d , | cut -d "x" -f1,2 --output-delimiter=" " )
TARGETWIDTH=480
(( TARGETHEIGHT=480 * ${SIZES[1]} / ${SIZES[0]} ))
if [[ $TARGETHEIGHT > 270 ]]
then
TARGETHEIGHT=270
fi
if [[ $(( TARGETWIDTH % 2 )) = 1 ]]
then
(( TARGETWIDTH++ ))
fi
if [[ $(( TARGETHEIGHT % 2 )) = 1 ]]
then
(( TARGETHEIGHT++ ))
fi
SIZE="${TARGETWIDTH}x${TARGETHEIGHT}"
ffmpeg -i "$FILE_AVI" -threads 8 -vcodec libx264 -s $SIZE -b 900k -acodec libfaac -ar 44100 -ab 128k -async 1 -ac 2 -f mp4 "_$FILE_MP4"
qt-faststart "_$FILE_MP4" "$FILE_MP4"
rm "_$FILE_MP4"
и с радостью его запускаем:
/home/cnvrt /home/video test.avi test.mp4
Ссылки по теме:
Нет
- конвертация видео на сервере
- конвертирование видео на сервере
- php конвертация видео
- ffmpeg qt
- видео meta данные
- скрипт конвертации видео в flv
- rjydthnbhjdfnm dbltj
- конвертировать в flv скриптом
- скрипт конвертация видео ffmpeg
- php конвертирование видео
- конвертировать видео в mp4
- Конвертация видео файлов на сервере с помощью ffmpeg
- vlc конвертация
- rjydthnbyu dbltj d flv
- Конвертация видео vlc
- конвертация видео php
- как правильно конвертировать видео файл
- ffmpeg async 2
- конвертация avi в flv на сервере
- ffmpeg libx264
- vlc конвертировать
- php конвертация видео в flv
- конвертировать в mp4
- ffmpeg проблемы при конвертировании mp4
- скрипт конвертации видео на сайте
- Как конвертировать видео из FLV в MP4
- mencoder конвертации видео в FLV
- ffmpeg
- конвертация с помощью vlc
- ffmpeg на сервере
- vlc скрипт конвертации
- php flv конвертирование скрипт
- конвертация видео в ffmpeg
- конвертировать в flv с помощью vlc
- конвертировать avi d flv
- конвертация avi в mp4 ff2
- mp4 для ffmpeg
- Скрипт Конвертации .flv в .mp4 на сервере
- сервер файлов в flv
- конвертация видео из avi в flv на сервере
- скрипт php конвертация видео ffmpeg
- ffmpeg только ширина
- ffmpeg конвертирование видео в mp4
- конвертирование видео mp4 ffmpeg
- Как правильно конвертировать файл с avi в mp4
- Конвертирование в mp4 на сервере
- ПРАВИЛЬНАЯ КОНВЕРТАЦИЯ ВИДЕО ФАЙЛОВ
- конвертировать VLC в AVI
- конвертация видеофайл в mpeg4
- чем конвертировать видеофайл MP4