Склеить ts файлы в один linux

Добавил пользователь Дмитрий К.
Обновлено: 05.10.2024

В этой статье я расскажу вам о том, как можно вырезать фрагмент из видео, склеить видео из фрагментов (частей), извлечь звук из видеозаписи и всё это делается буквально одной строчкой кода. Для этого мы будем использовать "программу" FFmpeg. И да - всё это очень просто и бесплатно. Ссылки на программу и рабочий пример будут в конце статьи.

Почему такая длинная статья и зачем всё это надо

Статья длинная потому что все объяснено очень подробно. Можно читать быстро и "между строк". Можно даже и не читать, а просто скачать пример и если возникнут вопросы смотреть статью.

Зачем это надо. Я показал основные операции с видео - это уже полезная информация.

Я показал операции в "цикле". Мы разрезаем видеофайл на фрагменты, разбиваем фрагмент покадрово, вырезаем звук. А потом всё обратно собираем. И вуаля - исходное видео.

Зачем мы это делаем? Дело в том, что теперь мы можем работать с изображениями. И некоторые нейросети это тоже могут. Итого после разбивки видео на кадры мы можем их изменить, обработать нейросетью, а потом заново собрать и получить интересный результат. И в следующей статье я это покажу. Итого: полезная и подробная информация о работе с FFmpeg и интересное применение данной программы.

Сразу к делу

Сначала я хотел написать вводную часть с кратким пояснением, что такое FFmpeg, преимущества данной программы и недостатки. Но кому это надо, когда есть Википедия? Поэтому скажу кратко и по существу - FFmpeg это программа, которая позволяет делать с видео почти что угодно. Программа не имеет графического интерфейса - работа идет из командной строки. Но намного удобнее создать cmd файлы, что мы и будем делать.

Итого наш краткий план действий.

2) Создать cmd файл с 1-2 строчками кода.

3) Запустить cmd файл и получить результат. Всё.

А можно ничего и не делать. Ведь я уже всё сделал за вас. Качаем мой архив "Пример", распаковываем (ссылка есть внизу статьи). Там всё уже есть. И FFmpeg и cmd файлы. А статью читаем в качестве пояснения. Для новичка так будет проще. Обратите внимание, мой пример работает для Windows x64.

Скачиваем FFmpeg

Первое, что нам нужно - это скачать FFmpeg. Ссылка есть в конце статьи (а можно и загуглить). Идем на официальный сайт, выбираем (если вдруг не выбралось автоматически) версию (Version - для начала можно любую), архитектуру (скорее всего у вас Windows x64), выбираем компоновку (Linking - Static) и нажимаем Download Build.

Здравствуйте! Если Вы снимаете видео на современные видео камеры или фото камеры, то обращали внимание, что камера разбивает длинные видео файлы на фрагменты по 2 или 4 ГБ. Это связано с ограничением файловой системы FAT32 на размер файлов. Если Вы любитель и снимаете видео для семейного архива, то Вам это, вероятно, неудобно – хотелось бы получить один видео файл и не связываться с видео редакторами, не тратить время на обработку.

Что делать и любителю, и профессионалу с такими файлами (файлы с расширением ts или mts)?

Краткое содержание: как добавить вторую звуковую дорожку в видео; как удалить определенную звуковую дорожку из видео; как склеить два видеофайла; восстановить индекс; изменить пропорции AVI видео; убрать черные поля; изменить разрешение видео; изменить формат видео без пересжатия и другие

Как добавить вторую звуковую дорожку в видеофайл:

Но, в этом случае, разумеется, mencoder не добавит еще одну звуковую дорожку, а лишь перезапишет существующую. Это будет полезно, если вам надо лишь добавить звук к "немому" видео.

Больше никаких вариантов я не нашел, но вдруг наткнулся на утилиту mmg (mkvmerge) из набора утилит mkvtoolnix. Mmg - графический вариант, mkvmerge - консольный. Это - замечательная утилита для редактирования видеофайлов, которая может сохранять их в формат MKV (без пересжатия, разумеется). Я точно не знаю, какие видеоформаты она поддерживает, но кроме родного MKV, она отлично открывает AVI.
Таким образом, открываете в mmg видеофайл (кнопка Добавить) и добавляете звук (этой же кнопкой). Внизу выбираете имя для выходного файла и жмете "Начать мультиплексирование".
Процесс, обычно, занимает от нескольких секунд до нескольких минут.

Как оставить определенную звуковую дорожку в видеофайле (как удалить лишние звуковые дорожки)

Например, у вас имеется видео в формате AVI с двумя звуковыми дорожками - одна на русском, вторая - на китайском. Дорожка на русском вам, конечно, не нужна и вы хотите ее удалить, облегчив тем самым размер файла. Открываете видео в уже упомянутой выше утилите mmg и в списке "Дорожки, главы и теги" снимаете галки с лишних звуковых дорожек, оставляя одну нужную. Сохраняете видео и вуаля! - появляется видеофайл в формате MKV с только нужной звуковой дорожкой.

