VLC - Почему аудиодорожка длиннее, чем видеодорожка после показа экрана?

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 мин За исключением задержки видео и аудио работают должным образом.

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

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

Fnifni
источник

Ответы:

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 FPS (или Гц), нам нужно сделать следующую операцию: 10^6 / 24 = 41666.66666... ~= 41666 µs

В моем оригинальном посте я не определился fps=24 в transcode вариант. Таким образом, значение по умолчанию для выходного интервала было 40 000 мкс.

Если я считаю, что мое видео 3600 s, и я делаю следующую операцию: 3600 * (1-40000/41666) = 143.9447 секунд.

Это & gt; 2мн, и это соответствует наблюдаемой дельте.

Результат с правильными параметрами: Ссылка на изображение (Imgur).


замечание

Хотя существует параметр audio-sync в transcode вариант, это не сработало, как я ожидал. Только добавление fps Параметр сделал свое дело.


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

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

Fnifni
источник