1

Я использую медиаплеер VLC 2.2.8 Weatherwax (ревизия 2.2.7-14-g3cc1d8cba9), установленный из моего дистрибутива (Arch Linux). Моя цель состоит в том, чтобы создать команду, которая записывает видео моего рабочего стола, с аудиовходом от micro.

После некоторых исследований я использовал эту команду:

vlc screen:// 
:screen-fps=24 
:screen-follow-mouse 
:screen-mouse-image=cursor.png 
:input-slave=alsa://hw:1,0
:sout="#transcode{vcodec=h264,venc=x264,vb=2048,acodec=mp3,scale=1.0,vfilter=croppadd{cropleft=0,croptop=0,cropright=0,cropbottom=0}}:duplicate{dst=std{mux=mp4,access=file,dst=out.mp4}}"

Я протестировал его для видео ~ 1 млн., И он работал без каких-либо заметных проблем. Затем я записал видео ~ 1 ч, и в результате получилось следующее:Ссылка на изображение (imgur).

Значения являются приблизительными. Задержка звука начинается с ~ 3 с и заканчивается ~ 3 мин. За исключением задержки видео и аудио работают должным образом.

Почему задержка звука? Это происходит из-за какого-то сжатия или по каким-то причинам, например, «микропроцессор медленнее, чем захват видео с экрана»?

Спасибо за ваш ответ.

1 ответ1

0

Хорошо, я думаю, что нашел решение. Пожалуйста, поправьте меня, если я ошибаюсь.

Решение

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{vcodec=h264,venc=x264,vb=2048,acodec=mp3,scale=1.0,vfilter=croppadd{cropleft=0,croptop=0,cropright=0,cropbottom=0},fps=24}:duplicate{dst=std{mux=mp4,access=file,dst=out.mp4}}"

подробности

По умолчанию 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 в transcode обеспечивает stream_out_transcode stream out: output interval 41666 (base 1) для VLC.

Если я прав, чтобы получить 41666 из 24 кадров в секунду (или Гц), нам нужно сделать следующую операцию: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 сделал свое дело.


Рекомендации

Вы можете найти ссылки здесь:

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