FFMPEG Force Concat пропускает поврежденные файлы - PullRequest
0 голосов
/ 09 апреля 2019

Я сейчас использую:

ffmpeg -safe 0 -f concat -i clipstomerge.txt -vcodec copy -acodec copy mergedclips.mp4

Это объединяет видео из заданного каталога, указанного в clipstomerge.txt.То, что я заметил, - то, что, если есть поврежденный файл, concat потерпит неудачу.

Как заставить concat пропустить поврежденные файлы?

Заранее спасибо.

РЕДАКТИРОВАТЬ: Я пытался перейти по этой ссылке: http://www.ffmpeg -archive.org/Force-concat-to-ignore-corrupt-files-td4664775.html
Но я не мог понять, как вписать его в мой файл bat.Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 10 апреля 2019
@echo off
setlocal

call :validateConcatFile clipstomerge.txt 2048
if errorlevel 1 echo Failed.& exit /b 1

echo Passed.
exit /b

:validateConcatFile  concatFile  acceptableSize
if "%~1" == "" exit /b 2
if "%~2" == "" exit /b 2

rem Check each listed media file.
for /f "usebackq tokens=1,2 delims='" %%A in ("%~1") do (

    rem Check only if leading concat keyword is "file".
    if "%%~A" == "file " (

        rem The file needs to exist.
        if not exist "%%~B" (
            echo "%%~B" not exist.
            exit /b 1
        )

        rem Check byte size.
        for %%C in ("%%~B") do if %%~zC lss %~2 (
            echo "%%~B" size is %%~zC which is less than %~2.
            exit /b 1
        ) else echo "%%~B" size is %%~zC which is ok at %~2.

        rem FFprobe scan.
        ffprobe -i "%~1" > nul 2> nul || (
            echo FFprobe set errorlevel with "%%~B".
            exit /b 1
        )
    )
)
exit /b 0

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

Специальные символы, используемые как экранированные символы и т. Д., Могут вызватьОбнаружение файла не существует.Обработка этих символов отличается трудностью, поэтому она недоступна в этом коде и будет возвращаться путем установки errorlevel.

Другие обнаруженные действия:

  • Для перечисленных файлов Concat необходимо exist для передачи.
  • Перечисленные файлы должны иметь как минимум определенный размер в байт для передачи.
  • Перечисленные файлы должны пройти простое сканирование ffprobe для прохождения.

В примере кода первым аргументом вызываемой метки :validateConcatFile является файл concat, равный clipstomerge.txt, а вторым аргументом является 2048, то есть размер в байтах, приемлемый для передачи.

...