Enregistrer la télévision sur computer-Tutorial (Windows / Linux / Mac)

Démarré par foobar, 16 Novembre 2011 à 15:36:05

« précédent - suivant »

0 Membres et 1 Invité sur ce sujet

Bonjour le forum,

J'ai lu quelques discussions sur l'enregistrement de la télévision et je voudrais partager la solution que j'ai retenue chez moi qui fonctionne bien.

Les chaines de télévision sont distribuées en format MPEG2-TS en flux multicast TCP/IP. Le programme VLC (www.videolan.org) permet de souscrire à un flux multicast et visualiser la video. Dans le menu <Media> - <Convert / Save ...>, VLC  permet aussi de saufgarder le flux dans un fichier. C'est bien, mais on ne peut pas programmer les enregistrements.

Pour cette raison, je me suis tourné vers le programme ffmpeg (www.ffmpeg.org) qui est un excellent outil open source, disponible sous windows, linux et Mac qui permet d'enregistrer les flux vidéo dans des fichiers depuis une ligne de commande qui est facile à automatiser.

Par exemple, en utilisant la version Windows de ffmpeg (http://sourceforge.net/projects/mplayer-win32/files/FFmpeg/git-N-32754-g936d4d4/), la simple commande :

ffmpeg.exe  -i udp://225.1.1.2:1111 -dts_delta_threshold 0 -c copy  MaVideo.mpg

souscrit le flux multicast envoyé à l'adresse 225.1.1.2 (port 1111) et l'enregistre dans le fichier MaVideo.mpg. L'adresse 225.1.1.2:1111 correspond à la chaine TF1. Pour connaitre les adresses des autres chaines, il suffit de regarder a l'intérieur du fichier de TVlist.m3u8 fourni par k-net / Siea pour voir la télé avec VLC. Rien de plus simple.

Ffmpeg permet aussi de choisir quel flux audio enregistrer, s'il y en e plusieurs. Par exemple la commande:

ffmpeg -y -i udp://225.1.1.91:1111  -dts_delta_threshold 0 -vcodec copy -acodec copy -map 0:3 -map 0:2 TSR-En.mpeg

enregistrera la vidéo et le 2ème audio (anglais) du flux 225.1.1.91:1111 (Télévision Suisse Romande)  dans le fichier TSR-En.mpeg

tandis que la commande:

ffmpeg -y -i udp://225.1.1.91:1111  -dts_delta_threshold 0 -vcodec copy -acodec copy -map 0:3 -map 0:2 -map 0:1 TSR-All.mpeg

enregistrera la vidéo et les deux audio (français et anglais) du flux 225.1.1.91:1111 (Télévision Suisse Romande)  dans le fichier TSR-En.mpeg. Ensuite, en regardant ce fichier avec VLC, vous pourrez choisir dans le menu <Audio> - < Audio Track > entre le français et l'anglais.

Sur le web il y a beaucoup de documentation sur l'utilisation de ffmpeg. Ce qui est important de savoir est que ffmpeg permet aussi d'analyser tout flux multicast afin de connaitre les numéros des différents flux audio et vidéo à mettre dans la ligne de commande en spécifiant seulement l'adresse multicast comme fichier d'input (option –i). Par exemple:

ffmpeg -i udp://225.1.1.72:1111

donne, comme resultat:

FFmpeg version xxxxxxx, Copyright (c) 2000-2011
Input #0, mpegts, from 'udp://225.1.1.72:1111':
  Duration: N/A, start: 40159.771933, bitrate: 3681 kb/s
  Program 2001 EuroNews
    Stream #0.0[0x42]: Video: mpeg2video, yuv420p, 720x576 [PAR 64:45 DAR 16:9],
3105 kb/s, 22500 tbr, 90k tbn, 50 tbc
    Stream #0.1[0x44](ger): Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
    Stream #0.2[0x45](eng): Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
    Stream #0.3[0x46](fra): Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
    Stream #0.4[0x47](ita): Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
    Stream #0.5[0x48](spa): Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
    Stream #0.6[0x49](por): Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
    Stream #0.7[0x4a](rus): Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
    Stream #0.8[0x4b](ara): Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
    Stream #0.9[0x4c](tur): Audio: mp2, 48000 Hz, mono, s16, 64 kb/s


Montre que la chaine 225.1.1.72:1111s'appelle « Euronews », elle a une vidéo encodée en mpeg2-ts a 3105 kb/s en format 16/9 et est diffusée avec 9 flux audio mono à 64 kb/s parmi lesquels on a le choix.

Ffmpeg permet aussi de transcoder la vidéo tout en l'enregistrant. Ceci est utile si on veut réduire l'espace utilisé sur le disque ou si on veut créer des versions pour téléphones mobiles, iPod ou video players. Par exemple:

ffmpeg -y -i udp://225.1.2.2:1111 -vcodec libx264 -vpre ultrafast -threads 0 -s 800x450 -b 500k -bt 100k -bufsize 2000k -acodec libfaac -ac 2 -ab 96k Mobile.mp4

Enregistrera France2 (flux audio par default) dans le fichier Mobile.mp4 encodé en h264/aac compatible avec les iPhones et téléphones Android. ATTENTION: dans ce cas, le computer utilisé pour l'enregistrement doit avoir une CPU suffisamment puissante pour faire l'encodage en temps réel (pour cette raison, l'exemple utilise le preset 'ultrafast'). Si pendant l'encodage vous voyez dans le log  le message d'erreur « cyclic buffer overrun » vous devez soit essayer avec un ordinateur plus puissant, soit vous enregistrez seulement le flux original non transcodé que vous transcoderez en différé après l'enregistrement.

Un autre exemple:
ffmpeg -y -i udp://225.1.2.23:1111 -f avi -s 360x288 -r 12.5 -b 300k -vcodec mpeg4 -vtag xvid -acodec libmp3lame -ab 96k -ac 2 Telejournal.avi

Enregistrera France3 (flux audio par default) dans en fichier Telejournal.avi encodé en xvid/mp3 fortement compressé ( 396 kbit/s) compatible avec la plupart des ordinateurs et téléphones.

Une autre possibilité est c'elle d'enregistrer les radios. Dans ce cas, le transcodage en MP3 peut se faire en temps réel sur tout ordinateur.

Bref, votre imagination est la seule limitation que vous avez. Mais ... écrire ces lignes de commandes cryptiques reste quand même un peu compliqué. En plus, ce dont on a besoin c'est un programme qui lance les lignes de commande à un horaire prédéfini et arrête l'enregistrement quand l'émission est terminée. Pour cela, tout programme de « scheduling » peut faire l'affaire. Voilà, comme exemple, le petit programme que j'ai ecrit et qui marche bien chez moi : il lit un fichier de configuration des chaines pour connaitre leurs noms, leurs adresses, leurs canaux audio et vous permet de définir heures et durées d'enregistrement:

(http://178.250.215.74/APIptvRecorder/Fig1.png)
Fig1

Le programme permet de créer des enregistrements récurrents et surtout permet d'enregistrer des chaines différentes simultanément: vous pouvez enregistrer les téléjournaux de TF1, de France 2 et tout le sport sur France 3 en parallèle à 20 heures !

(http://178.250.215.74/APIptvRecorder/Fig2.png)
Fig2

Les audio disponible sont proposés automatiquement :

(http://178.250.215.74/APIptvRecorder/Fig3.png)
Fig3

Et on peut définir autant de profiles d'enregistrement qu'on souhaite (pour créer ses propres profils il faut maitriser les lignes de commandes de ffmpeg et modifier le fichier de configuration):

(http://178.250.215.74/APIptvRecorder/Fig4.png)
Fig4

On prépare ses enregistrements et on retrouve le tout après dans le répertoire des enregistrements :
(http://178.250.215.74/APIptvRecorder/Fig5.png)
Fig5


Reste le problème qu'il faut laisser un PC tout le temps allumé. Dans mon cas, j'ai déjà mon petit serveur qui sert à partager les fichiers et aussi à router TV et internet sur le même réseau LAN interne (voir post http://www.k-net.fr/forum/index.php?topic=556.0). Mais le serveur PC dédié n'a pas d'écran à disposition. Donc, la fonctionnalité du logiciel qui permet de séparer l'interface utilisateur du code qui lance et arrête les enregistrements avec ffmpeg :

(http://178.250.215.74/APIptvRecorder/Fig6.png)
Fig6

Avec cette option on peut simplement faire tourner en permanence sur le serveur le programme qui enregistre et démarrer le programme en mode 'client' sur n'importe quel PC de la maison uniquement quand on veut créer / supprimer / modifier des enregistrements.

Le programme ffmpeg est disponible pour Windows, Linux ou Mac Os. Mon programme d'enregistrement n'est disponible que sous windows. Pour ceux qui veulent l'essayer, on peut le télécharger ici, et l'installer. Il necessite le .Net framework 4 disponible en mise à jour optionnelle sur le site de mise à jour Microsoft 'Windows Update'.

Après l'installation, dans le même répertoire que l'exécutable vous trouverez le fichier TranscodeFormats.ini qui permet de définir les lignes de commandes de ffmpeg et le ChannelDefinition.ini qui contient la définition de toutes les chaines  du réseau SIEA. En modifiant ces fichiers vous pouvez customiser son fonctionnement.

Juste un avertissement: Pour enregistrer les chaines en haute définition, il faut choisir le format 'Native  HD mkv/h264' et choisir le flux audio spécifique ou 'All'. Evitez de choisir 'Defaut' car ffmpeg essaye dans ce cas d'enregistrer aussi les sous-titres sans succès (et vous n'avez aucun enregistrement).

Bonne vision !

Foobar.

Eh béh, gros boulot, bien documenté en tout cas ! :)
Adrien Grelet
Equipe K-Net

Très fort!

Vais l'essayer, pour sûr...
A peu près le même concept que le TV server de Mediaportal - straming multiposte et centralisation des enregistrements...

Le top serait de pouvoir tourner l'appli en service sur le serveur  ;D

très impressionnant !
j'espère seulement que cela ne détournera pas K-Net de l'objectif qui est de fournir un service TV performant c-a-d avec possibilité d'enregistrement au plus vite à ses abonnés, même si ils ne sont pas des spécialistes informatiques (c'est mon cas) et donc ne réussissent pas à se débrouiller en bidoullant une solution par eux-même
la promesse en 2010 était que cette année serait "l'année TV", dépéchez-vous les gars de K-net car l'année se termine dans 1 mois1/2 !
pour l'instant c'est coupures - freeze - pas d'enregistrement
"Je ne suis pas d'accord avec ce que vous dites, mais je me battrai pour que vous ayez le droit de le dire."
Attribué (probablement à tort) à Voltaire

serait-il possible que K-net fasse le point ici sur ou ils en sont de programme d'amélioration de l'offre TV ?
- media center ?
- box qui enregistre ? (et qui freeze pas)
2011 l'année TV ... apparemment c'est raté mais y-a-t-il un calendrier d'implémentation des améliorations pour 2012 ?
merci d'avance
"Je ne suis pas d'accord avec ce que vous dites, mais je me battrai pour que vous ayez le droit de le dire."
Attribué (probablement à tort) à Voltaire

Et bien je ne sais pas comment j'ai loupé ça mais grand merci à foobar pour ce HowTo remarquable ! Je pense que je vais faire des tests dès ce WE :)

Hello messieurs.

Je me demandais si ce genre de pc : http://www.steg-electronics.ch/fr/article/zotac-zbox-id80-plus-376488.aspx
pourrait faire l'affaire pour un HTPC ... ou si c'est trop "haut de gamme" pour faire jukebox vidéo, visionner du HD et la TV knet.

Citation de: Jaco1013 le 25 Avril 2012 à 14:15:08
Hello messieurs.
Je me demandais si ce genre de pc : http://www.steg-electronics.ch/fr/article/zotac-zbox-id80-plus-376488.aspx
pourrait faire l'affaire pour un HTPC ... ou si c'est trop "haut de gamme" pour faire jukebox vidéo, visionner du HD et la TV knet.
Défaut rédhibitoire de mon point de vue: une seule interface RJ45. C'est pas sur la liaison WiFi que l'on va servir du streaming HD ^^

boff moi j'ai un foxconn nt-a3500 (donc plus ou moins la meme chose....) et le wifi suffit amplement pour regarder la tele... (par contre pour l'instant je ne decode pas directement sur le système. Je ne fais que faire passer les flux... mais normalement ca devrait aussi marcher)
Par contre il faut pas que le PC soit trop loin du routeur. Sinon ca va coincer tres vite....


Bonjour,

Je ne possède pas encore le récepteur K-net, et j'aimerais savoir si ce récepteur possède une fonction enregistrement.

Merci par avance

L'enregistrement sera bientôt disponible (quelques semaines encore), il reste un peu de développement à faire et à tester tout ça.

@ Adrien
suite à ton message d'espoir du 9 janvier, peut-on avoir un update sur l'enregistrement
quand ?
cela marchera-t-il avec la box modèle xtv125D que j'ai ?
merci
"Je ne suis pas d'accord avec ce que vous dites, mais je me battrai pour que vous ayez le droit de le dire."
Attribué (probablement à tort) à Voltaire

Ce sera dispo sur ce modèle. Ce n'est pas encore en prod, il y a un peu de retard.

Citation de: Damien le 15 Février 2013 à 11:28:21
Ce sera dispo sur ce modèle. Ce n'est pas encore en prod, il y a un peu de retard.

Bonjour,

Où en est-on maintenant ?

Merci.