Разрезать AVI видеофайл на несколько частей

Для этого можно воспользоваться утилитой avisplit из пакета transcode: Опция -s 100 означает, что видео будет разрезано на куски, размером 100МБ.

Как Склеить два видеофайла:

Еще один способ сделать один видеофайл из двух:

Восстановить индекс (если не работает перемотка):

Для переопределения пропорций в видео, используйте опцию -force-avi-aspect:

Обрезать границы видео (убрать черные поля)

Если вы создаете dvdrip и вам нужно убрать черные поля у видео, вы можете использовать фильтр cropdetect для автоопределения. Запускаете mplayer из терминала таким образом: и перематываете видео, хотя бы до середины, с помощью стрелок. Вы увидите в выводе терминала нечто подобное: Теперь, указав эти цифры фильтру crop, вы сможете обрезать картинку видео до указанных границ. Но, чтобы быть уверенным, вы можете, сперва, проверить корректность: Mplayer отрисует прямоугольник на видео и вы сможете увидеть, корректно ли фильтр cropdetect определил границы черных рамок. После этого, можете обрезать видео, использовав фильтр crop для mencoder:

Изменить размеры (разрешение) видео

Иногда, вам может понадобиться изменить разрешение у видео. Сделать это можно с помощью mencoder и видео фильтра scale. Вы можете указать размеры полностью (-vf scale=420:260), в этом случае будьте осторожны с сохранением пропорций, а можете указать лишь одно значение scale растянет другое пропорционально. (-vf scale=420:-2)

Изменить формат видео файла без перекодирования

Сменить формат файла (контейнер) без пересжатия, например AVI на MKV, можно так:

Как повернуть видео на 90 градусов

Задать аудио кодек при кодировании видео

Делается это аналагично настройкам видео кодека - с помощью -lavcopts (если вы используете libavcodec): Аудио кодек задается параметром acodec, битрейт для аудио задается параметром abitrate. Для MP3 используйте acodec=libmp3lame

Указать настройки сжатия аудио кодеку MP3

Сделать это можно с помощью опции -lameopts q=5 указывает желаемое качество по десятибальной шкале (от 0 до 9)

Получить звук из видеофайла:

Заметьте, расширение .mp3 ничего не дает - звук будет в том формате, в котором он был в самом видеофайле.

Еще один способ извлечь аудио из видеофайла:

В этом случае звук будет в несжатом PCM формате и его необходимо будет сжать (MP3 или Vorbis), прежде чем добавлять к видео, т.к. размер файла будет довольно большой.

Хитрый способ вырезать звук из видео:

Хотя тут используются сразу две команды, этот способ может работать быстрее, если вам надо получить звук в несжатом PCM формате. К примеру, вы хотите вырезать звук из видео, причем он должен быть в формате PCM, чтобы его можно было сконвертировать в Vorbis с помощью oggenc. Способ с -dumpaudio скорее всего не подойдет, т.к. с этим способом звук будет в том же формате, в котором он был в видео, а нам нужен PCM. С помощью способа с -ao pcm:fast:file=sound.wav звуковая дорожка будет вырезаться из видео очень долгое время, особенно если это видео в высоком качестве. Тогда вы можете сначала скопировать звуковую дорожку в отдельный файл, а потом сконвертировать ее в PCM с помощью того же mplayer-а. Хитрость заключается в том, что вторая команда выполняется во много раз быстрее, если обрабатывается не видео а аудио файл.

Как извлечь определенную звуковую дорожку из видеофайла:

Все так же, как в предыдущих двух примерах, только надо указать mplayer-у номер звуковой дорожки. Получить список звуковых и видео дорожек можно, начав проигрывать видео в mplayer в терминале. Вы увидите нечто подобное: "nameofaudio1" - имя первой звуковой дорожки. -aid 0 - идентификатор. Если вы хотите сохранить вторую звуковую дорожку в файл, команда будет такой:

Сжать звук кодеком Vorbis:

Как удалить звук из видео

Если вы не нашли в этом списке ответа на ваш вопрос, оставьте его в комментариях, только попытайтесь сформулировать вопрос максимально точно. Спасибо.

Возможно, эти материалы Вас заинтересуют:

Комментарии:(68)

Здравствуйте. Для добавления дополнительной звуковой дорожки Вы используете кнопку "Добавить" или "Присоединить"? Нужно использовать "Добавить". После добавления нужно просто начать мультиплексирование и все будет Ок. Попробуйте добавить звуковые дорожки без субтитров по отдельности - сначала одну, потом другую. Кстати, попробуйте другой видеоплеер, возможно, в нем проблема. Попробуйте воспроизвести в mplayer в терминале. Mplayer вначале напишет обнаруженные дорожки, вроде этого:
Воспроизведение video.mkv.
Обнаружен libavformat формат файла!

