dimanche, décembre 08, 2024
Nom d'utilisateur : Mot de passe :
[NEWS]
Envoyé par unreal
Présentation

J'adore écouter de la musique, mais hélas pour moi le service de streaming que je préfère n'est pas disponible en France, c'est-à-dire qu'il faut une IP américaine pour se connecter. C'est bien dommage, mais nous n'allons pas nous décourager pour si peu.

Dans un dossier, nous allons voir comment installer un serveur proxy sur un petit serveur virtuel qu'on peut trouver pour quelques dollars par mois à peine.

Installation et configuration de Squid

Commencez donc par installer Squid sur votre serveur. Nous avons utilisé la version 2.6.STABLE21 sur un système CentOS x64.

Ensuite, nous allons changer le port d'écoute et configurer Squid pour cacher sa présence dans les headers HTTP. En effet, certains services de streaming peuvent détecter ces headers pour en bloquer l'accès.

http_port 18080
header_access Via deny all
forwarded_for off


Enfin, nous allons configurer des ACL d'accès. Personnellement, je souhaite pouvoir utiliser le proxy pour accéder à n'importe quel site quand je suis chez moi (IP statique), mais qu'il restreint l'accès aux sites d'une liste blanche quand je suis sur l'accès wifi du boulot (IP dynamique).

Par exemple :

acl wifiboulot src 1.2.0.0/16 3.4.5.0/24 6.7.8.0/24
acl webports port 80
acl webports port 443
acl whitelist dstdomain "/etc/squid/whitelist"
http_access allow wifiboulot whitelist webports

acl wifimaison src 80.1.2.3
http_access allow wifimaison Safe_ports

http_access allow localhost
http_access deny all


Le fichier /etc/squid/whitelist contient une liste de domaines autorisés, par exemple :

.google.com
.sitedestreaming.com
.autresitedestreaming.com


Il peut être intéressant de restreindre l'accès au port http (18080 ici) avec un firewall, même si ce n'est pas strictement nécessaire, dans la mesure où des ACL sont présentes.

Fichier d'autoconfiguration de proxy (PAC)

Maintenant que nous avons un proxy Squid, il est temps de configurer les clients (un PC ou un iPhone par exemple) pour accéder sélectivement au proxy. Pour cela nous allons utiliser un .pac ou fichier Proxy auto-config.

function FindProxyForURL(url, host) {
    var regexp = /.*audio\.sitedestreaming\.com.*/;
    if (regexp.test(host)) {
        return "DIRECT";
    }

    if (dnsDomainIs(host, ".google.com") ||
            dnsDomainIs(host, ".sitedestreaming.com") ||
            dnsDomainIs(host, ".autresitedestreaming.com")) {
        return "PROXY adresseduproxy:18080";
    } else {
        return "DIRECT";
    }
}


Comme vous pouvez le voir sur l'exemple ci-dessus, un fichier PAC se présente comme un javascript avec une fonction FindProxyForURL() qui va retourner DIRECT pour sortir sans proxy, ou PROXY <adresse proxy: port> pour sortir avec le proxy. Il est possible de définir plusieurs proxies.

Dans le cas qui nous intéresse, nous envoyons les requêtes vers *.google.com, *.sitedestreaming.com et *.autresitedestreaming.com à travers le proxy, par contre *audio.sitedestreaming.com sera servi sans proxy. En effet, plusieurs services de streaming permettent d'accéder aux contenus avec une IP "interdite" à partir du moment où la requête initiale se fait avec une IP proxifiée. On réduit ainsi le volume de données à faire transiter par le proxy.

Conclusion

<coup de gueule>
Une fois de plus, il est fort regrettable d'avoir recours à de telles bidouilles pour accéder à du contenu pourtant payant. Il est assez incompréhensible que de telles restrictions soient encore en place alors que les ayants droits prétendent favoriser l'offre légale.
</coup de gueule>

Posté le 09/03/11 à 16:41 - 0 Commentaires...

[NEWS]
Envoyé par unreal
Dans le même style que le dossier dédié à la lecture de contenu mkv sur PS3, celui-ci va vous permettre de lire du contenu 720p au format mkv sur iPhone sans recompression de la vidéo.

