Чи можливо об'єднати відеофайли за допомогою `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

1
Ви ще не створюєте проміжні файли у другій версії?
Джон

6

Мультимедійні файли є двома видами

  • струменевий

  • нестримний

Основна відмінність полягає в тому, як два формати файлів вбудовують метаінформацію. з форматів, які не є потоковими , метаінформація ("заголовок") зберігається у визначеному положенні у файлі, як правило, на початку, іноді в кінці. Ви не можете просто об'єднати такі файли, оскільки метаінформація з одного з файлів буде знаходитись у нестандартному місці та, таким чином, буде проігнорована.

Ото, потокові формати повинні бути в змозі впоратися слухачами , які будуть почати відтворення файлу «де - то в середині». Тому ці формати продовжують повторно надсилати метаінформацію і навіть дозволяють оновлювати її у файлі / потоці. Ці формати можна просто об'єднати.



1

Як сказав Бович, загалом кожен файл має свій заголовок. Спробуйте з цим прикладом від Ubuntu How To :

mencoder -ovc copy -oac copy video1.avi video2.avi -o completevideos.avi 

0

Ні, це неможливо, тому що кожен відеофайл має заголовок. Для об'єднання відео потрібно скористатися інструментом (наприклад, ffmpeg або mencoder ).


9
Не зовсім коректно. Існують відеоформати без заголовка, наприклад rawvideo або yuv4mpegpipe, які виводять вихідні дані. Ось чому ви повинні надати розмір кадру під час читання цих форматів, оскільки розмір невідомий через відсутність заголовка.
Марко

2
Чому я тоді це успішно зробив із DV-файлами?
Пітікос

1
@Pithikos поняття не маю. можливо ви практикуєте магію :)
BЈовић
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.