3gp - стандартный контейнер видео для современных мобильных телефонов.

Для справки: контейнер - это файл-хранилище, в котором может быть несколько разных типов данных. Например, avi - это контейнер, в котором может храниться один файл видео и несколько дорожек аудио. mkv (матроска видео) - более навороченный контейнер, в котором и видео, и аудиодорожек может быть несколько. Плюс он может содержать файлы с субтитрами.

Контейнер 3gp использует кодек H.263 (h263) для сжатия видео и AMR для сжатия аудио.

В убунте есть две проблемы:

  1. файлы в формате 3gp проигрываются без звука
  2. в комплектации «из коробки» нельзя перекодировать видео в формат 3gp для проигрывания его на мобильном

Кодирование видеофайлов в 3gp

Подключаем репозиторий debian-multimedia, ставим ключ от него и обновляем пакет ffmpeg:

sudo -s
echo deb http://www.debian-multimedia.org stable main > /etc/apt/sources.list.d/codecs.list
apt-get update
apt-get install debian-multimedia-keyring
apt-get update
apt-get install ffmpeg
exit

Теперь для того, чтобы перекодировать любой файл для проигрывания его на телефоне, достаточно сделать в консоли:

ffmpeg -i $file_in -b 200Kb -r 15 -s qcif -ac 1 -ab 12.2k -ar 8000 $file_out

Здесь:

$file_inИмя входящего файла видео —что конвертируем
$file_outИмя выходящего файла видео — куда сохраняем результат
-b 200KbЗадаём поток данных для видео в 200 килобит в секунду
-r 15Частота кадров — 15 штук в секунду
-s qcifРазмер кадра, должен соответствовать экрану телефона. qcif(176x144) / cif(352x288)
-ac 1Звук - одноканальный
-ab 12.2kПоток данных для звука — 12.2 килобита в секунду
-ar 8000Частота звука — 8 килогерц

Мы ленивые, поэтому пишем сверхпростой скрипт:

all23gp.sh

#!/bin/bash

ffmpeg -i "$1" -b 200Kb -r 15 -s qcif -ac 1 -ab 12.2k -ar 8000 "$1.3gp"

Ставим права на выполнение

chmod +x ./all23gp.sh

и помещаем куда-нибудь, откуда удобно будет запускать. При запуске передаём параметром имя файла для конвертации.

Проигрывание файлов 3gp

К сожалению, от всех описаных манипуляций звук в плеере не появится. Тем не менее, посмотреть 3gp-файл со звуком можно набрав в консоли:

ffplay /путь/к/файлу.3gp