1.MTS+2.MTS -> 12.MTS (Как склеить несколько MpegTS файлов в один без перекодирования?)

Вопросы, приемы и проблемы обработки видео

Модератор: Модераторы разделов

Аватара пользователя
alkesta
Сообщения: 345
ОС: Fedora

1.MTS+2.MTS -> 12.MTS

Сообщение alkesta »

Пробовал

Код: Выделить всё

cat 1.MTS 2.MTS | mencoder - -oac copy -ovc copy -o 12.MTS

склеился. Звук - нормально. Но видео - первые кадры показывает нормально, а по мере приближения к концу наростают артефакты на изображении.

Как и чем нормально склеить несколько MpegTS файлов в один без перекодирования?
Спасибо сказали:

Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: 1.MTS+2.MTS -> 12.MTS

Сообщение Bluetooth »

Предлагаю avidemux
Спасибо сказали:

Аватара пользователя
alkesta
Сообщения: 345
ОС: Fedora

Re: 1.MTS+2.MTS -> 12.MTS

Сообщение alkesta »

Bluetooth писал(а):
29.11.2010 13:07
Предлагаю avidemux

Я вседа считал, что avidemux это некий анахронизм для работы с avi. По этой причине его даже не пробовал.
А она действительно умеет работать с чем-то отличным от avi? Конкретно с MTS (M2TS)?
Спасибо сказали:

dergachev
Сообщения: 847
ОС: archlinux

Re: 1.MTS+2.MTS -> 12.MTS

Сообщение dergachev »

Скажите, а

Код: Выделить всё

mencoder 1.MTS 2.MTS -oac copy -ovc copy -o 12.MTS
уже отменили? Вроде так обычно лучше получается. Склеивать фильмы командой cat - это, конечно, модно и символизирует, но не всегда то, что нужно.
Спасибо сказали:

Аватара пользователя
alkesta
Сообщения: 345
ОС: Fedora

Re: 1.MTS+2.MTS -> 12.MTS

Сообщение alkesta »

dergachev писал(а):
29.11.2010 21:36
Скажите, а

Код: Выделить всё

mencoder 1.MTS 2.MTS -oac copy -ovc copy -o 12.MTS
уже отменили? Вроде так обычно лучше получается. Склеивать фильмы командой cat - это, конечно, модно и символизирует, но не всегда то, что нужно.

Попробовал.
1.MTS - 27.1 Mb
2.MTS - 86.5 Mb
Получил склеенный файл - 30.3 Mb ужатый ITU H.264
Спасибо сказали:

Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux

Re: 1.MTS+2.MTS -> 12.MTS

Сообщение Rodegast »

> mencoder 1.MTS 2.MTS -oac copy -ovc copy -o 12.MTS

Так на выходе avi будет, а насколько я понял нужен mpeg.

> Как и чем нормально склеить несколько MpegTS файлов в один без перекодирования?

Самое простое что можно попробовать это cat 1.MTS 2.MTS > 12.MTS На MTS не проверял но на Mpeg прекрасно работает.
Спасибо сказали:

Аватара пользователя
alkesta
Сообщения: 345
ОС: Fedora

Re: 1.MTS+2.MTS -> 12.MTS

Сообщение alkesta »

Rodegast писал(а):
29.11.2010 22:40
cat 1.MTS 2.MTS > 12.MTS

Пробовал. Склеенный файл проигрывается только до конца 1.MTS (заголовок 2.MTS мешает).
Спасибо сказали:

Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: 1.MTS+2.MTS -> 12.MTS

Сообщение sspphheerraa »

Код: Выделить всё

mencoder 1.MTS 2.MTS -oac copy -ovc copy -o 12.MTS

Эх, ребята, ребята...
Как уже было отмечено выше, на выходе будет avi, а avi может (и будет) глючить с h.264 потоком при наличии в нем B-кадров (поскольку - MTS, делаю вывод, что это с AVCHD видеокамеры, а в них В-кадры используются), т.к. контейнер avi не "различает" Р и В кадры (с XviD/DivX этого нет, но это уже отдельная тема).
Но в данном случае, дело скорее свего даже не в этом, - я часто сталкивался с тем, что нарезки с AVCHD видеокамеры не всегда начинаются с I-кадра (не могу это объяснить, но такое есть). Соответственно, когда вы клеете этот отрезок в конец другого, получаются артефакты).

