Возможно ли объединить видео файлы с помощью `cat`?

18

Интересно, возможно ли объединить видео файлы с помощью catкоманды? Я имею в виду, будет ли результирующий файл воспроизводиться без проблем?

Хамед Момени
источник
1
Ты пробовала?
Мистер Листер
3
Я сделал на самом деле. Но как-то результат не содержал второй файл, хотя размер файла был суммой обоих.
Хамед Момени

Ответы:

21

Да, это возможно. Но не все форматы поддерживают это.

ffmpeg FAQ :

Несколько мультимедийных контейнеров (MPEG-1, MPEG-2 PS, DV) позволяют объединять видеофайлы, просто объединяя их.

При конвертации в форматы RAW у вас также есть высокая вероятность того, что файлы могут быть объединены.

ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg
ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi

Но с помощью catэтого способа создаются промежуточные файлы, в которых нет необходимости. Это лучший подход, чтобы избежать создания этих промежуточных файлов:

ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
ffmpeg -i concat:"intermediate1.mpg|intermediate2.mpg" -c copy intermediate_all.mpg
ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi
Marco
источник
1
Вы все еще не создаете промежуточные файлы во второй версии?
Джон Гауэрс,
6

Есть два вида медиа-файлов

  • поточный

  • не-поточный

Основное различие заключается в том, как два формата файлов встраивают метаинформацию. в неформатируемых форматах метаинформация («заголовок») хранится в определенной позиции в файле, обычно в начале, иногда в конце. Вы не можете просто объединить такие файлы, так как метаинформация из одного из файлов будет находиться в нестандартном месте и поэтому будет игнорироваться.

OTOH, потоковые форматы должны быть в состоянии обрабатывать слушателей, которые начнут воспроизводить файл «где-то посередине». Поэтому эти форматы продолжают пересылать метаинформацию и даже позволяют обновлять ее в файле / потоке. Эти форматы могут быть просто объединены.

umläute
источник
Например, ogg: stackoverflow.com/questions/27980960/…
BlackShift
1

Как сказал BЈовић, в общем, каждый файл имеет свой заголовок. Попробуйте на этом примере из Ubuntu How To's :

mencoder -ovc copy -oac copy video1.avi video2.avi -o completevideos.avi 
RPET
источник
0

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

BЈовић
источник
9
Не совсем правильно. Существуют форматы видео без заголовка, например rawvideo или yuv4mpegpipe, которые выводят необработанные данные. Вот почему вы должны указывать размер кадра при чтении этих форматов, поскольку размер неизвестен из-за отсутствующего заголовка.
Марко
2
Почему же я только что сделал это успешно с DV файлами?
Питикос
1
@Pithikos не знаю. может быть, вы практикуете магию :)
BЈовић