1

Я хочу добавить SubRip к видео mp4, но получаю ошибку. Вот моя команда:

ffmpeg -i "C:\Users\wwy12\Downloads\RaymondChen20_high.mp4" -s 1920x1080 -b:v 3842k -ac 2 -r 29.97 -c:v libx264 -ar 44100 -b:a 140k -c:a aac -aspect 16:9 -vf "subtitles='C:\Users\wwy12⁠\Downloads\subtitle.srt':charenc=cp936:force_style='PrimaryColour=&H0000FFFF,OutlineColour=&H00FFFFFF'" "c:\ffoutput\out.mp4" -y

и вот вывод:

ffmpeg version N-82759-g1f5630a-Sherpya Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 6.2.1 (GCC) 20161118
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\Users\wwy12\Downloads\RaymondChen20_high.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    title           : One Dev Question with Raymond Chen - How do program settings work in virtual desktops
    album           : One Dev Question with Raymond Chen - How do program settings work in virtual desktops
    encoder         : Lavf57.10.101
    comment         : Application Development, C#, C++, developer center, Developer Tools, Developer Resources, Developers, Development, Windows 10
    copyright       : 2017 Microsoft Corporation
  Duration: 00:01:04.56, start: 0.000000, bitrate: 3985 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 3842 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 140 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
[subtitles @ 00000000030af220] Unable to parse option value "Userswwy12Downloadssubtitle.srt" as image size
    Last message repeated 1 times
[subtitles @ 00000000030af220] Error setting option original_size to value Userswwy12Downloadssubtitle.srt.
[Parsed_subtitles_0 @ 00000000030af160] Error applying options to the filter.

Вот снимок экрана выше (некоторые люди могут найти его легче читать).

1 ответ1

3

The

Unable to parse option value "Userswwy12Downloadssubtitle.srt" …

Сообщение об ошибке показывает, что FFmpeg отбрасывает обратную косую черту в имени файла.  Этот вопрос суперпользователя предполагает, что вы можете заменить обратную косую черту (\) обычной косой чертой (/); то есть что-то вроде

-vf "subtitles='C:/Users/wwy12/Downloads/subtitle.srt'…

и если вы работаете на диске C: попробуйте оставить C: вне имени файла.

Моя первая мысль, когда я увидел это, была то, что FFmpeg использовал обратную косую черту в качестве escape-символа.  Обычное решение этой ситуации - удвоить обратную косую черту:

-vf "subtitles='C:\\Users\\wwy12\\Downloads\\subtitle.srt'…

но этот билет FFmpeg говорит о том, что вам, возможно, придется увеличить их в четыре раза .  (Это не является абсолютно необоснованным; мне иногда приходилось использовать смешное количество обратных слешей в Unix.)  Так что вам может понадобиться что-то вроде

-vf "subtitles='C\\:\\\\Users\\\\wwy12\\\\Downloads\\\\subtitle.srt'…

Я не понимаю , почему они предлагают поставить обратную косую черту перед двоеточием :  Как я уже сказал, вы могли бы упростить свою жизнь, опустив C:

Обновить:

ОП сообщил, что он заставил его работать, удвоив обратную косую черту в пути subtitles и добавив одну перед двоеточием:

-vf "subtitles='C\:\\Users\\wwy12\\Downloads\\subtitle.srt'…

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