Серверная (www.it-simple.ru)

Конвертация видеоформатов .mts или .m2ts в avi


Транспортный поток (TS, TP, MPEG-TS, или M2TS) является протоколом для передачи аудио и видеоданных, описанным в MPEG2 Часть 1. Цель разработки этого стандарта — мультиплексирование аудио и видеоданных и синхронизация их выхода. Транспортный поток открывает возможности для исправления ошибок транспортных средств, таких как DVB и ATSC.

TS — формат медиаконтейнера который инкапсулирует пакеты элементарных потоков и других данных.

http://ru.wikipedia.org/wiki/MPEG-TS (http://ru.wikipedia.org/wiki/MPEG-TS)

Для пережатия этого транспортного потока в видеоконтейнер (например, в avi) проще всего воспользоваться кроссплатформенной утилитой ffmpeg.

ffmpeg

В линуксе она устанавливается одноимённым пакетом из репозиториев. В последних версиях убунты ffmpeg вытесняется утилитой avconv, сходной по синтаксису и такой же по функциональности. Не забываем также поставить набор дополнительных кодеков, имеющих ограничения на использование (патентные, конечно) в некоторых странах.

apt-get install ffmpeg avconv ubuntu-restricted-extras

В виндузе надо перейти по ссылке и скачать (http://ffmpeg.zeranoe.com/builds/) последнюю сборку утилиты (рекомендую Static версию, она без дополнительных библиотек).

Команда для конвертации:

ffmpeg -i "имя файла.mts" -vcodec libxvid -qscale 1 -acodec libmp3lame -ac 2 -ab 320k "имя файла (xvid).avi"

«имя файла.mts» содержит пробелы, поэтому оно, имя, заключено в кавычки. Расширение MTS приведено в качестве примера и может быть любым. Видео будет пережато с использованием кодека XviD в максимальном качестве. Аудио — кодеком mp3, в стерео с потоком 320 килобит.

Посмотреть список доступных кодеков, библиотек и сокращений можно по команде

ffmpeg -formats

Другие опции ffmpeg можно посмотреть в справочном руководстве (в линухах — man ffmpeg)


Пример команды с расширенными параметрами:

ffmpeg -i "имя файла.mts" -vcodec libxvid -s 848x480 -maxrate 4800k -b 4000k -qmin 3 -qmax 5 -bufsize 4096 -acodec libmp3lame -ac 2 -ab 160k -y "имя файла (xvid).avi"

Пример скрипта (.bat-файла для Windows), который будет конвертировать все файлы с расширением .mts в текущем каталоге:

for %%a in ("*.mts") do ffmpeg.exe -i "%%a" -vcodec libxvid -qscale 1 -acodec libmp3lame -ac 2 -ab 320k "%%~na (xvid).avi"
pause

avconv

Как уже было сказано, в убунте avconv вытесняет ffmpeg, и последний не рекомендуется к использованию. Синтаксис во многом сходен, но есть альтернативный вариант написания правил, который лично мне кажется логичнее и нравится больше. Пример одной и той же команды:

avconv -i "имя файла.mts" -vcodec mpeg4 -s 640x360 -r 25 -q 2 -acodec copy "имя файла.avi"
avconv -i "имя файла.mts" -c:v mpeg4 -s 640x360 -r 25 -q 2 -c:a copy "имя файла.avi"

Посмотреть список доступных кодеков:

avconv -codecs

По аналогии можно посмотреть список доступных форматов (-formats), фильтров (-filters), протоколов (-protocols) и т.д. (man avconv).


Если нужно преобразовывать множество .mts-файлов в один и тот же выходной формат, пишем скрипт

#!/bin/bash
avconv -i ${1} -c:v mpeg4 -s 640x360 -r 25 -q 2 -c:a copy ${1}.avi

Называем его, например, mts2avi-640x360, делаем исполняемым и помещаем в каталог /usr/local/sbin/.
После этого станет возможен запуск из любого места:

mts2avi-640x360 имя-файла.mts

В результате работы скрипта рядом с имя-файла.mts появится отконвертированный имя-файла.mts.avi.