Если он увидит несколько звуковых дорожек, конкретную можно воспроизвести опцией -aid:

Здравствуйте. Подскажите, пожалуйста, чем и как на ubuntu 10.04 извлечь аудио из видео-файла формата flv в графическом режиме. Спасибо.

Роман: это можно сделать программой Avidemux. Открываете в ней видео, Audio -> Save и сохраняете имя-файла.mp3

Увы, не получается. Файл сохраняется как mp3, но никак не воспроизводится, плеер выдаёт какую-то ошибку.

Возможно, дело в том, что при таком способе сохранения звуковой дорожки, она сохраняется в том же виде, в каком она была в видеофайле, т.е. без перекодирования. Например, вы сохраните файл с расширением *.mp3, но звук в нем будет в WAV или любом другом. Возможно, ваш плеер просто не умеет проигрывать файлы такого типа. Попробуйте открыть этот файл аудиоконвертером и конвертировать его в МР3.

Подскажите пожалуйста, как с помощью avisplit разрезать видеофайл в нужных местах по времени воспроизведения ?

SergaNT404:
К примеру, вам надо разрезать видео на 3 части. Первая часть с 1й по 2ю минуты (т.е. с 00:00:00 по 00:01:00), вторая с 1й минуты по 2ю, третья - с 2й минуты по 3ю. В таком случае команда будет выглядеть так:

Пожалуйста извините, но в Линуксе научилась делать только семплы пока, хочется научиться и другому. Столкнулась с такой проблемой. Уважаю только хорошее качество, но оно естественно очень много весит, поэтому может поможете. Как уменьшить размер видео файла в формате mkw путем изменения размеров картинки видео (в моем случае 1448 x 1080) на поменьше??

video.mkv будет сжато кодеком xvid с опциями наилучшего сжатия, битрейтом 1500, разрешение видео будет изменено и файл будет сохранен в out.mkv. -vf scale=-2:576 "-2" означает, что ширина видео будет изменена пропорционально высоте. Еще проще можно это сделать утилитой ffmpeg2theora:

Видео будет сжато кодеком Theora с качеством 7, аудио будет сжато кодеком Vorbis с дефолтными настройками. Высота видео будет изменена до 720, ширина будет изменена пропорционально высоте. 7 - высокое качество, поэтому можете сжать и с качеством 6. Тут все зависит от самого видео.

Ооо, спасибо, не ожидала так сразу получить ответ. Незамедлительно буду пробовать. О результатах отпишусь. Знаю будут еще вопросы. Заранее прошу прощения, я еще булочка (:

Здравствуйте!

Регулярно возникает задача из большого набора файлов 3GP получить один AVI для просмотра на бытовом DVD-плеере. Каким набором команд это проще сделать без "заморочек" и тонких настроек?

smalish, на 100% я не уверен. но скорее всего подойдет такой способ:

mencoder -ovc xvid -oac mp3lame -lameopts cbr:br=160 -srate 44100 -xvidencopts bitrate=2000:chroma_opt:vhq=4:bvhq=1:quant_type=mpeg -forceidx -o out.avi *.3gp

Эта команда из всех 3gp файлов, находящихся в текущей директории, сделает один файл out.avi с кодеком xvid. Xvid поддерживается всеми бытовыми DVD плеерами. Лишь два уточнения: все 3gp файлы должны быть одинакового разрешения и битрейт ("bitrate=2000") возможно придется увеличить, если качество будет недостаточное. Чем выше разрешение видео, тем больше нужен битрейт.

Здравствуйте!
Я хочу просто сменить контейнер с mp4 в mkv. Я пытался сделать так же как и в пункте страницы, но получается только это:


И создается пустой файл 1.mkv
Что делать? Пробовал извлечь аудио дорожку из видео, извлек, но вот удалить из видео потом не смог. Он создал целевой файл, длительностью 2 сек. Вот:

Видеокамеры, DSLR видео, съемка, монтаж видео Sony Vegas, кодирование, перекодирование, конвертирование, авторинг дисков DVD-video и Blu-ray, онлайн, h264, avc, mpeg2 и прочие вопросы связанные с фиксацией и сохранением для потомков наших достижений в движущихся картинках.

Модератор: Valery







Решено: как соединить, объединить или склеить TS файлы

Чтобы соединить несколько TS файлов в один большой не нужны никакие программы склейки и конвертации.
Файлы нужно поместить в одну папку, в ней же текстовым редактором создать файл joined_ts_files-vodkomoto.bat со следующим содержимым:

Запускаем joined_ts_files-vodkomoto.bat и начинается процесс присоединения - через несколько секунд (минут)имеем один общий файл, с названием joined_files.ts Создаем скрипт open_ts.avs с содержимым:

Полусамопал: пластик + фанера = "Adrenaline" 5,6х2,1. По суше: велосипед и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.

Читайте также: