Кто-нибудь сталкивался с удачным решением проблемы склейки flv в консоли? Безотказным и чтобы всегда работало? Итак, исходные данные.
Задача — отредактировать flv-файл путем вырезания из него кусков. Куски могут быть в начале, конце и середине. Вопрос наложения кусков не обсуждается (т.е. там проблем нет). Идет просчет, какие куски файла оставить, затем ffmpeg-ом выпиливаются нужные куски. Далее надо их склеить в один результирующий. Ffmpeg этого делать не умеет (а вдруг, у кого получилось?)
Варианты решения.
1. mencoder. Плох тем, что результат получается непредсказуемым — куски из середины могут проходить в ускоренном виде. Точно баг не поймал, но похоже, что если они достаточно короткие (до 5-10 секунд), то такое происходит. Первый кусок всегда нормально. Кроме того, mencoder не понимает для склейки кодек nellymoser. Приходится перекодировать в adpcm_swf.
2. Перегон кусков в контейнер avi, а далее простая склейка (cat) в один файл, перегон обратно в flv. Там постоянный баг — у первого куска видео в самом конце застывает на секунду-другую (такое впечатление, что видеодорожка короче, чем аудио, потому она ждет). Может быть, имеются какие-то другие способы консольно склеить avi?
Далее способов пока нет. Могу указать параметры склейки/резки, если нужны. Если еще что-то забыл сказать, спрашивайте.
надо не AVI склеивать cat-ом, а MPEG2 TS
у FFmpeg на сайте есть пример такой склейки
тогда все нормально должно быть
можно еще через пайпы клеить тогда получится без промежуточных файлов
т.е. делаем два пайпа и указываем их в качестве источника несжатого звука и несжатого видео
для первой команды — форматы данных надо указывать явно — размер кадра, цветовой формат, частоту кадров, для звука аналогично
потом другими двумя командами декодируем видео и звук из первого файла в соответствующие пайпы форматы вывода должны совпадать
когда оно съест первый кусок
второй файл сливаем точно также в эти же пайпы
Кому еще потребуется сабж, конкретизирую. Читаем вот тут www.ffmpeg.org/faq.html#SEC27 про то, как склеивать файлы. В частности, надо действительно делать не через avi-файлы, а mpg. Более того, там также есть и пример, как клеить flv файлы (как раз через пайпы) — всего-то 14 строк. Попалось бы мне это на глаза с пару недель назад!
Решал подобную задачу — нужно было склеивать mp4. В итоге я перегонял всё в mpg, слеивал вот так: mencoder -oac copy -ovc copy file1.mpg file2.mpg file3.mpg -o file.mpg
и дальше снова перекодировал в mp4. Была проблема в том, что у меня были разные видео-файлы, которые имели разные битрейды и получались аномалии с быстрым/медленным звуком.
Тут такое не катит. Во-первых, у меня исходный кодек звука nellymoser/speex, а их прямопотоковым копированием mencoder отказывается клеить. Приходится перекодировать. И даже в этом случае возможны звуковые аномалии — видимо, как и у Вас. Причем, самая проблема в том, что я понять не могу, от чего это зависит. Соответственно, каждый раз не знаешь, чего ждать.