Признаться, AVCHD монтировать под линухом очень сложно (да и под оффтопиком в общем-то не просто).
Что можно сделать?
1. Открывать в Avidemux, первый кусок (Avidemux предложит использовать "особый режим" для x264 - не использовать).
2. Далее добавлять (опция Append в меню) последующие куски. Обязательно проверяя тип кадров на стыке - он должен быть "-P-I-", и больше никаким (!). Если другой, - вырезаем кадры так чтобы получить -P-I-.
3. После того как все куски дудут добавлены, выставляем кодеки видео и аудио на 'copy', контейнер обязательно ставим MPEG-TS. Рендерим.

ps По поводу звука, если он - VBR, то возможен плавающий рассинхрон. Способов борьбы нет :(
Sspphheerraa
Спасибо сказали:

Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux

Re: 1.MTS+2.MTS -> 12.MTS

Сообщение Rodegast »

> контейнер avi не "различает" Р и В кадры (с XviD/DivX этого нет, но это уже отдельная тема).

Ну это довольно спорно... У mencoder-а никогда не было проблем с В кадрами в avi ;)

Если не важен контейнер, то можно попробовать его изменить, а затем соединить файлы:

mencoder 1.mkv -oac copy -ovc copy -of lavf -lavfopts format=matroska -o 1.mkv
mencoder 2.mkv -oac copy -ovc copy -of lavf -lavfopts format=matroska -o 2.mkv
mencoder 1.mkv 2.mkv -oac copy -ovc copy -of lavf -lavfopts format=matroska -o 12.mkv
Спасибо сказали:

Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: 1.MTS+2.MTS -> 12.MTS

Сообщение sspphheerraa »


Rodegast писал(а):
02.12.2010 19:12
Ну это довольно спорно... У mencoder-а никогда не было проблем с В кадрами в avi

с каким кодеком? ;)
Rodegast писал(а):
02.12.2010 19:12
mencoder 1.mkv -oac copy -ovc copy -of lavf -lavfopts format=matroska -o 1.mkv
mencoder 2.mkv -oac copy -ovc copy -of lavf -lavfopts format=matroska -o 2.mkv

странные файлы, вы не находите?
Sspphheerraa
Спасибо сказали:

Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux

Re: 1.MTS+2.MTS -> 12.MTS

Сообщение Rodegast »

>с каким кодеком?

С x264 Причём в GOP-е было до 16 В кадров + пирамиды.

> странные файлы, вы не находите?

Хм... действительно в названии ошибся вместо 1.mkv надо 1.mts Но сути это не меняет.
Спасибо сказали:

Аватара пользователя
alkesta
Сообщения: 345
ОС: Fedora

Re: 1.MTS+2.MTS -> 12.MTS

Сообщение alkesta »

Код: Выделить всё

$ mplayer /path/to/1.MTS -identify -ao null -vo null -frames 0 2>/dev/null | grep ^ID_
ID_VIDEO_ID=4113
ID_AUDIO_ID=4352
ID_AUDIO_ID=4608
ID_DEMUXER=mpegts
ID_VIDEO_FORMAT=0x10000005
ID_VIDEO_BITRATE=0
ID_VIDEO_WIDTH=1920
ID_VIDEO_HEIGHT=1088
ID_VIDEO_FPS=25.000
ID_VIDEO_ASPECT=0.0000
ID_AUDIO_FORMAT=8192
ID_AUDIO_BITRATE=0
ID_AUDIO_RATE=0
ID_AUDIO_NCH=0
ID_START_TIME=1.04
ID_LENGTH=0.00
ID_SEEKABLE=1
ID_CHAPTERS=0
ID_VIDEO_CODEC=ffh264vdpau
ID_AUDIO_BITRATE=448000
ID_AUDIO_RATE=48000
ID_AUDIO_NCH=2
ID_AUDIO_CODEC=ffac3
ID_EXIT=EOF