La page de specifications iPhone 4 indique que le H.264 Main Profile@L3.1 est supporté en 720p avec son AAC@160kbit/s, le tout dans un conteneur mp4. Cela signifie que nous avons plusieurs opérations à faire pour rendre une vidéo lisible sur iPhone 4. D'abord il faut recompresser le son (généralement en AC3 5.1 à l'origine), puis il faut utiliser le profil Main du Level 3.1 du codec H264, avant de remuxer les flux dans un conteneur mp4.

Pour la vidéo il se pose le problème suivant : généralement pour les séries TV, c'est le L4.1 ou du High@L3.1 qui est utilisé, comme le montre mediainfo :

$ mediainfo /usr/home/exports/fichier.mkv | grep Format
Format                         : Matroska
Format                         : AVC
Format/Info                     : Advanced Video Codec
Format profile                 : High@L3.1
Format settings, CABAC         : Yes
Format settings, ReFrames        : 3 frames
Format                         : AC-3
Format/Info                     : Audio Coding 3


Nous allons tenter un coup de bluff : modifier à la volée l'entête pour faire croire qu'il s'agit bien de MP@L3.1 ; généralement cela fonctionne si les autres options d'encodage (notamment refs, bframes et b_pyramids) ne sont pas excessives. Selon mes tests, des vidéos 720p avec un bitrate de 5Mbit/s sont parfaitement fluides sur iPhone4.

Travaux pratiques

Nous allons utiliser le script de conversion MKV2MP4 que vous pouvez télécharger ici.

Vous pouvez télécharger également la version spéciale pour Mac OS X qui contient tous les binaires nécessaires en cliquant sur ce lien. Comme la version OS X est préconfigurée, vous pouvez sauter directement au paragraphe utilisation.

Il faut éditer une ligne du script pour forcer l'entête en MP@L3.1 :

MAGIC_H264="6764001F"


Avant d'exécuter le script, vérifiez que vous avez installé les logiciels suivants :

- mkvtoolnix
- FFMpeg avec support encodage AAC
- MP4box ou MP4Creator

L'utilisation du script est très simple :

./mkv2mp4.sh /chemin/vers/fichier.mkv


Le ou les .mp4 générés seront alors stockés dans le même dossier que le mkv source.

Il est aussi possible de specifier un dossier de destination (qui peut ne pas exister), par exemple :

./mkv2mp4.sh /chemin/vers/fichier.mkv /home/media


Vous pouvez maintenant utiliser iTunes pour transférer les fichiers vers l'iPhone4, iPod Touch (avec écran Retina) ou iPad.

Historique

- Oct 16 2010 : première version
- Août 7 2011 : mise à jour avec la version Mac OS X

Posté le 16/10/10 à 18:11 - 0 Commentaires...

[NEWS]
Envoyé par unreal
Depuis le 29 avril 2010, Free propose des flux TV bas débit pour iPhone, iPod Touch et iPad. Le seul problème étant que l'accès en est restreint aux IP Free (Freebox ou Freewifi), alors qu'il serait souhaitable de pouvoir visualiser ces flux en 3G directement. Nous allons voir dans ce dossier qu'il est possible de contourner cette limitation pour peu qu'on dispose d'un serveur Apache sur son accès Freebox à domicile.

Requis

Avant d'aller plus loin, vérifiez que vous disposez des éléments suivants :

- Une connexion ADSL Freebox ADSL ou fibre
- Un serveur Web Apache compilé avec mod_proxy
- Un forfait 3G illimité, les flux vidéo étant particulièrement consommateurs de bande passante

Configuration

Commencez par configurer mod_proxy pour accéder aux flux, par exemple :

ProxyRequests Off
<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

ProxyPass /freeboxtv             http://tv.freebox.fr
ProxyPassReverse /freeboxtv      http://tv.freebox.fr


