Concevoir un site comme celui-ci avec WordPress.com
Commencer

Décalage audio/vidéo

Sur un film créé en utilisant streamlink je note un gros décalage de l’audio et de la vidéo. Le son est en retard.

Déterminer la durée du décalage.

Je le fais avec Avidemux, je note que l’image est à environ 1 s 15 alors que le son correspondant arrive à 9 s 15. Il me faut donc avancer le son de 8 secondes

Toujours avec Avidemux j’extrait les 30 premières secondes du film pour en faire un fichier test.mkv

Recalage audio vidéo avec ffmpeg.

Voir les infos

https://ffmpeg.org/ffmpeg.html#Main-options

https://trac.ffmpeg.org/wiki/UnderstandingItsoffset.

https://ffmpeg.org/ffmpeg-utils.html#time-duration-syntax

Donc pour avancer le son il faut utiliser -itsoffset -8

Vérification du recalage sur le fichier test.

ffmpeg -i test.mkv  -itsoffset -8 -i test.mkv -map 0:v -map 1:a  test-decal.mkv
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #1:1 -> #0:1 (aac (native) -> vorbis (libvorbis))

En français ça veut dire:

Le flux vidéo (h.264) non décalé est pris dans le premier input, Le flux audio (aac) avancé de 8 secondes est pris dans le second input et converti de aac en vorbis

Bingo! le résultat est probant.

Recalage du film complet:

En mp4 pour ne pas ré-encoder l’audio et avec améliorations du son.

ffmpeg -i film.mkv  -itsoffset -8 -i film.mkv -map 0:v -map 1:a  -filter:a loudnorm -movflags +faststart film-recal.mp4
 Stream #0:0: Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt470bg, progressive), 960x540 [SAR 1:1 DAR 16:9], q=2-31, 25 fps, 12800 tbn (default)
    Metadata:
      DURATION        : 01:22:39,040000000
      encoder         : Lavc58.134.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
  Stream #0:1(fra): Audio: aac (LC) (mp4a / 0x6134706D), 96000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      DURATION        : 01:22:39,240000000
      encoder         : Lavc58.134.100 aac
[mp4 @ 0x55dab20d9380] Starting second pass: moving the moov atom to the beginning of the file     
frame=123975 fps= 18 q=-1.0 Lsize=  544615kB time=01:22:38.88 bitrate= 899.7kbits/s speed=0.709x    
video:461842kB audio:77829kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.916157%

A propos de streamlink.

Selon ce message il faudrait utiliser l’option –ffmpeg-copyts

https://ffmpeg.org/ffmpeg.html

-copyts

Do not process input timestamps, but keep their values without trying to sanitize them. In particular, do not remove the initial start time offset value.

-start_at_zero

When used with copyts, shift input timestamps so they start at zero.

C’est utile pour l’enregistrement avec les paramètres –record ou -o.

Dans mon fichier config j’ai donc mis:

default-stream=best
ffmpeg-copyts
ffmpeg-start-at-zero
player /usr/bin/vlc "--network-caching=5000"

Caractérisques audio/vidéo d’un enregistrement:


    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
  Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
  Stream #0:1[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, mono, fltp, 67 kb/s
Publicité

Par Bidouille De Bian

Bidouilleur sur Linux Debian 10 (Buster). Débutant dans le blog sur Wordpress.

%d blogueurs aiment cette page :