Предположим, у меня есть видео продолжительностью 10 минут. И я хочу уменьшить его размер, сделав некоторые части с высоким битрейтом, в то время как другие менее важные части могут быть с низким битрейтом. Для этого я разрезал оригинал на сегменты. Оставив важные части как есть, перекодировав неважные части в более низкое качество.
Итак, существует ли формат видеоконтейнера, который может «склеить» эти разные части вместе в один файл ? При хорошей поддержке в плеерах такой верный mplayer будет проигрывать видео как обычный файл? И стандартизированным / аннотированным / отменяемым способом, чтобы простая команда cli снова распутывала сегменты в отдельные части / файлы?
У меня сложилось впечатление, что Matroska сможет сделать это через главы, где каждый из моих сегментов будет одной главой. (Я где-то читал, что обсуждалось объединение видео без перекодирования). Но когда я читаю фактические документы mkv, кажется, что главы mkv больше похожи на текстовый индекс, указывающий на другой (видео) поток файла .mkv, а не на какой-то низкоуровневый индекс блока данных, который помог бы мне с моей идеей. Так что mkv выглядит как тупик.
Простое редактирование или слияние (которое возможно без потерь, с некоторым ремиксированием) не даст мне разного качества в разных частях видео - верно?
То, что я ищу, - это качество, адаптированное к интересующей области, что- то такое, что форматы изображений, такие как JPEG2000 , предлагают для пространственных областей, только здесь применяется к видео с течением времени.
Любые предложения или идеи?
Принятый ответ предлагает использовать возможности VBR такого формата, как mp4. Пока это работает, пожалуйста, оставьте ответ, если вы знаете другой способ достижения желаемого результата.
Если разница только в битрейте, то любой контейнер, который принимает потоки с переменным битрейтом, будет соответствовать вашим требованиям, например, MP4, MKV и т. д.
Шаг 1 — кодировать ваши сегменты, в идеале с использованием одного и того же кодировщика, с разными битрейтами, при этом все остальные параметры должны быть одинаковыми, например, через ffmpeg ,
ffmpeg -ss 0 -t 5 -i input.mp4 -b:v 1000k seg1.mp4
ffmpeg -ss 5 -t 7 -i input.mp4 -b:v 3000k seg2.mp4
ffmpeg -ss 12 -i input.mp4 -b:v 500k seg3.mp4
Шаг 2 — использовать ffmpeg для объединения закодированных сегментов в режиме копирования с помощью демультиплексора concat.
Подготовьте текстовый файл
file 'seg1.mp4'
file 'seg2.mp4'
file 'seg3.mp4'
а потом
ffmpeg -f concat -i list.txt -c copy joined.mp4
Клипы с разными свойствами, такими как разрешение, также могут быть объединены в один MP4, но совместимость между медиаплеерами сомнительна , и ffmpeg в любом случае не будет делать это надежно в настоящее время.
Advanced Authoring Format (AAF) и некоторые операционные шаблоны MXF (OP-2a, 2b, 3a и 3b) должны поддерживать разные скорости передачи данных. Я говорю «должен», потому что сейчас у меня нет хорошего способа тестирования, и я не знаю ни одной коммерческой системы, которая активно использует эти MXF OP.
Ну, я не могу сказать, что знаю, как это будет сделано; но RED (www.red.com), их формат видео R3D использует процесс дебайера.
У меня RED Epic. Он снимает до 5K 100 FPS.
Когда вы находитесь в полевых условиях и хотите просмотреть видео, скажем, на ноутбуке, пропускная способность несжатого (или близкого к нему), скажем, 3:1 5K огромна.
Итак, RED использует процесс дебайера; где пиксели в основном назначаются шаблону сетки с точки зрения того, как они кодируются и декодируются.
Так что это устраняет необходимость в «прокси»-файлах, файлах, которые недоступны для редактирования, потому что ваша система просто не может воспроизводить файл в реальном времени.
Дебайер имеет 8 уровней. И RED player (а также поддерживающее его программное обеспечение, такое как PPro/After Effects, позволяют воспроизводить на 100%, 50%, 25%, 12,5% и так далее.
Уникальный аспект RED заключается в том, что когда ваш компьютер делает это, он на самом деле не снижает качество, а просто отображает желаемое качество x/100.
Так что, возможно, мой ответ немного отсталый: но, по сути, с файлами RED у вас есть версия 1K, 2K, 3K, 4K, 5K - все они упакованы в 1 файл.
Надеюсь, это, возможно, немного поможет, хотя это и не ответ на фактический вопрос.
исинхронный
исинхронный
Гьян
copyts
. С какой командой вы получаете ошибку?исинхронный
ffmpeg -f concat -i list.txt -c copy joined.mp4
, а в примере команды сегмента только средняя изменена на... -i input.mp4 -vcodec copy seg2.mp4
. Протестировано с ffmpeg 2.8.1, мой Ubuntu avconv еще не знает о concat.Гьян
-avoid_negative_ts make_zero
, но вы, вероятно, получите повтор с предыдущим сегментом.исинхронный
make_zero
это значение для-avoid_negative_ts
переключателя, правильно. Где документы на него?исинхронный
-copyts -start_at_zero
каждой сегментации, больше не было предупреждений DTS о concat, но видео не воспроизводилось правильно.Гьян
исинхронный
исинхронный