Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Цифровые технологии » Видео и аудио: обработка и кодирование » CMD/BAT - [решено] Как склеить 1000 файлов через ffmpeg?

Ответить
Настройки темы
CMD/BAT - [решено] Как склеить 1000 файлов через ffmpeg?

Новый участник


Сообщения: 8
Благодарности: 1

Профиль | Отправить PM | Цитировать


Добрый день
Знатоки подскажите пожалуйста как склеить 1000 видео формата mov через ffmpeg на windows(выходной файл хоть mov хоть avi без разницы, главное склеить).
Даны видеофайлы с названием:
1) 34523456735675467_random..mov
2) 54635638356735673_random.mov
.
.
999) 54632542556234634_random.mov

Пробывал такие команды не помогло:


Код: Выделить весь код
 
    1) ffmpeg -f concat -i <(for f in C:/timelaps/fine/*.mov; do echo "file '$f'"; done) -qscale:v 0 all.avi
    Не найден файл
    2) ffmpeg -f concat -i <(for f in C:\timelaps\fine\*.mov; do echo "file '$f'"; done) -qscale:v 0 all.avi
    Не найден файл
    3) ffmpeg -f concat -i <(for f in /timelaps/fine/*.mov; do echo "file '$f'"; done) -qscale:v 0 all.avi
    Не найден файл
    4) ffmpeg -f concat -i <(for f in \timelaps\fine\*.mov; do echo "file '$f'"; done) -qscale:v 0 all.avi
    Не найден файл
    5) ffmpeg -i concat:"\timelaps\fine\*.mov" -c copy video22.mov
    *.mov неизвестная команда
    .
    .
    .
    .
    99


Если ffmpeg не умеет клеить mov файлы, подскажите как пакетно 1000 файлов с разными именами поставить на перекодировку, к примеру в mpg|ts, спасибо

Отправлено: 10:42, 19-06-2017

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
(for /f "usebackq delims=" %i in (`dir /b /a:-d "*.mov"`) do @echo file '%~i') | "%ProgramFiles%\FFmpeg\bin\ffmpeg.exe" -safe 0 -f concat -i - -codec copy "Out\Result.mov"
Не забудьте предварительно создать результирующий каталог Out, либо укажите иное существующее местоположение, отличное от исходного каталога.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:20, 19-06-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 8
Благодарности: 1

Профиль | Отправить PM | Цитировать


Бьет ошибку :

Код: Выделить весь код
[file @ 0000000001f941e0] Protocol 'file' not on whitelist 'crypto'!
[concat @ 00000000009d68a0] Impossible to open '1.mov'
pipe:: Invalid argument
Исправил так:
Код: Выделить весь код
 (for /f "usebackq delims=" %i in (`dir /b /a:-d "*.mov"`) do @echo file '%~i') | "\timelaps\fine\ffmpeg.exe" -safe 0 -protocol_whitelist "file,http,https,tcp,tls,pipe" -f concat -i - -codec copy "\timelaps\fine\Result.mov"
В результате:
Код: Выделить весь код
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000000001f73dc0] Auto-inserting h264_mp4toannexb bitstream filter
Input #0, concat, from 'pipe:':
  Duration: N/A, start: 0.000000, bitrate: 8019 kb/s
    Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 8019 kb/s, 30 fps, 30 tbr, 10k tbn, 20k tbc
    Metadata:
      handler_name    : DataHandler
Output #0, mov, to '\timelaps\fine\Result.mov':
  Metadata:
    encoder         : Lavf57.73.100
    Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 8019 kb/s, 30 fps, 30 tbr, 10k tbn, 10k tbc
    Metadata:
      handler_name    : DataHandler
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000000001f74ec0] Auto-inserting h264_mp4toannexb bitstream filterx
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000000001f74ec0] Auto-inserting h264_mp4toannexb bitstream filterx
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000000001f74ec0] Auto-inserting h264_mp4toannexb bitstream filterx
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000000001f74ec0] Auto-inserting h264_mp4toannexb bitstream filterx
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000000001f74ec0] Auto-inserting h264_mp4toannexb bitstream filterx
frame=120588 fps=1385 q=-1.0 Lsize= 3935471kB time=01:06:59.51 bitrate=8020.7kbits/s speed=46.2x
video:3934229kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.031568%
Создался файл Result.mov который открывается и проигрывается, но вместо видео черный экран (VLC, MPC player)

Отправлено: 12:24, 19-06-2017 | #3


Новый участник


Сообщения: 8
Благодарности: 1

Профиль | Отправить PM | Цитировать


Попробовал еще так тоже не помогло:
Код: Выделить весь код
(for /f "usebackq delims=" %i in (`dir /b /a:-d "*.mov"`) do @echo file '%~i') | "\timelaps\fine\ffmpeg.exe" -safe 0 -protocol_whitelist "file,http,https,tcp,tls,pipe" -f concat -i - -vcodec copy "\timelaps\fine\Result2.mp4"

Код: Выделить весь код
(for /f "usebackq delims=" %i in (`dir /b /a:-d "*.mov"`) do @echo file '%~i') | "\timelaps\fine\ffmpeg.exe" -safe 0 -protocol_whitelist "file,http,https,tcp,tls,pipe" -f concat -i - -vcodec copy -movflags faststart "\timelaps\fine\fine\Result3.mov"
Код: Выделить весь код
(for /f "usebackq delims=" %i in (`dir /b /a:-d "*.mov"`) do @echo file '%~i') | "\timelaps\fine\ffmpeg.exe" -safe 0 -protocol_whitelist "file,http,https,tcp,tls,pipe" -f concat -i - -vcodec copy "\timelaps\fine\fine\Result3.mov"

Отправлено: 12:51, 19-06-2017 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата 90azat:
Создался файл Result.mov который открывается и проигрывается, но вместо видео черный экран (VLC, MPC player) »
Тут я Вам не подскажу. На моих *.mov-файлах — открывается и воспроизводится. Обратитесь в профильный раздел: Видео и аудио: обработка и кодирование или попросите модератора перенести туда всю тему.

Отправлено: 12:59, 19-06-2017 | #5

x0r x0r вне форума

Забанен


Сообщения: 795
Благодарности: 137

Профиль | Цитировать


Так у тя ничего не получится. По каким-то упоротым причинам , кодеры ffmpeg упорно требуют файл-список для этого , в своём формате. Я тоже однажды чуть моск не сломал, пока допёр чего ему не нравиццо. Список такой:
1. имена желательно цифры (счетчик с нуля или другое что, с разделителями, но цифры надёжно канают и чтоб не много было. у тебя много)
2. список для склейки такой (имя любое, нопр. list.lst):
Код: Выделить весь код
file '3_2_01.m4a'
file '3_2_02.m4a'
file '3_2_03.m4a'
file '3_2_04.m4a'
file '3_2_05.m4a'
file '3_2_06.m4a'
file '3_2_07.m4a'
file '3_2_08.m4a'
file '3_2_09.m4a'
file '3_2_10.m4a'
file '3_2_11.m4a'
file '3_2_12.m4a'
file '3_2_13.m4a'
file '3_2_14.m4a'
file '3_2_15.m4a'
file '3_2_16.m4a'
file '3_2_17.m4a'
... ну и т.д.
и потом склеиваешь его коммандой:
Код: Выделить весь код
ffmpeg -f concat -i list.lst -vn -acodec aac -b:a 68k all-files-in-one.m4a
И еще. когда пробовал, заметил что это его -codec copy - не сафсем "copy", ибо что-то оно всё равно делает с потоком. Потому и ошибки , скрипы, "пустые экраны" заместо видео.
Так что лучше всё-таки не copy , а что-нибудь рядом(по формату) с перекодировкой. тогда работает.
Этот его копи, например работает хуже чем во wget -O- >> %filename%.mp4 - при скачивании .m3u8 листов видео с сайтов. При wget -O- >> %filename%.mp4 - все норм, файл работает всегда почти(99,5%).
А вот если скачать все части отдельно в папку, а потом пытаться объединять через ffmpeg -codec copy(части жеж одного файла, там все одинаково 100%) - мусор получается очень часто. Так что это не совсем copy.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:36, 19-06-2017 | #6


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата x0r:
Так у тя ничего не получится. »
x0r, у мя всё уже получилось — если Вы не поняли. Список исходных файлов формируется и передаётся по конвейеру на вход утилиты. С этим проблем нет.

Проблемы могут быть в контейнерах, форматах, потоках, битрейтах и т.п. Вот с этим надо смотреть и разбираться, почему я и порекомендовал обратиться сюда.

Отправлено: 13:43, 19-06-2017 | #7


Новый участник


Сообщения: 8
Благодарности: 1

Профиль | Отправить PM | Цитировать


Проблему решил:
Код: Выделить весь код
(for /f "usebackq delims=" %i in (dir /b /a:-d "*.mov") do @echo file '%~i') | "\timelaps\fine\ffmpeg.exe" -safe 0 -protocol_whitelist "file,http,https,tcp,tls,pipe" -f concat -i - -c:v libx264 -an "\timelaps\fine\fine\Result7.avi"
Добавляем timelaps и наслаждаемся:
Код: Выделить весь код
 (for /f "usebackq delims=" %i in (`dir /b /a:-d "*.mov"`) do @echo file '%~i') | "\timelaps\fine\ffmpeg.exe" -safe 0 -protocol_whitelist "file,http,https,tcp,tls,pipe" -f concat -i - -c:v libx264 -an -filter:v "setpts=0.01*PTS" "\timelaps\fine\fine\Result8.avi"
Осталось ватермарк запилить и в продакшн
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:29, 19-06-2017 | #8


Ветеран


Сообщения: 2581
Благодарности: 245

Профиль | Отправить PM | Цитировать


Iska, Цитата Iska:
Цитата:
-codec copy »
а почему вы пишете копировать кодек? вдруг они разные в файлах? Пусть перекодирует таки в один. Ну и опять же, огрызки могут быть от обрезки не по ключевому фрейму - от этого при склейке копии видео замирает или ломается, замечал.
мож потому у человека и не получалось, что он набирал огрызки из разных видео, сливал их в некую "подборку", лепил свои ватермарки или чего там, и лил на тюбик?


а, блин, уже написали )) я слишком поздно глянул ))

Отправлено: 19:32, 24-06-2017 | #9


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Не понял как этим пользоваться. Поясните, пожалуйста, если софтина лежит в C:\temp\VEXP\pr\ffmpeg.exe, куча mov в C:\temp\VEXP\Video\ а результат нужен сюда C:\temp\VEXP\out

Отправлено: 16:41, 21-02-2019 | #10



Компьютерный форум OSzone.net » Цифровые технологии » Видео и аудио: обработка и кодирование » CMD/BAT - [решено] Как склеить 1000 файлов через ffmpeg?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] MKVMerge и мульон файлов: склеить дорожки из разных папок с пробелами R.i.m.s.k.y. Скриптовые языки администрирования Windows 2 15-06-2013 11:33
Прочее - как направить вывод ffmpeg на экран? pva Общий по Linux 6 01-03-2010 15:10
Не получается склеить 12 файлов в один (формат AVI) rodg08 Видео и аудио: обработка и кодирование 13 23-05-2009 12:58
Как через батник склеить 2 строки в одну? skeletor Хочу все знать 3 15-03-2007 18:47
Как склеить Tarry Видео и аудио: обработка и кодирование 10 28-09-2005 06:18




 
Переход