14

Я использую ffmpeg внутри моего приложения .net, чтобы объединить (объединить) несколько коротких видео с одинаковыми размерами кодировки, ширины и высоты. Я создал текстовый файл, как сказано в документации, и это мой текст:

concatTextDirectory - это каталог моего текстового файла.

file 'C:\Users\mtst\Desktop\Clips\keep\a1.mp4'
file 'C:\Users\mtst\Desktop\Clips\keep\a2.mp4'
file 'C:\Users\mtst\Desktop\Clips\keep\a3.mp4'
file 'C:\Users\mtst\Desktop\Clips\keep\a4.mp4'
file 'C:\Users\mtst\Desktop\Clips\keep\a5.mp4'

И это часть аргумента ffmpeg:

ffmpeg.StartInfo.Arguments = "/c ffmpeg.exe -f concat -i " + concatTextDirectory + " -c copy " + videoOut + " -y -report";

но это не имеет никакого результата и ниже отчет

ffmpeg запущен 2016-04-25 в 19:02:30 Сообщение написано
Командная строка "ffmpeg-20160425-190230.log": ffmpeg.exe -f concat -i
Копия «C:\Users\mtst\Desktop\Clips\keep\keep.txt» -c
"C:\Users\mtst\Desktop\Clips\keep\keep.mp4" -y -report ffmpeg
версия N-79546-g13406b6 Copyright (c) 2000-2016 FFmpeg
разработчики, созданные с помощью конфигурации gcc 5.3.0 (GCC): --enable-gpl --enable-version3 --disable-w32threads --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-libmfx --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --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-decklink --enable-zlib libavutil 55. 22.100 / 55. 22.100 libavcodec 57. 35,100 / 57. 35.100 libavformat 57. 34.102 / 57. 34.102 libavdevice 57. 0,101 / 57. 0,101 libavfilter 6. 44,100 / 6. 44.100 libswscale 4. 1.100 / 4. 1.100 libswresample 2. 0,101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 Расщепление командной строки. Параметр чтения '-f' ... соответствует параметру
'f' (принудительный формат) с аргументом 'concat'. Вариант чтения '-i' ...
сопоставляется как входной файл с аргументом
'C:\Users\mtst\Desktop\ Клипы \ сохранить \keep.txt. Опция чтения '-c' ...
соответствует параметру «c» (имя кодека) с аргументом «copy». чтение
опция 'C:\Users\mtst\Desktop\Clips\keep\keep.mp4' ... соответствует
выходной файл. Параметр чтения '-y' ... соответствует параметру 'y' (перезаписать выходные файлы) с аргументом '1'. Параметр чтения '-report' ... соответствует параметру 'report' (создать отчет) с аргументом '1'. Законченный
расщепление командной строки. Разбор группы опций: глобальный.
Применение опции y (перезаписать выходные файлы) с аргументом 1. применение
опция report (сгенерировать отчет) с аргументом 1. Успешно
разобрал группу опций. Разбор группы параметров: входной файл
C:\Users\mtst\Desktop\ Клипы \ сохранить \keep.txt. Применение опции f (сила
формат) с аргументом конкат. Успешно разобрал группу вариантов. Открытие входного файла: C:\Users\mtst\Desktop\Clips\keep\keep.txt.
[file @ 00000000027d3ee0] Настройка белого списка по умолчанию 'file, crypto'
[concat @ 00000000027d3800] Небезопасное имя файла
'C:\Users\mtst\Desktop\Clips\keep\ a1.mp4' [AVIOContext @
0000000000957ca0] Статистика: 238 байт прочитано, 0 ищет
C:\Users\mtst\Desktop\Clips\keep\keep.txt: операция не разрешена

как вы можете видеть в конце, он говорит:

Небезопасное имя файла 'C:\Users\mtst\Desktop\Clips\keep\a1.mp4'

... и операция не разрешена. Я пытался добавить дополнительные обратные слэши или изменить обратные слэши для прямого слэша или экранирования двойных двоеточий, добавления двойных кавычек или одинарных кавычек в начале или конце concatTextDirectory ... ни одно из этих изменений не дало никакого результата.

1 ответ1

23

Либо беги

ffmpeg.exe -f concat -safe 0 -i
"C:\Users\mtst\Desktop\Clips\keep\keep.txt" -c copy
"C:\Users\mtst\Desktop\Clips\keep\keep.mp4

Или не используйте абсолютные (полные) пути в keep.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .