Я использую последнюю версию ffmpeg (3.2.4) в 64-битной Windows 10.
Мои устройства обычно разделяют файлы, которые они сохраняют на SD-карты, с ограничением размера файла 2G или 4G.
Прежде чем импортировать файлы на мою временную шкалу, было бы очень удобно снова объединить логические файлы в один физический файл. Таким образом, у меня нет «частей», которые нужно хранить вместе, а применение настроек к клипу не требует дублирования всего в сегментах продолжения.
Естественно, кодек и контейнер всегда будут одинаковыми во всех частях.
Сначала я попробовал файлы WAV, полученные с рекордера Zoom H4N. Я попытался:
ffmpeg -i "concat:ste-000.wav|ste-001.wav" -c copy Zoom.wav
и результат снова был только первой частью, без конкатенации. То есть файл был ок. Размером 2 Гб, но не идентично первой части. Не было сообщения об ошибке. Мне не показалось странным, что информация, отображаемая в начале прогона, показывала только первый файл, так как части должны быть идентичными по формату, поэтому нужно только обнюхать один, чтобы узнать.
Последние строки вывода (показаны ниже) показывают, что время мультимедиа такое же, как и в первой части (1:02).
Так что, я думаю, это просто не работает на WAV. Документы , которые я читал , довольно расплывчаты. Но и ошибки никакой нет .
Затем я попробовал это с файлами MOV с камеры Canon.
Опять же, ошибки не было, но в результате был только (приблизительный) размер первого файла, который в этом устройстве составляет 4 ГБ. И время, указанное для выходного файла, около 18 минут, относится только к первому сегменту. Это не объединило их!
Итак, что-то не так или устарело с документацией? Разве это не работает в Windows по какой-то причине (я думаю, что заключение в кавычки должно предотвратить проблему с символами вертикальной черты), потому что во всех случаях кажется, что команда просто игнорируется после первого файла.
Вместо этого я использовал демультиплексор concat , который работал очень хорошо, но не так просто, поскольку я не могу просто назвать файлы в командной строке.
Почему не работает «простая» форма? Более того, почему нет ошибки, но она игнорирует все, кроме первого файла?
[\\ООРТ\Медиа\Видео-работа\2017\Апрель\29 ЕНТ\оригинал]ffmpeg -i "concat:ste-000.wav|ste-001.wav" -c копировать Zoom.wav ffmpeg версии 3.2.4 Copyright (c) 2000-2017 разработчики FFmpeg построен с помощью gcc 6.3.0 (GCC) конфигурация:--disable-static --enable-shared --enable-gpl --enable-version3 --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus - -enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable- libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-zlib--enable-zlib--enable-zlib либавутил 55. 34.101 / 55. 34.101 libavcodec 57.64.101 / 57.64.101 libavformat 57. 56.101 / 57. 56.101 libavdevice 57. 1.100 / 57. 1.100 libavfilter 6.65.100 / 6.65.100 libswscale 4.2.100 / 4.2.100 libswresample 2. 3.100 / 2. 3.100 libpostproc 54. 1.100 / 54. 1.100 Угаданная схема расположения каналов для входного потока #0.0: стерео Введите #0, wav, из 'concat:ste-000.wav|ste-001.wav': Метаданные: encoded_by : ZOOM Handy Recorder H4n дата : 2008-01-01 время создания : 04:46:57 время_ссылка : 1652832000 coding_history : A=PCM,F=96000,W=24,M=стерео,T=ZOOM Handy Recorder H4n Продолжительность: 01:02:06.51, битрейт: 8696 кб/с Поток #0:0: Аудио: pcm_s24le ([1][0][0][0] / 0x0001), 96000 Гц, стерео, s32 (24 бит), 4608 кбит/с Вывод №0, wav, в «Zoom.wav»: Метаданные: Зуд : ZOOM Handy Recorder H4n МКРР : 01 января 2008 г. coding_history : A=PCM,F=96000,W=24,M=стерео,T=ZOOM Handy Recorder H4n время_ссылка : 1652832000 ИСФТ : Лавф57.56.101 Поток #0:0: Аудио: pcm_s24le ([1][0][0][0] / 0x0001), 96000 Гц, стерео (24 бит), 4608 кбит/с Отображение потока: Поток #0:0 -> #0:0 (копировать) Нажмите [q], чтобы остановить, [?] для помощи размер = 2096160 КБ время = 01:02:06,50 битрейт = 4608,0 кбит/с скорость = 15,6x видео: 0 КБ аудио: 2096160 КБ субтитры: 0 КБ другие потоки: 0 КБ глобальные заголовки: 0 КБ накладные расходы мультиплексирования: 0,000007%
[P:\видео-выход]\\ООРТ\Медиа\Видео-работа\2017\Апрель\29 ЕНТ\оригинал [\\ООРТ\Медиа\Видео-работа\2017\Апрель\29 ЕНТ\оригинал]ffmpeg -i "concat:MVI_7945.MOV|MVI_7946.MOV" -c копировать p:MVI_7945-6.MOV ffmpeg версии 3.2.4 Copyright (c) 2000-2017 разработчики FFmpeg построено с ⋯ ⋮ [mov,mp4,m4a,3gp,3g2,mj2 @ 000000000256cae0] Найден дубликат MOOV Atom. Пропустил это Введите #0, mov,mp4,m4a,3gp,3g2,mj2, из 'concat:MVI_7945.MOV|MVI_7946.MOV': Метаданные: время создания : 2017-04-28T20:08:24.000000Z major_brand : qt минорная_версия : 537331968 com.apple.quicktime.make: Canon com.apple.quicktime.модель: Canon EOS 70D com.apple.quicktime.rating.user: 0.000000 com.apple.quicktime.author: Джон Длугош совместимые_бренды: qt CAEP Продолжительность: 00:18:25.10, начало: 0.000000, битрейт: 35549 кбит/с Поток #0:0(eng): Видео: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 29460 кбит/с, 23,98 кадр/с, 23,98 tbr , 24 тыс. ТБ, 48 тыс. ТБ (по умолчанию) Метаданные: время создания : 2017-04-28T20:08:24.000000Z временной код: 22:39:33:15 Поток #0:1(eng): Аудио: pcm_s16le (sowt / 0x74776F73), 48000 Гц, стерео, s16, 1536 кбит/с (по умолчанию) Метаданные: время создания : 2017-04-28T20:08:24.000000Z временной код: 22:39:33:15 Поток #0:2(eng): Данные: нет (tmcd / 0x64636D74), 0 кбит/с (по умолчанию) Метаданные: время создания : 2017-04-28T20:08:24.000000Z временной код: 22:39:33:15 Вывод #0, mov, в 'p:MVI_7945-6.MOV': Метаданные: совместимые_бренды: qt CAEP major_brand : qt минорная_версия : 537331968 com.apple.quicktime.make: Canon com.apple.quicktime.модель: Canon EOS 70D com.apple.quicktime.rating.user: 0.000000 com.apple.quicktime.author: Джон Длугош кодировщик: Lavf57.56.101 Поток #0:0(eng): Видео: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 29460 кбит/с , 23,98 кадров в секунду, 23,98 tbr, 24k tbn, 24k tbc (по умолчанию) Метаданные: время создания : 2017-04-28T20:08:24.000000Z временной код: 22:39:33:15 Поток #0:1(eng): Аудио: pcm_s16le (sowt / 0x74776F73), 48000 Гц, стерео, 1536 кбит/с (по умолчанию) Метаданные: время создания : 2017-04-28T20:08:24.000000Z временной код: 22:39:33:15 Отображение потока: Поток #0:0 -> #0:0 (копировать) Поток #0:1 -> #0:1 (копия) Нажмите [q], чтобы остановить, [?] для помощи кадр = 26496 кадров в секунду = 519 q = -1,0 Lsize = 4181879 КБ время = 00:18:25,08 битрейт = 31000,3 кбит/с скорость = 21,6x видео: 3974174 КБ аудио: 207207 КБ субтитры: 0 КБ другие потоки: 0 КБ глобальные заголовки: 0 КБ накладные расходы мультиплексирования: 0,011905%
Протокол concat — неправильный выбор для большинства форматов файлов. Транспортные потоки, такие как MPEG-TS, являются одним из немногих форматов, которые можно объединять таким образом. Все, что делает этот метод, — это грубое добавление каждого ввода к предыдущему вводу. Таким образом, любой формат, который имеет элемент метаданных, не может быть объединен таким образом, так как метаданные других файлов будут находиться в середине выходного файла и на них не будут ссылаться метаданные в начале файла.
Вместо этого вы должны использовать демультиплексор concat. Создайте текстовый файл, т.е.
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'
а потом
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output
JDługosz
JDługosz