[РЕШЕНО] Скрипт для кодирования ускоренного воспроизведения видео

немного не успеваю :(
Это по F2 появляется в меню.
Нужно умереть молодым и сделать это как можно позже.
Как бы разрешение и битрейты не особо важны, все упирается именно в скорость воспроизведения. Как ее увеличить при кодировании?
Нужно умереть молодым и сделать это как можно позже.
Ага, ну параметры кодирования понятны:
-f mp4 -vcodec h264 -s 852x480 -r 25 -vb 500k -acodec aac -ac 2 -ar 44100 -ab 128k

все упирается именно в скорость воспроизведения. Как ее увеличить при кодировании?
Вот этим я никогда не занимался. В теории надо на этапе декодирования изменить частоту кадров, затем при кодировании конвертировать до требуемой, напр. 25 к.с. В принципе, то же касается и звука - sox этим занимается, по сути удаляя лишние сэмплы. Разберемся, только давайте завтра. Время позднее.
Ок. Только я буду вечером.
Нужно умереть молодым и сделать это как можно позже.
Ок, только вечером меня не будет.

Поэкспериментировал я тут... Для достижения требуемого результата, как и предполагалось, достаточно два раза указать частоту кадров: первый - для ускорения входного потока (обязательно перед входным файлом), второй - как обычно, для установки выходного fps. Например:
ffmpeg -r 40 -i 001.flv -f mp4 -vcodec h264 -s 852x480 -r 25 -vb 500k -strict -2 -acodec aac -ac 2 -ar 44100 -ab 128k -y 001.mp4
-r 40 - 25*1.6
-strict -2 - разрешает работу "экспериментальному" aac:
The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it.

add. Хотя нет, звук же тоже надо ускорить! Уберете все, касаемо звука из команды и добавьте -an
Благодарю, Aivar!
Видео кодируется вроде как с нужной скоростью. Если сделать без настроек звука, вот так:
ffmpeg -r 40 -i 001.flv -f mp4 -vcodec h264 -s 852x480 -r 25 -vb 500k -an 001.mp4
то кодирует без звука.
Нужно умереть молодым и сделать это как можно позже.
Благодаря помощи Aivar, получился вот такой скрипт:
#!/bin/sh -e
#============================================================================#
# Конвертация видео в группу файлов (в т.ч. ускоренное воспроизведение       #
# ускорение производится фиксированно в 1.6 раз                              #
#============================================================================#
# (C) Denis Smirnov <mithraen@freesource.info>          http://mithraen.ru/  #
#============================================================================#
IN="$1"
if [ ! -f "$IN" ]; then
    exit -1
fi
IN=$(realpath "$IN")
dir=$(dirname "$IN")
cd "$dir"
# каталог, куда отправляем результат
outdir=${IN%.*}
mkdir -p $outdir
# делаем копию оригинального файла
ln "$IN" $outdir/original
# извлекаем звук (конвертируя сразу же в wav)
ffmpeg -i "$IN" -vn -y $outdir/in.wav
# извлекаем видео
ffmpeg -i "$IN" -an -y -vcodec copy $outdir/in.mkv
# конвертируем видео в ускоренный вариант и сразу конвертируем в lossless H.264
#avconv -i "$outdir"/in.mkv -vf setpts=0.625*PTS -an \
     -vcodec libx264 -pre:v lossless_ultrafast \
    "$outdir"/fast.mkv
ffmpeg -r 40 -i "$outdir"/in.mkv -f mp4 \
     -vcodec h264 -s 852x480 -r 25 -vb 500k \
    "$outdir"/fast.mkv
# конвертируем аудио в ускоренный формат
echo "Audio file converting -- tempo"
sox "$outdir"/in.wav "$outdir"/fast.wav tempo 1.6
# конвертируем ускоренное аудио в mp3
sox "$outdir"/fast.wav "$outdir"/fast.mp3
ffmpeg -i "$outdir"/fast.mkv -i "$outdir"/fast.mp3 -acodec copy -vcodec copy  "$outdir"/out-fast.mkv
Неудобства:
- создается дополнительная папка;
- имя файла должно быть без пробелов;
- выходной файл имеет фиксированное имя out-fast.mkv вместо оригинального имени.
В идеале было бы как-то назначить в меню Midnight Commander, вызываемое по клавише F2. Сейчас стоит такой вариант:
9       Видео для Android
        set %t
        if [ "%d" = "%D" ]; then
        echo "Входная и выходная папки должны быть разными"
        exit 1
        fi
        while [ -n "$1" ]; do
        ext=`basename "$1"`
        ext="${ext##*.}"
        newname=`basename "$1" .$ext`.mp4
        ffmpeg -y -i %d/"$1" -f mp4 -vcodec h264 -s wvga -r 25 -b 500k -strict -2 -acodec aac -ac 2 -ar 44100 -ab 128k %D/"$newname"
        shift
        done
Нужно умереть молодым и сделать это как можно позже.
zalexi
- создается дополнительная папка;
- имя файла должно быть без пробелов;
- выходной файл имеет фиксированное имя out-fast.mkv вместо оригинального имени.
- если файлов много - неплохая, но бесполезная в данной реализации задумка;
- понятное дело: пробелы разделяют параметры, т.е. имя файла из двух слов уже не вписывается в $1;
- ...

Короче, надо переписать скрипт под ваши потребности. Можно выбрать время и заняться.
Aivar
Короче, надо переписать скрипт под ваши потребности. Можно выбрать время и заняться.

Я думаю, что наиболее важным являются параметры кодирования ускоренного звука. Мне и просто командная строка подошла бы, как в самом первом варианте.
Нужно умереть молодым и сделать это как можно позже.
- понятное дело: пробелы разделяют параметры, т.е. имя файла из двух слов уже не вписывается в $1;
Все прекрасно вписывается. только нужно параметр из нескольких слов писать в кавычках...
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
 
Зарегистрироваться или войдите чтобы оставить сообщение.