Это моя командная строка:

ffmpeg -r 30 -framerate 30 -f gdigrab -draw_mouse 0 -i title="Output" -f dshow
-i audio="CABLE Output (VB-Audio Virtual Cable)" -ss 1 -vcodec h264 -preset superfast
-pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" -profile:v baseline
-level 3.1 -x264opts "keyint=60:min-keyint=60:no-scenecut" -ab 64k -ar 44100
-maxrate 2100k -minrate 2100k -bufsize 2100k -threads 1 "C:\Users\...\Desktop\TEST.mp4"

Мой звук задерживается на 1 секунду по видео. Значит, видео пришло на 1 секунду первым. Как вы видите, я использовал -ss 1 , но это ничего не меняет. Я пытаюсь изменить на -itsoffset -1 и все возможные синтаксисы для них обоих, но ничего не происходит.

Когда я пытаюсь сделать задержку видео с использованием положительного -itsoffset , хорошо, но аудио нет.

Кто-нибудь знает почему?

1 ответ1

0

Пытаться

ffmpeg -framerate 30 -f gdigrab -draw_mouse 0 -i title="Output" -f dshow
-i audio="CABLE Output (VB-Audio Virtual Cable)" -vcodec h264 -preset superfast
-pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" -profile:v baseline
-level 3.1 -x264opts "keyint=60:min-keyint=60:no-scenecut" -af asetpts=PTS-(1/TB) -ab 64k -ar 44100
-maxrate 2100k -minrate 2100k -bufsize 2100k -threads 1 "C:\Users\...\Desktop\TEST.mp4"

asetpts смещает выходные временные метки аудио на 1 секунду, поэтому звук передается на одну секунду вперед относительно входной синхронизации.

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