1

Я использую FFmpeg в Windows, где мне нужно вставить \r\n в сам параметр.

ffmpeg … -headers "X-Test: Test\r\nX-Test-2: Test 2\r\n" …

Хотя это будет нормально работать в Linux и так далее, оно не работает из обычной командной строки Windows 10. Он также не работает под Bash под Windows. В обоих случаях отправляется литерал \r\n (обратная косая черта, r, обратная косая черта, n символов).

Я попытался использовать Alt+13 Alt+10, и, хотя это казалось для вставки символов, они были интерпретированы FFmpeg как 0xE299AA 0xE29799 .

Этот вопрос похож на Как я могу вставить новую строку в команду cmd.exe? кроме того, что я не привязан к cmd.exe. Я рад использовать любую оболочку, если я могу использовать ее под Windows, если есть предложения. Возможно ли это как-то через Powershell? Или, может быть, поместив мои параметры в текстовый файл и введя его в качестве значения параметра?

2 ответа2

1

Для этого у Bash есть синтаксис $'…' . Должно работать независимо от ОС.

ffmpeg … -headers $'X-Test: Test\r\nX-Test-2: Test 2\r\n' …

Из справочного руководства Bash:

Слова вида $'string' обрабатываются специально. Слово расширяется до string , символы с обратной косой чертой заменяются в соответствии со стандартом ANSI C. Escape-последовательности с обратной косой чертой, если они есть, декодируются следующим образом:

[...]

\n
новая линия

\r
возврат каретки

[...]

1

В PowerShell вы можете использовать кавычка-р-п-кавычка и используйте обратные косые черты вместо обратных слешей перед r и n для частей команды CRLF - backtick "r" backtick "n".

Это требует только изменения существующей команды

ffmpeg … -headers "X-Test: Test`r`nX-Test-2: Test 2`r`n"

Дополнительные ресурсы

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