Très simple avec ffmpeg :
ffmpeg -i input.mp4 output.srt
Très simple avec ffmpeg :
ffmpeg -i input.mp4 output.srt
L'utilisation de dvd:// dans une ligne de commande avec mplayer ou mencoder permet de donner directement le numéro du titre. Pour cela, on crée un lien symbolique /dev/dvd qui point vers /dev/sr0 :
# ln -s /dev/sr0 /dev/dvd
Il faut créer un fichier inputs.txt contenant ceci :
file '/chemin/vers/fichier1.mp4'
file '/chemin/vers/fichier2.mp4'
file '/chemin/vers/fichier3.mp4'
Puis
ffmpeg -f concat -i inputs.txt -c copy mon_fichier.mp4
Le seul préalable :
# apt install ffmpeg
Tout d'abord, on concatène les fichiers VOB qui nous intéresse après avoir monter le DVD :
# mount /dev/sr0 /mnt
$ cat /mnt/VIDEO_TS/VTS_01_1.VOB /mnt/VIDEO_TS/VTS_01_2.VOB /mnt/VIDEO_TS/VTS_01_3.VOB /mnt/VIDEO_TS/VTS_01_4.VOB > /home/user/Vidéos/monfilm.VOB
On repère les flux vidéos (généralement le 1), audios et sous-titres :
$ ffmpeg -i monfilm.VOB
Le flux vidéo est généralement le premier, on repère ensuite les flux audio et le flux de sous-titre si besoin. Ici, on suppose que l flux video est 0:1, les flux audios 0:10 (cantonnais) et 0:11 (français). Le flux sous-titre est le 0:3.
On encode ainsi :
$ ffmpeg -i monfilm.VOB -map 0:1 -map 0:10 -map 0:11 -map 0:3 -c:v libx264 -preset slow -crf 16 -c:a copy -c:s copy -metadata:s:a:0 language=yue -metadata:s:a:1 language=fra -metadata:s:s:0 language=fra mon_film.mp4
-map 0:1 donne l'ordre des flux de la future vidéo. Le premier flux sera la vidéo (flux 0:1 du DVD), le deuxième sera l'audio en cantonnais (flux 0:10) puis l'audio en français (0:11) et enfin les sous-titres (0:3).
-c:v libx264 : le codec vidéo sera h264
-c:a copy : on copie le flux audio
-c:s copy : on copie le flux de sous-titres
-preset veryslow : vitesse d'encodage, inversement proportionnelle à la qualité de l'image. Les options sont : ultrafast, superfast, fast, medium, slow, slower, veryslow. Medium est le réglage par défaut.
-crf : définit le niveau de qualité (q). L'échelle va de 0 à 51 (petit nombre = + de temps de calcul)
-metadata:s:a:0 : définit la metadata du flux audio 0 (a:0) avec language =yue (cantonnais), même chose pour le a:1 en français
-metadata:s:s:0 définit la langue des sous-titres (français)
Puis, en dernier, le nom du fichier en sortie.
Une alternative pour encoder en bitrate variable et en deux passes :
ffmpeg -i input.VOB -c:v libx264 -b:v 2000k -pass 1 -an -f null /dev/null && ffmpeg -i input.VOB -c:v libx264 -b:v 2000k -pass 2 -c:a aac-b:a 128k c:s copy output.mp4
En cas d'erreur, remplacer -na par -vsync cfr
La doc complète : https://ffmpeg.org/documentation.html dont le wiki : https://trac.ffmpeg.org/
Une autre doc : https://forum.hardware.fr/hfr/VideoSon/Traitement-Video/encodage-ffmpeg-dummies-sujet_154546_1.htm
Sur ubuntu :
apt install ffmpeg ogmrip tesseract-ocr tesseract-ocr-fra subtitleeditor
Disposer des infos avec ffmpeg :
ffmpeg -i VTS_01_1.VOB
Récupérer les .idx et .sub pour le titre 1:
mencoder dvd://1 -nosound -ovc frameno -o /dev/null -vobsuboutindex 0 -sid 0 -vobsubout nom_du_fichier
Le sid est la piste à lire, elle sera passée en sid 0 par l'instruction vobsuboutindex.
Script d'ocr (Tesseract.sh) à placer dans le dossier (le paquet tesseract-ocr-fra est nécessaire):
#!/bin/bash
NPROC=$(nproc --all| awk '{ print $1 - 1 }') # Set number of processor
for fichier in *.tif
do
(
echo "$fichier"
tesseract "$fichier" "$fichier" -l fra --psm 6 &>/dev/null
) &
if [[ $(jobs -r -p | wc -l) -gt $NPROC ]]; then
wait -n
fi
done
wait
Création des fichiers tiff et du xml indexé :
subp2tiff --sid=0 -n nom_du_fichier
On lance le script qui va océriser les fichiers:
./Tesseract.sh
C'est long.
On assemble les fichiers txt et l'index xml :
subptools -s -w -t srt -i nom_du_fichier.xml -o nom_du_fichier.srt
Normalement, le tour est joué.
Ne pas oublier qu'il y a une couche de son en plus.
file size (ko) = bitrate (kps) * running time (s) + audio
Tout simplement avec la commande cat !
cat film1.avi film2.avi film3.avi > gros_film.avi
Simple, efficace. Ne fonctionne pas avec les mkv, bien sûr.
Un exemple de ligne de commande :
ffmpeg -s 1920x1080 -r 25 -f x11grab -i :0.0 -f mp4 video.mp4