Небезпечне ім'я файлу FFMpeg concat demuxer


14

Я використовую ffmpeg всередині свого додатка .net, щоб об'єднати (об'єднати) кілька коротких відео з однаковими розмірами кодування та ширини та висоти. Я створив файл txt, як каже документація, і це мій txt:

concatTextDirectory - це каталог мого файлу txt.

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: \ Користувачі \ mtst \ Настільний \ Кліпи \ тримати \ зберігати.mp4 "-y -звітувати ffmpeg
версія N-79546-g13406b6 Copyright (c) 2000-2016 FFmpeg
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 \ Clips \ Keep \ Keep.txt'. Опція читання '-c' ...
узгоджується як опція 'c' (назва кодека) з аргументом 'copy'.
Опція читання "C: \ Users \ mtst \ Desktop \ Clips \ Keep \ Keep.mp4" ... збігається як
вихідний файл. Опція читання '-y' ... збігається як опція 'y' (перезапис вихідних файлів) аргументом '1'. Опція читання '-повітувати' ... збігається як опція 'звіт' (створити звіт) з аргументом '1'. Завершено
розділення командного рядка. Розбір групи варіантів: глобальний.
Застосування параметра y (перезапис вихідних файлів) аргументом 1.

проаналізував групу варіантів. Розбір групи параметрів: вхідний файл
C: \ Users \ mtst \ Desktop \ Clips \ Keep \ Keep.txt. Застосування опції f (
формат сили ) з аргументом concat. Групу варіантів успішно проаналізовано. Відкриття вхідного файлу: C: \ Users \ mtst \ Desktop \ Clips \ Keep \ Keep.txt.
[файл @ 00000000027d3ee0] Встановлення білого списку за замовчуванням 'файл, криптовалюта'
[concat @ 00000000027d3800] Небезпечна назва файлу
'C: \ Користувачі \ mtst \ Настільний \ Кліпи \ тримати \ a1.mp4' [AVIOContext @
0000000000957ca0] Статистика: 238 байт читати, 0 шукає
C: \ Users \ mtst \ Desktop \ Clips \ Keep \ Keep.txt: Операція заборонена

як ви бачите в кінці, воно говорить:

Небезпечна назва файлу "C: \ Users \ mtst \ Desktop \ Clips \ Keep \ a1.mp4"

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

Відповіді:


26

Або бігайте

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


Що не безпечно і чому? Приклад в документації показує абсолютні шляхи, тому я думаю, що це не проблема.
Густаво Родрігес

1
ffmpeg.org/pipermail/ffmpeg-devel/2013-February/138400.html - призводить до того, що абсолютні шляхи трактуються як небезпечні. Не впевнений у логіці цього, хоча!
jamadagni

Я також подумав, що це, мабуть, абсолютні шляхи, засновані на документах, але, мабуть, це не так. Я зробив це лише імена файлів, і це чудово працювало.
Майкл Туннелл

+1 для використання відносних імен шляху. Усі приклади показують повно.
pamamb
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.