Afficher un message
Vieux 27/12/2008, 03h08   #1 (permalink)
Profil
Wolfi
Membre
Ancienneté  80%
Ancienneté 80%
 
Date d'inscription: mai 2006
Localisation: Rouen
Âge: 36
Pays :
Messages: 675
Téléchargements: 0
Uploads: 0
Merci: 1
Remercié 14 fois dans 7 Posts
Envoyer un message via ICQ à Wolfi Envoyer un message via AIM à Wolfi
Par défaut Réencapsuler mkv en m2ts sous linux

Salut! J'apporte ma petit contribution, car j'ai vu qu'on avait des tuto pour tsmuxergui (windows), super outil, mais pas pour tsmuxer sous linux. J'ai fait quelques scripts sh qui réencapsule n'importe quel fichier bizarre (avi[h264,dolby],mkv[h264,dts] par exemple) en m2ts lisible sur ps3, donc les voicis tels quels, j'essayerai de fournir une liste des paquets a installer.

1. mkvTOm2ts
Citation:
#!/bin/bash
#
# Utilisation: mkvtom2ts filename.mkv

AUDIO_LANGS="fre jpn eng und"


BASENAME=$(basename "$1" .mkv)
DEST_FILE=$BASENAME.m2ts

MPEG4_TRACK_NO=`mkvinfo "$1" | grep V_MPEG4/ISO/AVC -B10 | grep Track\ number\:\ | awk '{ print $5 }'`

#detection du format des pistes audio a l'aide de mkvinfo, trouvable dans mkvtoolnix
for AUDIO_LANG in $AUDIO_LANGS
do
AC3_TRACK_NO=`mkvinfo "$1" | grep A_AC3 -B10 -C3 | grep Language\:\ $AUDIO_LANG -B13 | grep Track\ number\:\ | awk '{ print $5 }'`
DTS_TRACK_NO=`mkvinfo "$1" | grep A_DTS -B10 -C3 | grep Language\:\ $AUDIO_LANG -B13 | grep Track\ number\:\ | awk '{ print $5 }'`
MP3_TRACK_NO=`mkvinfo "$1" | grep A_MPEG/L3 -B10 -C3 | grep Language\:\ $AUDIO_LANG -B13 | grep Track\ number\:\ | awk '{ print $5 }'`
if [ -n "$AC3_TRACK_NO" -o -n "$DTS_TRACK_NO" ]
then
break
fi
done

echo "Video(V_MPEG4/ISO/AVC) track no : $MPEG4_TRACK_NO"
echo "Audio(A_AC3) $AUDIO_LANG track no : $AC3_TRACK_NO"
echo "Audio(A_DTS) $AUDIO_LANG track no : $DTS_TRACK_NO"
echo "Audio(A_MPEG/L3) $AUDIO_LANG track no : $MP3_TRACK_NO"
#audio ac3->direct muxing
if [[ $AC3_TRACK_NO -gt "0" ]]
then
echo "AC3 - Dolby Digital, muxage direct"
rm -f mux.meta
echo "MUXOPT --no-pcr-on-video-pid --new-audio-pes --vbr" >>mux.meta
echo "V_MPEG4/ISO/AVC, "$1", level=4.1, insertSEI, contSPS, track=$MPEG4_TRACK_NO, lang=eng" >>mux.meta
echo "A_AC3, "$1", track=$AC3_TRACK_NO, lang=eng" >>mux.meta
tsMuxeR mux.meta $DEST_FILE
rm -f mux.meta
else
if [[ $DTS_TRACK_NO -gt "0" ]]
then
echo "DTS détecté, encodage en Dolby (AC3)"
mkvextract tracks "$1" $DTS_TRACK_NO:"$BASENAME.dts" $MPEG4_TRACK_NO:"$BASENAME.mpeg4"
dcadec -r -o wavall "$BASENAME.dts" > "$BASENAME.wav"
aften "$BASENAME.wav" "$BASENAME.ac3"
echo "Muxing..."
rm -f mux.meta
echo "MUXOPT --no-pcr-on-video-pid --new-audio-pes --vbr" >>mux.meta
echo "V_MPEG4/ISO/AVC, "$BASENAME.mpeg4", level=4.1, insertSEI, contSPS, track=1, lang=eng" >>mux.meta
echo "A_AC3, "$BASENAME.ac3", track=1, lang=eng" >>mux.meta
tsMuxeR mux.meta $DEST_FILE
rm -f mux.meta $BASENAME.dts $BASENAME.wav $BASENAME.ac3 $BASENAME.mpeg4
else
if [[ $MP3_TRACK_NO -gt "0" ]]
then
echo "MP3 détecté, qu'on encode en ac3..."
mkvextract tracks "$1" $MP3_TRACK_NO:"$BASENAME.mp3" $MPEG4_TRACK_NO:"$BASENAME.mpeg4"
echo "Converting to AC3..."
echo "Phase 1 : Wav..."
mpg123 -w $BASENAME.wav $BASENAME.mp3
echo "Phase 2 : Wav2AC3..."
aften "$BASENAME.wav" "$BASENAME.ac3"
echo "Now muxing into m2ts..."
rm -f mux.meta
echo "MUXOPT --no-pcr-on-video-pid --new-audio-pes --vbr" >>mux.meta
echo "V_MPEG4/ISO/AVC, "$BASENAME.mpeg4", level=4.1, insertSEI, contSPS, track=1, lang=eng" >>mux.meta
echo "A_AC3, "$BASENAME.ac3", track=1, lang=eng" >>mux.meta
tsMuxeR mux.meta $DEST_FILE
rm -f mux.meta $BASENAME.ac3 $BASENAME.wav $BASENAME.mpeg4 $BASENAME.mp3
else
echo "Rien de connu en audio, on arrete"
fi
fi
fi
2. mp4TOm2ts - cas ou on aurait un mp4 avec un profile louche