Mod_proxy est un reverse proxy assez flexible (car utilisable avec d'autres directives Apache), utilisé ici pour rediriger toutes les requêtes arrivant sur /freeboxtv vers le serveur de stream de Free, avec l'IP de la connexion Freebox.

Ensuite, téléchargez le pack de playlists et décompressez-le quelque part sur votre serveur, par exemple dans /playlistsfreeboxtv. Il ne vous reste qu'à les éditer pour remplacer localhost par l'adresse réelle de votre serveur.

Naviguez vers l'adresse http://lenomdevotreserveur/playlistsfreeboxtv/ à partir de votre iPhone ou iPod touch, cliquez sur un des liens, et normalement au bout de quelques secondes l'image devrait apparaître.

Comme d'habitude, n'hésitez pas à faire part de vos réactions dans les commentaires.

Posté le 15/05/10 à 14:05 - 0 Commentaires...

[NEWS]
Envoyé par unreal
Le Motorola Milestone est la version européenne du Droid. Ses caractéristiques intéressantes, notamment son grand écran (854x480) et son décodeur H.264 matériel de bonne facture, en font un jouet idéal pour profiter de contenus vidéo en mobilité. Dans ce dossier nous allons utiliser FFmpeg pour convertir une vidéo HD dans un format optimal pour le Milestone.

Prérequis

- Des vidéos de test de bonne qualité, idéalement 720p ou 1080p
- Une machine *nix ayant FFmpeg et les codecs nécessaires*
- Du temps : il faut prévoir 2-6h pour convertir une source vidéo de 2h

* pour décoder : variable, selon le fichier source ; pour encoder : libx264, libfaac et mp4. Vous pouvez utiliser ffmpeg -formats pour lister le support codecs de votre version de FFmpeg.


Le script

Le script suivant simplifie le processus d'encodage en vérifiant la validité des chemins et en calculant automatiquement le format de sortie pour respecter quelques règles et le ratio d'origine.

any2mp4.sh
#!/bin/bash

FILENAME=$1

if [ ! "$FILENAME" ]; then
        echo "Usage: any2divx.sh <filename>"
        exit 1
fi

if [ ! -f "$FILENAME" ]; then
        echo "No such file."
        exit 1
fi

VIDSIZE=`ffmpeg -i "$FILENAME" 2>&1 | grep Video | head -n 1 | awk '{ print $6; }' | sed 's/,//'`
W=`echo -n "$VIDSIZE" | sed 's/x.*//'`
H=`echo -n "$VIDSIZE" | sed 's/[0-9]*x//'`
REQW=848
NEWH1=`awk "BEGIN { print ( $REQW / $W / 2 ) * $H }" | sed 's/\..*//'`
NEWH=$(( $NEWH1 * 2 ))
VIDRATIO=`awk "BEGIN { print $W / $H }"`
VIDSIZE="$REQW""x""$NEWH"
VIDBR=2000k
AUDBR=128k
AUDCH=2
EXTRA="-y -subq 7 -level 30 -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -coder 0 -refs 2 -me_method umh"

echo "Compressing to $FILENAME.avi with the following parameters:"
echo " Video size:    $VIDSIZE"
echo " Video bitrate: $VIDBR"
echo " Video ratio: $VIDRATIO"
echo " Audio bitrate: $AUDBR"


ffmpeg -i "$FILENAME" -s $VIDSIZE -vcodec libx264 -aspect $VIDRATIO -vb $VIDBR -acodec libfaac -ab $AUDBR -ac $AUDCH $EXTRA "$FILENAME.mp4"


Le script prend en paramètre le fichier à encoder et génère un fichier mp4 dans le même dossier, portant le nom du fichier source suffixé par .mp4. Les paramètres en gras peuvent être édités si l'utilisateur le souhaite (les valeurs proposées sont optimisées pour Milestone) sachant que REQW doit être divisible par 16.

Remarques et conclusion

La ligne EXTRA contient la chaîne de paramétrage envoyée à libx264. Je déconseille d'augmenter de façon significative la complexité d'encodage parce que :

- Cela pourrait occasionner des artefacts lors du décodage
- Cela augmente de façon considérable le temps d'encodage sans gain de qualité
- Cela pourrait réduire l'autonomie en lecture parce que la vidéo est plus complexe à décoder

Je note cependant que l'appareil accepte de décoder du profile 4.0 si le nombre de références est réduit. Si vous trouvez des bonnes combinaisons, n'hésitez pas à m'en faire part !

En conclusion je dirais que le Milestone est capable d'afficher de la vidéo de très bonne qualité à condition de prendre le temps d'encoder correctement.

Have fun (as usual wink.gif ) !

Posté le 04/02/10 à 11:49 - 0 Commentaires...

[NEWS]
Envoyé par unreal
PS3 : box à tout faire

La PS3 est une bonne console de jeu, mais ce qui la distingue vraiment des autres consoles sont ses possibilités d'utilisation en media center. Cet article a comme but d'expliquer comment profiter au mieux des possibilités de lecture HD de la console, et s'articule autour des points suivants : installation d'un serveur UPNP et conversion de média mkv en format « PS3 ».

Installation d'un serveur UPNP

La PS3 peut lire des fichiers audio/vidéo depuis son disque local, depuis un disque USB, ou même depuis un site Web, mais c'est en mode client UPNP qu'elle offre le plus de fonctionnalités : lecture directement depuis le réseau, navigation simplifiée, copie des fichiers vers le disque local...

Pour en profiter, il suffit d'installer un serveur UPNP sur la machine qui dispose des fichiers à partager. Pour ma part j'ai choisi uShare pour sa configuration simplifiée et nombre réduit de dépendances.

Démarrez le MediaServer UPNP que vous avez choisi et normalement la PS3 devrait afficher dans « Vidéo » une icône pour accéder au contenu partagé :

ps3_upnp.jpg


Si vous avez du contenu avi/divx ou mpeg, la lecture devrait se faire sans soucis, si vous avez du contenu mkv, une erreur s'affiche lors de la lecture :

ps3_noplay.jpg


Il est en effet impossible de lire directement des fichiers Matroska sur la console. Mais comme le mkv n'est qu'un conteneur audio/vidéo avec généralement du h264 à l'intérieur, on peut changer de format sans ré-encoder le flux vidéo. Aucune perte de qualité, donc.

Script de conversion mkv vers PS3

Comme j'ai décidément trop de temps libre, j'ai développé un script BASH capable d'automatiser toute la procédure et de générer des fichiers .m4v compatibles (je l'espère) à 100% avec la PS3.

