ffmpeg абсолютна помилка шляху


0

Я створив програму, яка автоматично запускає рядок коду ffmpeg, і вона працює з усіма функціями, крім однієї: якщо я спробую намалювати накладені деякі субтитри, виникає проблема з абсолютним шляхом, якщо я використовую той самий код у оболонці, відкритій на робочому столі це працює, але якщо я напишу абсолютний шлях, він не працює.

ffmpeg -i input.mp4 -filter_complex "subtitles=subs.srt:force_style='OutlineColour=&H80000000,BorderStyle=4,Outline=1,Shadow=0,MarginV=20,Fontsize=10,PrimaryColour=&H0000ff&'" output.mp4

якщо я змінити ffmpeg, input.mp4, subs.srt, output.mp4 з власним абсолютним шляхом ("c: \ users \ home \ desktop \ input.mp4"), він не працює!

Я також спробував:

  • "c: \ users \ home \ desktop \ input.mp4"
  • "c: /users/home/desktop/input.mp4"
  • 'c: \ users \ home \ desktop \ input.mp4'
  • 'c: /users/home/desktop/input.mp4'

Помилка:

    [subtitles @ 0000000002ab79c0] Unable to parse option value "UsersFamigliaDesktop569.srt" as image size
    Last message repeated 1 times
[subtitles @ 0000000002ab79c0] Error setting option original_size to value UsersFamigliaDesktop569.srt.
[Parsed_subtitles_0 @ 0000000002ab78e0] Error applying options to the filter.
[AVFilterGraph @ 0000000002edcd20] Error initializing filter 'subtitles' with args 'C:UsersFamigliaDesktop569.srt:force_style=OutlineColour=&H80000000,BorderStyle=4,Outline=1,Shadow=0,MarginV=20,Fontsize=15,PrimaryColour=&H000000&'
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0

Що я можу зробити?

strategaD

(Я не можу добре говорити англійською, вибачте)


Втечі з: і \, попередньо натиснувши на \ ie: -> \: і \ -> \\
Gyan

Регулярні втечі, мабуть, не вирізають його з фільтром субтитрів.
Anaksunaman

Відповіді:


2

Відповідно до цього звіту про помилку, помилка, яку ви бачите, - це проблема із фільтрами субтитрів.

У Windows для фільтра субтитрів працювати з абсолютними шляхами:

"кожен спеціальний символ повинен бути уникнути [...], а потім кожну втечу потрібно повторно уникнути".

Це ефективно означає, що вам потрібно \\перед товстою кишкою :(тобто \\:) і \\\\замість одиничних нахилів, \наприклад:

subtitles=C\\:\\\\users\\\\\\\\home\\\\desktop\\\\subs.srt

Щоб уникнути проблем, також не повинно бути пробілів у вашому шляху субтитрів (лапки не мають значення в той чи інший спосіб для шляхів без пробілів, тому вони не потрібні).

Якщо ви пропустите один слеш (наприклад , \:проти \\:або \\, по \\\порівнянні з \\\\) або включати прогалини в дорозі, ви будете продовжувати мати проблеми.

Зауважте, що це рішення призначене лише для фільтра субтитрів - ви можете вказати шляхи для вхідних та вихідних файлів зазвичай (наприклад c:\users\home\desktop\input.mp4).

Також не те, що вам потрібні лапки, лише якщо шлях містить пробіли, наприклад

c:\users\home\desktop\input.mp4   # no space in path

vs.

"c:\users\home\desk top\input.mp4"   # space in path ("desk top")

Нарешті, використовуючи свою оригінальну команду і c:\users\home\desktop\як абсолютний шлях , ви отримаєте :

ffmpeg -i c:\users\home\desktop\input.mp4 -filter_complex "subtitles=c\\:\\\\users\\\\home\\\\desktop\\\\subs.srt:force_style='OutlineColour=&H80000000,BorderStyle=4,Outline=1,Shadow=0,MarginV=20,Fontsize=10,PrimaryColour=&H0000ff&'" c:\users\home\desktop\output.mp4
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.