Aller au contenu

Réencapsuler mkv en m2ts sous linux


Wolfi

Messages recommandés

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

#!/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

 

#!/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

#!/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!

Modifié par Wolfi
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
  • Statistiques des membres

    23 028
    Total des membres
    1 033
    Maximum en ligne
    Subaru
    Membre le plus récent
    Subaru
    Inscription
  • Statistiques des forums

    128,1 k
    Total des sujets
    1,7 M
    Total des messages
×
×
  • Créer...