mkv2box : Lire un mkv h264/x264 sur Freebox sans ré-encoder ! - Logiciels - Linux et OS Alternatifs
Marsh Posté le 19-06-2008 à 16:20:16
merci pour ton script, je testerai quand j'aurai un moment
Marsh Posté le 19-06-2008 à 18:02:08
pariel ca m interesse beaucoup !
(tu dois surement connaitre mais voici des exemples que la freebox sait lire)
http://alkasar.online.fr/
Marsh Posté le 18-06-2008 à 01:35:18
Bonjour à tous,
Sachant que la Freebox HD sait décoder le h264/x264 et l'AAC des chaines HD je me suis dit qu'il devait être possible de faire la même chose avec des mkv contenant ces mêmes codecs en changeant le format d'encapsulation. Après quelques recherches j'ai découvert qu'il y avait ce qu'il faut pour cela sous Linux. J'ai donc rédigé un petit script qui rends lisible et a priori parfaitement fluide un mkv h264/x264 transformé en flux TS. La vidéo n'est pas ré-encoder, il n'y a donc aucune perte de qualité. La piste audio par contre pose des problèmes, dans mes tests elle ne passe pas sans que je puisse en déterminer la raison. Elle est donc systèmatiquement ré-encoder en AC3 dans le script que voici :
#!/bin/bash
cd "$(pwd)"
for i in *.mkv
do
y=$(echo "${i}" | sed 's/mkv$/ts/')
#Analyse du fichier
mkvmerge -i "${i}" > /tmp/tracks.list
AUDIO_ID=$(grep audio < /tmp/tracks.list | awk '{print $3}' | sed 's/://')
AUDIO_FORMAT=$(grep "${AUDIO_ID}: audio" < /tmp/tracks.list | awk '{print $5}' | sed 's/(//; s/)//; s/\// /' | cut -f 2 -d "_" )
VIDEO_ID=$(grep video < /tmp/tracks.list | awk '{print $3}' | sed 's/://')
FPS_ID=$(mkvinfo "${i}" | grep -A 11 "Track type: video" | grep fps | awk '{print $6}' | sed 's/^(//')
#Analyse et convertion audio
if [[ "${AUDIO_FORMAT}" = "AAC" ]]
then
#Extraction audio
mkvextract tracks "${i}" ${AUDIO_ID}:audio.aac
else
#Transcodage audio
ffmpeg -i "${i}" -ab 192k audio.aac
fi
#Extraction vidéo
mkvextract tracks "${i}" ${VIDEO_ID}:video.h264
#Multiplexage des pistes au format MP4
MP4Box -tmp /tmp -add video.h264:fps=${FPS_ID} -add audio.aac video.mp4
#Transcodage audio en AC3 et encapsulation en MPEG TS
vlc -Idummy "video.mp4" --sout '#transcode{acodec=a52,ab=192,channels=2}:std{access=file,dst='"${y}"',mux=ts}' vlc://quit
#Le fichier est maintenant lisible sur Freebox
rm -f /tmp/tracks.list audio.aac video.h264 video.mp4
done
Copiez ce script dans le répertoire où se trouve vos mkv à convertir et lancez-le. Le fichier TS en sortit sera fluide sur Freebox, le son synchro. Sur un fichier de test en 1280x720 il faut 5 à 10 secondes pour que le film s'affiche (soyez patients).
Ils vous faut :
mkvtoolnix (mkvmerge, mkvextract, mkvinfo)
ffmpeg
MP4Box (du paquet gpac : http://gpac.sourceforge.net/ )
vlc
J'attends avec impatience vos retours de tests !
P.S.: la ligne de commande de vlc étant particulièrement obscure y aurait-il une bonne âme pour m'indiquer la syntaxe pour multiplexer un flux vidéo et un flux audio séparés en un fichier TS (sans les ré-encoder) ?
Message édité par twocats le 30-06-2008 à 22:33:00
---------------
La réponse est 42