Citation:
#!/bin/bash
#Made by Wolfi@kyubi-wolf
#You're free to modify /copy / distribute / re-use it without any authorisation !

BASENAME=$(basename "$1" .mp4)
if [ ${BASENAME:0:1} = "[" ]
then
echo "Error, then file should not start by [ !! Rename the file!"
else

DEST_FILE=$BASENAME.m2ts
AAC=`MP4Box -info $1 | grep "AAC"`

if [[ -n $AAC ]]
then
echo "AAC detected"
ATRACKID=`MP4Box -info $1 | grep soun -C1 | grep TrackID | awk '{ print $7 }'`
AUDIO=$BASENAME.aac
ENCO="faad $AUDIO -o $AUDIO.wav"
else
ATRACKID=`MP4Box -info $1 | grep soun -C1 | grep TrackID | awk '{ print $7 }'`
AUDIO=$BASENAME.mp3
ENCO="mpg123 -w $AUDIO.wav $AUDIO"
fi
VTRACKID=`MP4Box -info $1 | grep vide -C1 | grep TrackID | awk '{ print $7 }'`
VIDEO=$BASENAME.h264

echo "Extracting video stream..."
MP4Box -raw $VTRACKID $1 -out $VIDEO
echo "Extracting audio stream..."
MP4Box -raw $ATRACKID $1 -out $AUDIO

echo "Converting to AC3..."
echo "Phase 1 : Wav..."
$ENCO
echo "Phase 2 : Wav2AC3..."
aften -b 128 "$AUDIO.wav" "$AUDIO.ac3"

echo "Now muxing into m2ts..."
rm -f mux.meta
echo "MUXOPT --no-pcr-on-video-pid --new-audio-pes --vbr" >>mux.meta
echo "V_MPEG4/ISO/AVC, "$VIDEO", level=4.1, insertSEI, contSPS, track=1, lang=eng" >>mux.meta
echo "A_AC3, "$AUDIO.ac3", track=1, lang=eng" >>mux.meta
#echo "S_PGS, fichier.pgs">>mux.meta
tsMuxeR mux.meta $DEST_FILE
echo "Cleaning temp files..."
rm -f mux.meta $AUDIO $VIDEO $AUDIO.ac3 $VIDEO $AUDIO.wav
fi
3.aviTOm2ts - au cas ou on aurait un h264+mp3 non reconnu par la ps3
Citation:
#!/bin/bash
#Made by Wolfi@kyubi-wolf
#You're free to modify /copy / distribute / re-use it without any authorisation !

BASENAME=$(basename "$1" .avi)
DEST_FILE=$BASENAME.m2ts

AUDIO=$BASENAME.mp3
ENCO="mpg123 -w $AUDIO.wav $AUDIO"

VIDEO=$BASENAME.h264

echo "Extracting video stream..."
mplayer -dumpvideo -dumpfile $VIDEO $1
echo "Extracting audio stream..."
mplayer -dumpaudio -dumpfile $AUDIO $1

echo "Converting to AC3..."
echo "Phase 1 : Wav..."
$ENCO
echo "Phase 2 : Wav2AC3..."
aften -b 128 "$AUDIO.wav" "$AUDIO.ac3"

echo "Now muxing into m2ts..."
rm -f mux.meta
echo "MUXOPT --no-pcr-on-video-pid --new-audio-pes --vbr" >>mux.meta
echo "V_MPEG4/ISO/AVC, "$VIDEO", level=4.1, insertSEI, contSPS, track=1, lang=eng" >>mux.meta
echo "A_AC3, "$AUDIO.ac3", track=1, lang=eng" >>mux.meta
#echo "S_PGS, fichier.pgs">>mux.meta
tsMuxeR mux.meta $DEST_FILE
echo "Cleaning temp files..."
rm -f mux.meta $AUDIO $VIDEO $AUDIO.ac3 $VIDEO $AUDIO.wav
Si ces scripts vous interessent, téléchargez tsmuxer sur le site officiel de l'editeur, et etudiez un peu les scripts, il vous faudra entre autre:
aften
mkvtoolnix
mplayer
mpg123
MP4Box

Surtout, si vous avez des améliorations à proposer, n'hesitez pas!!! J'ai conscience que ces scripts sont vraiment bourrins, j'ai passé pas mal de temps à les faire pour qu'ils marchent avec des vidéos que je rencontre souvent (episodes de manga surtout )
et donc ils ne marchent peut être pas avec des videos plus exotiques!
__________________
le loup est un loup pour le loup

Nintendo: N64, NGC
Sega: Dreamcast
Sony: PSP, PS3

Dernière modification par Wolfi ; 26/06/2009 à 17h08.
Wolfi est déconnecté   Réponse avec citation