J’ai mis en ligne les trois présentations sur Youtube :
- En attendant la PyConFr (03/2021) — Shopyo: Flasquer Flask — Abdur-Rahmaan Janhangeer
- En attendant la PyConFr (03/2021) — Dessine-moi une tortue — Antoine “entwanne” Rozo
- En attendant la PyConFr (03/2021) — Haml — Dimitri Merejkowsky
J’ai noté un léger décalage sur la deuxième entre la présentation et la webcam, mais rien de très grave.
Je vais m’occuper de la PR pyvideo.
Commandes ffmpeg d'extraction des vidéos
ffmpeg -i webcams.webm -vn -y audio.ogg
# 1st
# audio: 0:22:18 à 1:13:43 (d=0:51:25)
# partage d'écran: 0:23:19 à 1:13:43 (couper de 1:10:20 à 1:11:45) -> (d=0:47:01 + d=0:01:58)
i=1
ffmpeg -i audio.ogg -ss 0:22:18 -t 00:51:25 -c:v copy -c:a copy /tmp/audio$i.ogg
ffmpeg -i deskshare.webm -ss 0:23:19 -t 00:47:01 -c:v copy -c:a copy /tmp/desk$i-1.webm
ffmpeg -i deskshare.webm -ss 1:11:45 -t 00:01:58 -c:v copy -c:a copy /tmp/desk$i-2.webm
ffmpeg -loop 1 -i slide.png -t 00:01:01 -c:v libvpx -vf scale=1280:720,setsar=1:1 /tmp/slide$i-1.webm
ffmpeg -loop 1 -i slide.png -t 00:01:25 -c:v libvpx -vf scale=1280:720,setsar=1:1 /tmp/slide$i-2.webm
ffmpeg -i /tmp/slide$i-1.webm -i /tmp/desk$i-1.webm -i /tmp/slide$i-2.webm -i /tmp/desk$i-2.webm -filter_complex "[0:v:0][1:v:0][2:v:0][3:v:0]concat=n=4:v=1[outv]" -map "[outv]" /tmp/video$i.webm
ffmpeg -i /tmp/video$i.webm -i /tmp/audio$i.ogg -c copy -map 0:0 -map 1:0 pres$i.webm
# 2nd
# audio: 1:14:53 à 1:50:45 (d=0:35:52)
# partage d'écran: 1:14:53 à 1:50:45 (d=0:35:52)
i=2
ffmpeg -i audio.ogg -ss 01:14:53 -t 00:35:52 -c:v copy -c:a copy /tmp/audio$i.ogg
ffmpeg -i deskshare.webm -ss 01:14:53 -t 00:35:52 -c:v copy -c:a copy /tmp/desk$i.webm
ffmpeg -i webcams.webm -ss 01:14:53 -t 00:35:52 /tmp/webcam$i.webm # Don't copy to avoid losing first seconds
ffmpeg -i /tmp/webcam$i.webm -i /tmp/desk$i.webm -filter_complex "[0:v]scale=w=1280:h=720[a]; [a]crop=720:720[b]; [b][1:v]hstack=inputs=2[outv]" -map "[outv]" /tmp/video$i.webm
ffmpeg -i /tmp/video$i.webm -i /tmp/audio$i.ogg -c copy -map 0:0 -map 1:0 pres$i.webm
# 3rd
# audio: 1:51:25 à 2:00:10 (d=0:08:45)
# partage d'écran: 1:51:25 à 1:57:19 (d=0:05:54) et 1:58:23 à 1:59:35 (d=0:01:12)
i=3
ffmpeg -i audio.ogg -ss 01:51:25 -t 00:08:45 -c:v copy -c:a copy /tmp/audio$i.ogg
ffmpeg -i deskshare.webm -ss 01:51:25 -t 00:05:54 -c:v copy -c:a copy /tmp/desk$i-1.webm
ffmpeg -i deskshare.webm -ss 01:58:23 -t 00:01:12 -c:v copy -c:a copy /tmp/desk$i-2.webm
ffmpeg -loop 1 -i slide.png -t 00:01:04 -c:v libvpx -vf scale=1280:720,setsar=1:1 /tmp/slide$i-1.webm
ffmpeg -loop 1 -i slide.png -t 00:00:35 -c:v libvpx -vf scale=1280:720,setsar=1:1 /tmp/slide$i-2.webm
ffmpeg -i /tmp/desk$i-1.webm -i /tmp/slide$i-1.webm -i /tmp/desk$i-2.webm -i /tmp/slide$i-2.webm -filter_complex "[0:v:0][1:v:0][2:v:0][3:v:0]concat=n=4:v=1[outv]" -map "[outv]" /tmp/video$i.webm
ffmpeg -i /tmp/video$i.webm -i /tmp/audio$i.ogg -c copy -map 0:0 -map 1:0 pres$i.webm