Vidéo numérique

De Banane Atomic
Révision datée du 27 août 2019 à 20:12 par Nicolas (discussion | contributions) (→‎Normes de codage vidéo)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigationAller à la recherche

Logiciels

Conteneurs vidéo

Un conteneur permet de stocker un flux vidéo, un ou plusieurs flux audio, des fichiers de sous-titres.

Conteneur Extensions Description
AVI avi Audio Video Interleave développé par Microsoft.
MPEG 1/2/4 mpg mpeg mp4 Moving Picture Experts Group.
Matroska mkv mka mks
QuickTime mov développé par Apple.
Ogg ogg ogv oga ogx ogm Moving Picture Experts Group.
Transport Stream ts
Flash Video flv Développé par Adobe Systems.
WebM webm weba basé sur Matroska, développé par Google.

Format de l'image

Format Ratio Définition
2,35/1 2,35 640x272
16/9 1,77 1920x1080 1280x720 512x288 480x270
16/10 1,6 1680x1050 1440x900
4/3 1,33 1440x1080 1024x768 800x600 640x480 320x240
1,25/1 1,25 720x576

Type de balayage

Débits vidéo

Qualité Débit
Faible 128 kb/s
Web 384 kb/s
Video CD 1.25 Mb/s
DVD 5 Mb/s
HDTV 15 Mb/s
Blu-ray 40 Mb/s
1 kb = 1000 bits = 1000/8 octets
débit vidéo (kb/s) = taille (Mio) / durée (s) * 1024*1024*8/1000

Normes de codage vidéo

Norme Codec : outils pour encoder/décoder Commentaire
H.265 / MPEG-H Part 2 / HEVC libx265 implémentation libre du High Efficiency Video Coding
H.264
MPEG-4 Part 10 AVC
x264 Advanced Video Coding
Pour les vidéos HD
MPEG-4 Part 2 ASP Xvid, mpeg4
Theora libtheora
DV Vidéo pour montage sur ordinateur
MPEG-2 mpeg2video, mpeg2enc Vidéo pour DVD
MPEG-1 mpeg1video, mpeg2enc
M-JPEG
H.263 prédécesseur du H.264
Sorenson Spark implémentation incomplète de H.263
VP8

Combinaisons communes conteneur - codecs

Conteneur Codec vidéo Codec audio
AVI XviD MP3
MP4 AVC / H.264 / H.265 AAC
OGG Theora Vorbis
Matroska Theora Vorbis
WebM VP8 Vorbis

Débits

En général le débit audio est de 128 Kbps.
Le débit vidéo est calculé en fonction de la taille souhaitée pour le fichier vidéo.

Obtenir des informations sur la vidéo

Bash.svg
mediainfo MaVideo.avi

ffmpeg -i MaVideo.avi

mplayer MaVideo.avi

Extraire les pistes d'un MKV

Bash.svg
# Lister les pistes
mkvmerge -i MaVideo.mkv
# Fichier 'MaVideo.mkv' : conteneur : Matroska
# Piste numéro 0 : video (V_MPEG4/ISO/AVC)
# Piste numéro 1 : audio (A_AAC/MPEG2/LC)
# Piste numéro 2 : audio (A_AAC/MPEG2/LC)
# Piste numéro 3 : subtitles (S_TEXT/SSA)
# Piste numéro 4 : subtitles (S_VOBSUB)
# Pièce jointe numéro 1 : type 'image/jpeg', taille 272076 octets, nom de fichier 'Cover.jpg'
# Pièce jointe numéro 2 : type 'application/x-truetype-font', taille 12432 octets, nom de fichier 'xct1.ttf'
# Chapitres : 20 entrées

# Extraire la vidéo
mkvextract tracks MaVideo.mkv O:video.mpg

# Extraire la piste audio 2
mkvextract tracks MaVideo.mkv 2:audio2.mp3

# Extraire les sous-titres
mkvextract tracks MaVideo.mkv 4:sous-titres.srt
# comme les sous-titres sont au format VobSub, la sortie sera composée de 2 fichiers :
# sous-titres.idx et sous-titres.sub

mkvmerge et mkvextract font partie de la suite MKVToolNix.

DVD to MKV

Tuto pour OGMRip

Créer un fichier MKV

Utiliser MKVMergeGUI de la suite MKVToolNix pour assembler les fichiers vidéo, audio et sous-titres afin de créer un fichier MKV.

  • Convertir les sous-titres en UTF8
  • Nommer les pistes audio et les sous-titres

Modifier les tags d'un MKV

Bash.svg
# Changer le tag Title
mkvpropedit video.mkv --set "title=Nouveau Titre"

FFMPEG

Option Description
-an / -vn sans audio / vidéo
-acodec / -vcodec choix du codec audio / vidéo

ffmpeg -codecs pour avoir la liste des codecs disponibles (libmp3lame)
ffmpeg -codec:v copy copie du flux audio

-s WxH format de l'image (-s 800x600)
-aspect définit le ratio: 4:3, 16:9 (-aspect 16:9)
-ab / -b débit de l'audio / vidéo en bit/s (-ab 64 -b 200k)
-f force le format du conteneur -f avi

