Хорошо, я думаю, что нашел решение. Пожалуйста, поправьте меня, если я ошибаюсь.
Решение
vlc screen:// :screen-fps=24 ... :sout="#transcode{...fps=24}...
Решение состоит в том, чтобы указать тот же fps в опции transcode, что и в опции: screen-fps.
Полная команда (для справки):
vlc screen:// :screen-fps=24 :screen-follow-mouse :screen-mouse-image=cursor.png :input-slave=alsa://hw:1,0 :sout="#transcode,fps=24}:duplicate}"
подробности
По умолчанию VLC имеет:
- вход
500 000 µs
, - выход
40 000 µs
.
Вы можете увидеть это в консоли после команды vlc: Ссылка на изображение (imgur).
:screen-fps=24
Опция предоставляетstream_out_transcode stream out: input interval 41666 (base 1)
опцию VLC.- Опция
fps=24
intranscode
предоставляетstream_out_transcode stream out: output interval 41666 (base 1)
опцию VLC.
Если я прав, чтобы получить 41666
из 24
fps (или Гц), нам нужно сделать следующую операцию: 10^6 / 24 = 41666.66666... ~= 41666 µs
В моей должности, я не определил fps=24
в transcode
опции. Таким образом, значение по умолчанию для выходного интервала было 40 000
мкс.
Если я считаю, что мое видео 3600
длинное, и я делаю следующую операцию: 3600 * (1-40000/41666) = 143.9447
секунды.
Это> 2мн, и это соответствует наблюдаемой дельте.
Результат с правильными параметрами: Ссылка на изображение (imgur).
замечание
Несмотря на то, что существует параметр audio-sync
в transcode
опции, он не работает, как я ожидал. Только добавив fps
параметр сделал свое дело.
Рекомендации
Вы можете найти ссылки здесь: