Et oui ça faisait longtemps...
Voilà où j'en suis aujourd'hui de mes recherches et réglages pour un PCHC au pti oignons sous linux.
Je n'ai rien inventé bien sûr, je ne suis qu'un humble collecteur : tout ça s'inspire et s'adapte de nos amis tobal, kaz, jeremy33 et tant d'autres, un merci spécial à twocats du forum Ubuntu.
Le script servant de lecteur externe et lançant Mplayer avec les options sympas : MonPlayerV3.sh
- Code: Tout sélectionner
#!/usr/bin/env bash
# Script pour utilisé Mplayer en lecteur externe avec XBMC ou par lui-même, le but est de récupérer le
# framerate de la video pour mettre l'écran à la résolution voulue et au taux de rafraichissement optimal.
# Puis de récupérer la largeur de la vidéo afin de lancer le profil Mplayer correspondant de façon à utiliser
# des paramètres de postprocessing différents. La dernière étape rétablie la résolution initiale du Bureau.
# Pour info ma TV ne prend en progressif que du 720 et à 50 ou 60hz.
# Ne pas oublier de rendre le script exécutable ;-)
# v3, merci à Master twocats !
# VARIABLES
# La valeur du taux de rafraîchissement par défaut, dans mon cas ça sera 50hz.
RATE_ID=${RATE_ID:-50}
# Le framerate de la vidéo.
FPS_ID=$(mplayer -ao null -vo null -frames 0 -nolirc -nocache -identify "${@}" 2>/dev/null | awk 'BEGIN {FS="="} /FPS/ {print $2}')
# La largeur de la vidéo.
WIDTH_ID=$(mplayer -ao null -vo null -frames 0 -nolirc -nocache -identify "${@}" 2>/dev/null | awk 'BEGIN {FS="="} /WIDTH/ {print $2}')
# On fixe ici la valeur de RATE_ID selon le framerate.
# En fonction de votre TV vous pourrez mettre de valeurs : 23.976, 24, 25, 48...
case ${FPS_ID%.*} in
23 | 24 ) RATE_ID=50 ;;
25 ) RATE_ID=50 ;;
29 | 30 ) RATE_ID=60 ;;
esac
# En fonction de la largeur de la vidéo et du framerate on va indentifier le profil Mplayer correspondant.
# Les profils ("profile") sont définis dans le fichier de config de Mplayer.
if [ ${WIDTH_ID} -gt 1919 ]
then
case ${FPS_ID%.*} in
23 | 24 ) PROFILE_ID="1080p24f" ;;
25 ) PROFILE_ID="1080p" ;;
29 | 30 ) PROFILE_ID="1080p" ;;
esac
elif [ ${WIDTH_ID} -gt 1279 ]
then
case ${FPS_ID%.*} in
23 | 24 ) PROFILE_ID="720p24f" ;;
25 ) PROFILE_ID="720p" ;;
29 | 30 ) PROFILE_ID="720p" ;;
esac
elif [ ${WIDTH_ID} -gt 719 ]
then
case ${FPS_ID%.*} in
23 | 24 ) PROFILE_ID="DVD24f" ;;
25 ) PROFILE_ID="DVD" ;;
29 | 30 ) PROFILE_ID="DVD" ;;
esac
else
case ${FPS_ID%.*} in
23 | 24 ) PROFILE_ID="AVI24f" ;;
25 ) PROFILE_ID="AVI" ;;
29 | 30 ) PROFILE_ID="AVI" ;;
esac
fi
# Et ici, selon ce qui a été indentifié plus haut,
# on applique la résolution appropriée,
# on lance la vidéo avec MPlayer et le bon profil.
xrandr -s 1280x720 -r ${RATE_ID}
mplayer -profile ${PROFILE_ID} "${@}"
echo "${PROFILE_ID}"
# A la fin de la lecture, on revient à la résolution du Bureau, à définir.
echo "Retour"
xrand -s 1280x720 -r 60
Le fichier de config de Mplayer
- Code: Tout sélectionner
[AVI]
profile-desc="Profil pour video AVI"
vc=ffodivxvdpau,ffmpeg12vdpau,ffh264vdpau,ffwmv3vdpau,ffvc1vdpau,
sws=9
vf=dr,fspp=5,gradfun=1.2:16,hqdn3d=1:2:5:5,unsharp=l5x5:0.5:c5x5:0.5,scale=-3:720:0:0:10::0:1
ontop=yes
monitoraspect=16:9
fs=1
vo=vdpau:deint=2:ivtc:colorspace=auto:denoise=0.3:sharpen=0.6,xv,x11,
# Pour les vieux AVI pourris
# ni=yes
lavdopts=threads=2
autoq=100
ao=alsa:device=iec958,esd
ac=hwac3,hwdts
af=channels=6,lavcresample=48000,lavcac3enc=1:640:1
ffactor="10"
sub-bg-alpha="0"
sub-bg-color="0"
subfont-text-scale="5.7"
subfont-blur="1"
spuaa=4
font=/usr/share/fonts/truetype/msttcorefonts/impact.ttf
stop-xscreensaver="yes"
really-quiet=1
volume=100
cdda=speed=4
dvd-speed=4
[AVI24f]
profile-desc="Profil pour video AVI en 24fps"
# Ce profil n'est utile que si votre Tv n'accepte aucun multiple de 24hz (ni 24 ni 48 ni 72...)
# speed pour lire 24fps en 25fps et coller à du 50hz
speed=1.0417
vc=ffodivxvdpau,ffmpeg12vdpau,ffh264vdpau,ffwmv3vdpau,ffvc1vdpau,
sws=9
vf=dr,fspp=5,gradfun=1.2:16,hqdn3d=1:2:5:5,unsharp=l5x5:0.5:c5x5:0.5,scale=-3:720:0:0:10::0:1
ontop=yes
monitoraspect=16:9
fs=1
vo=vdpau:deint=2:ivtc:colorspace=auto:denoise=0.3:sharpen=0.6,xv,x11,
# Pour les vieux AVI pourris
# ni=yes
lavdopts=threads=2
autoq=100
ao=alsa:device=iec958,esd
#ac=hwac3,hwdts
# scaletempo pour "synchroniser" le son avec la vidéo, sans altération de tonalité
af=channels=6,scaletempo,lavcresample=48000,lavcac3enc=1:640:1
ffactor="10"
sub-bg-alpha="0"
sub-bg-color="0"
subfont-text-scale="5.7"
subfont-blur="1"
spuaa=4
font=/usr/share/fonts/truetype/msttcorefonts/impact.ttf
stop-xscreensaver="yes"
really-quiet=1
volume=100
cdda=speed=4
dvd-speed=4
[DVD]
profile-desc="Profil pour DVD"
vc=ffodivxvdpau,ffmpeg12vdpau,ffh264vdpau,ffwmv3vdpau,ffvc1vdpau,
sws=9
vf=dr,fspp=5,gradfun=1.2:16,hqdn3d=1:2:5:5,unsharp=l5x5:0.5:c5x5:0.5,scale=-3:720:0:0:10::0:1
ontop=yes
monitoraspect=16:9
fs=1
vo=vdpau:deint=2:ivtc:colorspace=auto:denoise=0.3:sharpen=0.5,xv,x11,
lavdopts=threads=2
autoq=100
ao=alsa:device=iec958,esd
ac=hwac3,hwdts
af=channels=6,lavcresample=48000,lavcac3enc=1:640:1
ffactor="10"
sub-bg-alpha="0"
sub-bg-color="0"
subfont-text-scale="5.7"
subfont-blur="1"
spuaa=4
font=/usr/share/fonts/truetype/msttcorefonts/impact.ttf
slang=fr,fre,french,French,Français,français
alang=en,eng,English,english,Anglais,anglais,fr,fre,french,French,Français,français
stop-xscreensaver="yes"
really-quiet=1
volume=100
cdda=speed=4
dvd-speed=4
[DVD24f]
profile-desc="Profil pour DVD en 24fps"
# Ce profil n'est utile que si votre Tv n'accepte aucun multiple de 24hz (ni 24 ni 48 ni 72...)
# speed pour lire 24fps en 25fps et coller à du 50hz
speed=1.0417
vc=ffodivxvdpau,ffmpeg12vdpau,ffh264vdpau,ffwmv3vdpau,ffvc1vdpau,
sws=9
vf=dr,fspp=5,gradfun=1.2:16,hqdn3d=1:2:5:5,unsharp=l5x5:0.5:c5x5:0.5,scale=-3:720:0:0:10::0:1
ontop=yes
monitoraspect=16:9
fs=1
vo=vdpau:deint=2:ivtc:colorspace=auto:denoise=0.3:sharpen=0.5,xv,x11,
lavdopts=threads=2
autoq=100
ao=alsa:device=iec958,esd
#ac=hwac3,hwdts
# scaletempo pour "synchroniser" le son avec la vidéo, sans altération de tonalité
af=channels=6,scaletempo,lavcresample=48000,lavcac3enc=1:640:1
ffactor="10"
sub-bg-alpha="0"
sub-bg-color="0"
subfont-text-scale="5.7"
subfont-blur="1"
spuaa=4
font=/usr/share/fonts/truetype/msttcorefonts/impact.ttf
slang=fr,fre,french,French,Français,français
alang=en,eng,English,english,Anglais,anglais,fr,fre,french,French,Français,français
stop-xscreensaver="yes"
really-quiet=1
volume=100
cdda=speed=4
dvd-speed=4
[720p]
profile-desc="Profil pour video 720p"
vc=ffmpeg12vdpau,ffh264vdpau,ffwmv3vdpau,ffvc1vdpau,ffodivxvdpau,
vf=gradfun=1.05:16
monitoraspect=16:9
ontop=yes
fs=1
vo=vdpau:studio=1:colorspace=auto:denoise=0.2:sharpen=0.3,xv,x11,
lavdopts=threads=2
autoq=100
ao=alsa:device=iec958,esd
ac=hwac3,hwdts
af=channels=6,lavcresample=48000,lavcac3enc=1:640:1
ffactor="10"
sub-bg-alpha="0"
sub-bg-color="0"
subfont-text-scale="5.7"
subfont-blur="1"
spuaa=4
font=/usr/share/fonts/truetype/msttcorefonts/impact.ttf
slang=fr,fre,french,French,Français,français
alang=en,eng,English,english,Anglais,anglais,fr,fre,french,French,Français,français
stop-xscreensaver="yes"
really-quiet=1
volume=100
cdda=speed=4
dvd-speed=4
[720p24f]
profile-desc="Profil pour video 720p en 24fps"
# Ce profil n'est utile que si votre Tv n'accepte aucun multiple de 24hz (ni 24 ni 48 ni 72...)
# speed pour lire 24fps en 25fps et coller à du 50hz
speed=1.0417
vc=ffmpeg12vdpau,ffh264vdpau,ffwmv3vdpau,ffvc1vdpau,ffodivxvdpau,
vf=gradfun=1.05:16
monitoraspect=16:9
ontop=yes
fs=1
vo=vdpau:studio=1:colorspace=auto:denoise=0.2:sharpen=0.3,xv,x11,
lavdopts=threads=2
autoq=100
ao=alsa:device=iec958,esd
#ac=hwac3,hwdts
# scaletempo pour "synchroniser" le son avec la vidéo, sans altération de tonalité
af=channels=6,scaletempo,lavcresample=48000,lavcac3enc=1:640:1
ffactor="10"
sub-bg-alpha="0"
sub-bg-color="0"
subfont-text-scale="5.7"
subfont-blur="1"
spuaa=4
font=/usr/share/fonts/truetype/msttcorefonts/impact.ttf
slang=fr,fre,french,French,Français,français
alang=en,eng,English,english,Anglais,anglais,fr,fre,french,French,Français,français
stop-xscreensaver="yes"
really-quiet=1
volume=100
cdda=speed=4
dvd-speed=4
[1080p]
profile-desc="Profil pour video 1080p"
vc=ffmpeg12vdpau,ffh264vdpau,ffwmv3vdpau,ffvc1vdpau,ffodivxvdpau,
vf=gradfun=1.02:16
monitoraspect=16:9
ontop=yes
fs=1
vo=vdpau:studio=1:colorspace=auto:sharpen=0.2,xv,x11,
lavdopts=threads=2
autoq=100
ao=alsa:device=iec958,esd
ac=hwac3,hwdts
af=channels=6,lavcresample=48000,lavcac3enc=1:640:1
ffactor="10"
sub-bg-alpha="0"
sub-bg-color="0"
subfont-text-scale="5.7"
subfont-blur="1"
spuaa=4
font=/usr/share/fonts/truetype/msttcorefonts/impact.ttf
slang=fr,fre,french,French,Français,français
alang=en,eng,English,english,Anglais,anglais,fr,fre,french,French,Français,français
stop-xscreensaver="yes"
really-quiet=1
volume=100
cdda=speed=4
dvd-speed=4
[1080p24f]
profile-desc="Profil pour video 1080p en 24fps"
# Ce profil n'est utile que si votre Tv n'accepte aucun multiple de 24hz (ni 24 ni 48 ni 72...)
# speed pour lire 24fps en 25fps et coller à du 50hz
speed=1.0417
vc=ffmpeg12vdpau,ffh264vdpau,ffwmv3vdpau,ffvc1vdpau,ffodivxvdpau,
vf=gradfun=1.02:16
monitoraspect=16:9
ontop=yes
fs=1
vo=vdpau:studio=1:colorspace=auto:sharpen=0.2,xv,x11,
lavdopts=threads=2
autoq=100
ao=alsa:device=iec958,esd
#ac=hwac3,hwdts
# scaletempo pour "synchroniser" le son avec la vidéo, sans altération de tonalité
af=channels=6,scaletempo,lavcresample=48000,lavcac3enc=1:640:1
ffactor="10"
sub-bg-alpha="0"
sub-bg-color="0"
subfont-text-scale="5.7"
subfont-blur="1"
spuaa=4
font=/usr/share/fonts/truetype/msttcorefonts/impact.ttf
slang=fr,fre,french,French,Français,français
alang=en,eng,English,english,Anglais,anglais,fr,fre,french,French,Français,français
stop-xscreensaver="yes"
really-quiet=1
volume=100
cdda=speed=4
dvd-speed=4
[default]
profile-desc="Défaut"
# Les paramètres de décodage
vc=ffmpeg12vdpau,ffh264vdpau,ffwmv3vdpau,ffvc1vdpau,ffodivxvdpau,
# Les paramètres du resize, deint, dering, deblock, deband, denoise, unsharp mask
vf=scale=-3:720:0:0:10::0:1,yadif=3,dr,fspp=5,gradfun=1.2:16,hqdn3d=1:2:5:5,unsharp=l5x5:0.5:c5x5:0.5
# Fixe le type d'écran
monitoraspect=16:9
# Pour être sûr que rien ne gêne la lecture
ontop=yes
# Pour être sûr d'être en plein écran
fs=1
# Les paramètres vdpau
vo=vdpau:studio=1:deint=4:pullup:chroma-deint:colorspace=auto:denoise=0.5:sharpen=0.7,xv,x11,
# 2 coeurs actifs
lavdopts=threads=2
# Utilisation maximale du CPU
autoq=100
# Les sorties audio : alsa spdif puis esd
ao=alsa:device=iec958,esd
# Sync Video / Audio
# mc=1
# Le passthrough de l'ac3 et dts, si spdif activé dans alsamixer
ac=hwac3,hwdts
# Fixe le nombre de canaux audio en sortie, resample à 48khz
# Réencode tout son ni ac3 ni dts en ac3 pour sortir sur spdif
# à 640kb dès qu'on a 2 canaux en entrée, si spdif activé dans alsamixer
af=channels=6,lavcresample=48000,lavcac3enc=1:640:1
# Paramètres perso pour les sous-titres au format texte
ffactor="10"
sub-bg-alpha="0"
sub-bg-color="0"
subfont-text-scale="5.7"
subfont-blur="1"
spuaa=4
font=/usr/share/fonts/truetype/msttcorefonts/impact.ttf
# Piste sous-titre en français en priorité
slang=fr,fre,french,French,Français,français
# Piste audio en anglais en priorité
alang=en,eng,English,english,Anglais,anglais,fr,fre,french,French,Français,français
# Pas d'écran de veille
stop-xscreensaver="yes"
# Pas de message d'erreur
really-quiet=1
# Volume système au max
volume=100
# Boost de 10% du volume soft
#softvol-max=110
# Mon skin choisi
skin=DVDPlayer-1.1
# Bande passante max
bandwidth=0
# Taille du cache en ko
cache=60000
# %age min avant le départ de la lecture
cache-min=25
# Vitesse max du CD
cdda=speed=4
# Vitesse max du DVD
dvd-speed=4
# Vitesse max du BD, à tester
#bd-speed=2
Le playercorefactory si on utilise XBMC
- Code: Tout sélectionner
<?xml version="1.0" encoding="iso-8859-1"?>
<playercorefactory>
<players>
<player name="MonPlayer" type="ExternalPlayer" audio="false" video="true">
<filename>/usr/bin/MonPlayerV3.sh</filename>
<args>/fullscreen /close "{1}"</args>
<hidexbmc>true</hidexbmc>
<hideconsole>true</hideconsole>
<warpcursor>none</warpcursor>
</player>
<player name="lxbdplayer" type="ExternalPlayer" audio="false" video="true">
<filename>/usr/bin/lxbdplayer.sh</filename>
<args>/fullscreen /close "{1}"</args>
<hidexbmc>true</hidexbmc>
<hideconsole>true</hideconsole>
<warpcursor>none</warpcursor>
</player>
<player name="Musique" type="ExternalPlayer" audio="true" video="false">
<filename>/usr/bin/Musique.sh</filename>
<args>"{1}"</args>
<hidexbmc>true</hidexbmc>
<hideconsole>true</hideconsole>
<warpcursor>none</warpcursor>
</player>
</players>
<rules action="prepend">
<rule filetypes="mkv|avi|mp4|wmv|mpg|ts|ifo" player="MonPlayer" />
<rule filetypes="mp3|flac|wav|wma" player="Musique" />
<rule filetypes="m2ts|mpls" player="lxbdplayer" />
</rules>
<rules name="system rules">
<!-- BDs -->
<rule name="BD" BD="true" player="lxbdplayer" />
<rule name="bdfile" bdfile="true" player="lxbdplayer" />
<rule name="bdimage" bdimage="true" player="lxbdplayer" />
<!-- DVDs -->
<rule name="DVD" DVD="true" player="MonPlayer" />
<rule name="dvdfile" dvdfile="true" player="MonPlayer" />
<rule name="dvdimage" dvdimage="true" player="MonPlayer" />
<!-- dvdplayer can play standard rtsp streams -->
<rule name="rtsp" protocols="rtsp" filetypes="!(rm|ra)" player="PAPlayer" />
<!-- Internet streams -->
<rule name="streams" internetstream="true"/>
<rule name="flv/aacp/sdp" mimetypes="video/x-flv|video-flv|audio/aacp|application/sdp" player="DVDPlayer" />
<rule name="mp2" mimetypes="application/octet-stream" filetypes="mp2" player="PAPlayer" />
<!-- Others -->
<rule name="rtv" protocols="rtv" player="DVDPlayer" />
<rule name="hdhomerun/myth/rtmp/mms/udp" protocols="hdhomerun|myth|cmyth|rtmp|mms|mmsh|udp" player="DVDPlayer" />
<rule name="lastfm/shout" protocols="lastfm|shout" player="Musique" />
</rules>
</playercorefactory>
Comme vous vous en êtes certainement rendu compte, il y a des doublons volontaires dans les paramètres de postprocess par exemple : à vous de voir s'il est utile de faire un denoise ou un sharpen avec Mplayer et aussi avec vdpau. Mais sans CG Nvidia, les infos sont utiles je pense.
Adaptez avec vos résolutions et taux de rafraichissement bien sûr.
Si votre TV prend le 24, 48 ou 72hz les "profile" de Mplayer avec "24f" à la fin ne vous servent à rien. Si vous n'avez que du 60hz il va vous falloir des "profile" avec 25f en plus.
Adaptez le "speed=1.0417" en "speed=1.25" dans les "24f" si vous ne pouvez afficher que du 60hz.
Adaptez le "speed=1.0417" en "speed=1.2" dans les "25f" si vous ne pouvez afficher que du 60hz.
Pour ceux qui se poserait la question : lxbdplayer.sh
- Code: Tout sélectionner
#!/bin/bash
# V 1.1
# Lancement de lxbdplayer en utilisant le profil BD de mplayer
# Pensez à le rendre exécutable !
lxbdplayer | mplayer -profile 1080p24f
exit 0;