Недавно попросили перекодировать несколько фильмов для старенькой Nokia 2700. Пришлось искать варианты решения проблемы, чтобы кодировать именно в 3gp, хотя телефон поддерживает и mp4.
Вариант 1. Программа WinFF, которая является графической оболочкой для FFmpeg. Установим ее командой в Терминале:
sudo apt-get install winff
Кнопкой «Добавить» добавляем нужные видео файлы. Далее в выпадающем списке «Преобразовать в:» выбираем Mobile Phones. В «Параметры» я выбрал нужное мне разрешение (176х144). Потом указываем папку для сохранения результата и жмем кнопку «Преобразовать«.
Вариант 2. Будем использовать Терминал и FFmpeg.
Запускаем Терминал в папке с нужным видео файлом или файлами. Выполним команду:
ffmpeg -i input.mp4 -s 176x144 -vcodec h263 -b:v 250k -r 15 -acodec libopencore_amrnb -b:a 12.8k -ar 8000 -ac 1 output.3gp
Данная команда перекодирует исходный файл input.mp4 в output.3gp. Теперь разберем основные опции из команды выше:
-s 176×144 — указываем нужное разрешение файла
-vcodec h263 — используемый видео кодек
-b:v 250k — битрейт видео
-r 15 — устанавливает количество кадров
-acodec libopencore_amrnb — используемый аудио кодек
-b:a 12.8k — битрейт аудио
-ar 8000 — для частоты дискретизации звука
-ac 1 — количество каналов звука
Если нужно обработать файлы в пакетном режиме, т.е. несколько, то можно применить следующий скрипт:
#!/bin/sh
mkdir convert
for f in *.avi *.MOV *.mkv *.mp4 *.mpeg ; #Добавить нужный формат
do
ffmpeg -i "$f" -s 176x144 -c:v h263 -b:v 250k -r 15 -c:a libopencore_amrnb -b:a 12.8k -ar 8000 -ac 1 convert/$f.3gp
done
Данный скрипт перекодирует все файлы в форматах: avi, mov, mp4, mkv, mpeg в нужной папке в формат 3gp. В папке с видео файлами появится директория convert, в которую и сохранится результат конвертирования в 3gp.