Видео interlaced с камеры Sony
Спасибо сказали:

Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: 1.MTS+2.MTS -> 12.MTS

Сообщение sspphheerraa »

Rodegast писал(а):
02.12.2010 21:11
>с каким кодеком?
С x264 Причём в GOP-е было до 16 В кадров + пирамиды.

По умолчанию использование В кадров отключено (настройки х264 в менкодере), это не просто так. В рассылке как-то тема даже поднималась...
Rodegast писал(а):
02.12.2010 21:11
> странные файлы, вы не находите?

Хм... действительно в названии ошибся вместо 1.mkv надо 1.mts Но сути это не меняет.

да уж, не меняет :) менкодеру пришлось бы читать и писать в один файл
Sspphheerraa
Спасибо сказали:

Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux

Re: 1.MTS+2.MTS -> 12.MTS

Сообщение Rodegast »

> По умолчанию использование В кадров отключено (настройки х264 в менкодере), это не просто так. В рассылке как-то тема даже поднималась...

Насколько я помню В-кадры по умолчанию отключены у всех кодеков. Это из за того что их использование в большинстве случаев не желательно.

> менкодеру пришлось бы читать и писать в один файл

Не... этими командами мы как раз и создаём 1.mkv и 2.mkv. Менкодер просто ругнулся бы на отсутствие файла и всё.
Спасибо сказали:

156
Сообщения: 234
ОС: OPENSUSE ALTLINUX

Re: 1.MTS+2.MTS -> 12.MTS

Сообщение 156 »

Сколько ни искал, не нашёл под линух редактора, который может без перекодировки вырезать рекламу из файлов формата MpegTS , есть мелкие потуги в эту сторону у проекта dvbcut, но как мне показалось, эта утилита может только отрезать кусок с конца или начала файла. В принципе, если найдётся парочка программистов, то эту утилиту можно будет допилить до простейшего редактора, так как в ней уже есть код, который анализирует, разделяет и создаёт MpegTS файлы. Осталось дождаться только, когда у бородатых мега гуру линукса появятся спутниковые тюнеры...
Р.С. Было бы время, сам бы написал...
Спасибо сказали:

Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux

Re: 1.MTS+2.MTS -> 12.MTS

Сообщение Rodegast »

> Сколько ни искал, не нашёл под линух редактора, который может без перекодировки вырезать рекламу из файлов формата MpegTS

В чём проблема? mencoder поддерживает EDL вот это и используй. http://www.mplayerhq.hu/DOCS/HTML/ru/edl.html
Спасибо сказали:

Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: 1.MTS+2.MTS -> 12.MTS

Сообщение sspphheerraa »

156 писал(а):
19.01.2011 11:51
Сколько ни искал, не нашёл под линух редактора, который может без перекодировки вырезать рекламу из файлов формата MpegTS

:blink:
Avidemux ?
Sspphheerraa
Спасибо сказали:

Аватара пользователя
alkesta
Сообщения: 345
ОС: Fedora

Re: 1.MTS+2.MTS -> 12.MTS

Сообщение alkesta »

Rodegast писал(а):
02.12.2010 19:12
Если не важен контейнер, то можно попробовать его изменить, а затем соединить файлы

Решил проблему, слкдующим оборазом:
Исходный файл из камеры Sony:

Код: Выделить всё

$ ffmpeg -i 1.MTS
------------cut--------------
Seems stream 0 codec frame rate differs from container frame rate: 50.00 (50/1) -> 50.00 (50/1)
Input #0, mpegts, from '1.MTS':
  Duration: 00:00:29.67, start: 1.000033, bitrate: 17148 kb/s
  Program 1
    Stream #0.0[0x1011]: Video: h264 (High), yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 50 tbc
    Stream #0.1[0x1100]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
    Stream #0.2[0x1200]: Subtitle: pgssub
At least one output file must be specified

Решeние:

Код: Выделить всё

$ ffmpeg -i 1.MTS -acodec copy -vcodec copy -sn 1.mkv
$ ffmpeg -i 2.MTS -acodec copy -vcodec copy -sn 2.mkv
$ mkvmerge -o 12.mkv 1.mkv + 2.mkv

Атефактов нет, все нормально.

Спасибо сказали: