Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/02/2017, à 15:06

Ivanovich

Mediatomb - Encodage à la volée

bonjour,
Avec la montée en puissance du h265 (HEVC) l'encodage à la volée s'impose avec entre autres Mediatomb , Serviio.
Je me suis intéressé à mediatomb que j'utilise depuis assez longtemps.
Sur le principe c'est assez simple.
On ajoute les type mime requis si nécessaire:

<mappings>
      <extension-mimetype ignore-unknown="no">
        ...................................
        <map from="mkv" to="video/x-matroska"/>
        <map from="mka" to="audio/x-matroska"/>
      </extension-mimetype>
      <mimetype-upnpclass>
        <map from="audio/*" to="object.item.audioItem.musicTrack"/>
        <map from="video/*" to="object.item.videoItem"/>
        <map from="image/*" to="object.item.imageItem"/>
        <map from="application/ogg" to="object.item.audioItem.musicTrack"/>
      </mimetype-upnpclass>
      <mimetype-contenttype>
        ...................................
        <treat mimetype="video/x-matroska" as="mkv"/>
        <treat mimetype="audio/x-matroska" as="mka"/>
      </mimetype-contenttype>
    </mappings> 

   
Ensuite on peut assigner un profil de transcodage que l'on va devra créer, à un type mime

<transcoding enabled="yes">
    <mimetype-profile-mappings>
      .......................................
      <transcode mimetype="video/x-matroska" using="video_H265"/>
    </mimetype-profile-mappings>

    <profiles>
      .......................................
      <profile name="video_H265" enabled="yes" type="external">
        <mimetype>video/mpeg4</mimetype>
        <accept-url>yes</accept-url>
        <first-resource>yes</first-resource>
        <accept-ogg-theora>yes</accept-ogg-theora>
	<agent command="/opt/mediatomb/mediatomb-transcode-video" arguments=" %in %out "/>
        <buffer size="14400000" chunk-size="512000" fill-size="120000"/>
      </profile>

    </profiles>
</transcoding>

J'ai fait le choix comme l'ont montré certains sur la toile d'appeler un script: /opt/mediatomb/mediatomb-transcode-video

#!/bin/bash 
FFMPEG="/usr/bin/ffmpeg" 
INPUT="$1" 
OUTPUT="$2"
VIDEO_CODEC="mpeg2video" 
VIDEO_BITRATE="4096k" 
VIDEO_FRAMERATE="25" 
AUDIO_CODEC="copy" 
FORMAT="mpegts"
LOG="/var/log/mediatomb"

if /usr/bin/mediainfo $INPUT | /bin/grep "HEVC" 1>/dev/null 2>&1
then
   /bin/echo "Transcodage du fichier $INPUT en HEVC" >> $LOG
   exec "$FFMPEG" -i "$INPUT" -vcodec $VIDEO_CODEC -b $VIDEO_BITRATE -r $VIDEO_FRAMERATE -acodec $AUDIO_CODEC -f $FORMAT - > "$OUTPUT"
else 
   exec "$FFMPEG" -i "$INPUT" -vcodec copy -acodec copy - > "$OUTPUT"
fi

Bon tout ça , ça marche SAUF qu'on passe à la moulinette tous les mkv soit donc + de 90% des videos ( chez moi).
Donc le script est censé vérifier qu'on a affaire à une video HEVC.
Mais alors que dans un terminal le script effectue bien l'aiguillage, appelé par mediatomb cela ne fonctionne pas.
De même aucune écriture au LOG.
J'aimerais donc bien résoudre ce problème car ça ne me plaît pas la méthode bourin, j'encode tout et on n'en parle plus.
Merci pour vos idées.

Dernière modification par Ivanovich (Le 04/02/2017, à 15:18)


Mint 20.3 Cinnamon
Dell Optiplex 3020 - Intel(R) i5-4590  // DIMM DDR 2 x 4Go - Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller
Samsung SSD 750 EVO 120GB / Samsung SSD 960 EVO 250GB / ATA Disk WD10EARS (1,0TB)

Hors ligne