ffmpeg -formats pour avoir la liste des formats disponibles (avi matroska mpeg)

-ss XX commence à XX secondes (-ss 5, -ss 00:00:05.00)
-t XX pendant XX secondes (-t 10, -t 00:00:10.00)
threads X utilise X processus

Exemples

Bash.svg
# Convertion WMV -> AVI / Xvid
ffmpeg -i Video.wmv -codec:v libxvid -f avi NewVideo.avi

Extraire le flux vidéo

Bash.svg
# Extraction par copie du flux vidéo
ffmpeg -i MaVideo.avi -an -vcodec copy FluxVideo.avi
# -vcodec copy : copie du flux vidéo
# -an : Désactive l'enregistrement de l'audio. On ne s'occupe que de la vidéo ici.

# autre méthode
ffmpeg -i MaVideo.avi -map 0:0 -vcodec copy FluxVideo.avi

Ajouter / extraire le flux audio

Bash.svg
# ajout d'un flux audio à une vidéo qui n'en avait pas
ffmpeg -i MaVideo.avi -i MonAudio.mp3 FluxVideo.avi

# ajout d'un second flux audio à une vidéo qui en avait un
ffmpeg -i MaVideo.avi -i MonAudioFr.mp3 \
-map 0:0 -map 0:1 -map 1:0 \
-c:v copy -c:a copy -c:a copy \
FluxVideo.avi

# extraction de la piste audio
ffmpeg -i MaVideo.avi FluxAudio.mp3
# pour eviter le réencodage choisir la même extension que la source
ffmpeg -i MaVideo.avi 2>&1 | grep Audio
# Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default)
ffmpeg -i MaVideo.avi -acodec copy FluxAudio.aac

ffplay

Bash.svg
# permet de connaitre le debut et la fin de la vidéo en seconde pour le découpage
ffplay -i Video.avi -stats -vf scale=iw/2:ih/2

Concaténation

Bash.svg
# il faut convertir les vidéo au format mpg ou mpeg transport streams (ts)
ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts
ffmpeg -i input2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate2.ts

# on concatène les fichiers
cat intermediate1.ts intermediate2.ts | ffmpeg -i - -c copy -bsf:a aac_adtstoasc output.mp4

How can I concatenate video files

Extraire des images d'une vidéo

Bash.svg
# extrait 5 images par seconde de 0 à 1 seconde
ffmpeg -i MaVidéo.ogg -r 5 -ss 0 -t 1 -f image2 -vcodec mjpeg img-%03d.jpg
# -r limite à 5 images par secondes, sinon 25
# -f Force format?
# img-%03d.jpg, 3 digits

Réduire la taille d'une vidéo

Bash.svg
# réencoder la vidéo et l'audio avec des codecs performants
ffmpeg -i input.mp4 -c:v libx265 -crf 30 -c:a aac -b:a 128k output.mp4

H.265

Sous-titres

Obtenir des sous-titres
Pour décaler dans le temps les sous-titres, utilisez Gnome Subtitles.

Extraire les sous-titres

Bash.svg
ffmpeg -i Video.mp4 -map 0:2 -c:s srt Video.srt

# Extraction par copie des sous-titres
ffmpeg -i Video.avi -an -vn -c:s copy -f rawvideo sub.txt

Ajouter des sous-titres

Bash.svg
ffmpeg -i Video.mp4 \
-i sub.srt -metadata:s:s:0 language=eng \
-map 0:0 -map 0:1 -map 1:0 \
-c:v copy -c:a copy -c:s mov_text \
VideoAvecST.mp4

Conversion de sous-titres VobSub en SRT

Les sous-titres VobSub se présentent sous la forme de 2 fichiers : idx et sub.

Bash.svg
# Extraire les images des sous-titres
subp2tiff --sid=0 -n NomFichierSansExtension
# --sid : ID du sous-titre
# NomFichierSansExtension : est le nom du fichier de sous-titres, sans les extensions .idx et .sub.
# Un fichier XML est également généré, qui contient l'indexation des sous-titres au format XML.

# Générer les fichiers .txt contenant le texte du sous-titre pour chaque fichier .tif. 
for img in *.tif ; do tesseract "$img" "$img" -l fra ; done

# Générer le fichier de sous-titres SRT
subptools -s -w -t srt -i index.xml -o MesSousTitres.srt
# index.xml : fichier XML généré lors de l'éxécution de la commande subp2tiff

# Ouvrir le fichier SRT avec LibreOffice Writer afin de corriger les erreurs.
libreoffice --writer MesSousTitres.srt

Le paquet OGMRip fournit les applications subp2tiff et subptools.
Les paquets tesseract, tesseract-data-fra, tesseract-data-eng, tesseract-data-spa sont nécessaire pour l'utilisation de Tesseract pour la reconnaissance de caractères.

Doc Ubuntu

Une autre solution est d'utiliser Avidemux : Outils → OCR (VobSub → srt).