Je vous invite donc à télécharger le script avant toute chose.

Avant de pouvoir utiliser le script il va falloir installer plusieurs logiciels :

- mkvtoolnix
- FFMpeg avec support encodage AAC
- MP4box ou MP4Creator

L'utilisation du script est très simple :

./mkv2mp4.sh /chemin/vers/fichier.mkv


Le ou les .m4v générés seront alors stockés dans le même dossier que le mkv source.

Il est aussi possible de specifier un dossier de destination (qui peut ne pas exister), par exemple :

./mkv2mp4.sh /chemin/vers/fichier.mkv /home/media


Pourquoi le script ?

Même si le principe de la conversion est relativement facile à comprendre, l'implémentation l'est beaucoup moins à cause de différences entre les fichiers source, les choix logiciels et les bugs divers et variés. Le rôle du script est donc de gérer les divers cas qui peuvent se présenter pour simplifier et automatiser la conversion.

Il réalise les tâches suivantes :

- La PS3 ne gérant pas les fichiers de plus de 4Go, le script découpe en plusieurs morceaux si nécessaire
- Extraction du média source en audio (généralement AC3 ou DTS) et vidéo H264 en gérant le cas où de multiples pistes audio sont présentes
- Recompression de l'audio en AAC
- Modification à la volée du profile H264 dans l'entête des fichiers vidéo pour autoriser la lecture
- ReMUX des fichiers en m4v
- Gestion d'erreurs et exceptions

Pour finir

- La PS3 lit parfaitement du contenu 720p et 1080p en H264, et le résultat est plutôt bluffant.
- Certaines versions de mp4box ont un bug qui empêche la génération de fichiers de plus de 2Go. Si votre version rencontre ce bug, essayez de la mettre à jour, ou sinon, modifiez la ligne "MAXSIZE=" au début du script pour qu'il split en fichiers de 2Go.
- Si vous rencontrez des soucis, n'hésitez pas à m'en faire part happy.gif Enjoy !

Versions du document

- 2009/05/01 - v1.03 du script supporte MP4Creator

Posté le 04/12/08 à 10:54 - 0 Commentaires...

2 pages... [1-5][6-6]