Journal Edition simple de fichiers TS sous Linux

Posté par (page perso) . Licence CC by-sa
12
1
nov.
2014

Je présente ici des petits scripts très simples permettant de découper des fichiers d'enregistrement TV, par exemple pour enlever la publicité.

Il existe des outils complexes permettant de faire cela (avidemux,pitivi,openshot,dvbcut), mais ils ont des lourdeurs et des limitations.
Par exemple, dvbcut est limité aux flux SD, et ni lui ni avidemux ne savent gérer les sous-titres.

Ici, on va couper les fichiers à la hache, sans essayer de comprendre le contenu. Le fichier est divisé en bloc de 100000 octets; le principe est de couper les morceaux qui nous intéressent.

L'inconvénient est qu'on a des coupures pas très nettes, l'avantage est qu'on est sûr qu'on ne perd rien.

Commençons par deux scripts basiques: coupebout et regardebout. Le premier permet d'extraire un morceau de vidéo, le second montre quelques secondes à une position donnée.

coupebout fichier_depart bloc_debut bloc_fin fichier_de_sortie

#!/bin/sh
# coupebout
entree=$1
taille=$2
fin=$3<
sortie=$4
c=$((fin - taille + 1))
echo $c
dd if=$entree of=$sortie  ibs=100000 skip=$taille count=$c

regardebout fichier_depart bloc_debut
regardebout fichier_depart bloc_debut nombre_de_blocs
Par défaut, on affiche 30 blocs.

#!/bin/sh
# regardebout
entree=$1
position=$2
if [ $3 -gt 0 ];
then
longueur=$3
else
longueur=30
fi
dd if=$entree ibs=100000 skip=$position count=$longueur | mplayer -

Le deuxième script nécessite d'avoir installé mplayer

Le dernier script, resume-film, est le plus complexe. Il fabrique un fichier avi formé d'images du film numérotées, prises à intervalles régulier.
Par défaut, l'intervalle est de 512 blocs. Par dichotomie, on peut alors trouver assez rapidement l'endroit de la coupure. On peut affiner avec regardebout.

resume-film fichier_depart
resume-film fichier_depart ecart
resume-film fichier_depart ecart bloc_depart bloc_fin

#!/bin/bash
# resume-film

nom=$1

if [ "$2" == "" ]; then
ecart=512
else
ecart=$2
fi

if [ "$4" == "" ]; then
taille=`stat -c "%s" $nom`
fin=$((taille / 100000 - ecart / 2 ))
debut=0
else
debut=$3
fin=$4
fi 
#j'écris hors code une ligne qui apparaît sous une forme étrange quand elle est dans le code:

base=(basename{nom} .ts)

repertoire=`mktemp -d /tmp/$nom.XXXXXX`

longueur=${#fin}
for i in `seq $debut $ecart $fin`
do
dd if=$nom ibs=100000 skip=$i count=50 | mplayer -nosound -frames 1 -vo png:z=9:outdir=$repertoire -
longueurb=${#i}
ii=$i
for q in `seq $longueurb $longueur`
do
ii="0"$ii
done
convert $repertoire/00000001.png -pointsize 50 -fill red -draw "text 70,70 '$i'" -resize 600  $repertoire/thumb-$ii.png
done
mencoder mf://$repertoire/thumb-*.png -mf type=png:fps=4 -ovc lavc -lavcopts vcodec=mpeg4 -oac copy -o $base-resume-$debut-$ecart-$fin.avi
rm -f $repertoire/thumb-*.png
rm -f $repertoire/00000001.png
rmdir $repertoire

Pour que le script fonctionne, il faut avoir installé mplayer, mencoder et imagemagick.

A la fin, on peut simplement concaténer les fichiers avec

cat bout1.ts bout2.ts bout3.ts > film.ts

  • # arg bash

    Posté par (page perso) . Évalué à 5.

    tu sais que tes scripts n'ont pas besoin de #!/bin/bash? un simple #!/bin/sh fonctionnera parfaitement si tu enlève les vilain '==' et que tu les remplace par tu '=' dans les if

    • [^] # Re: arg bash

      Posté par (page perso) . Évalué à 5.

      Ceci dis, comme la plupart des langages ont fait la connerie de prendre = pour l'affection (et non :=), le == pour le test est beaucoup plus parlant. C'est un peu une connerie de plus de l'utiliser à la fois pour l'affection et le test…

      • [^] # Re: arg bash

        Posté par . Évalué à 3.

        Pour l'affection ? :-)

        • [^] # Re: arg bash

          Posté par (page perso) . Évalué à 3.

          Ah ah, trop tard pour corriger ! J'aurais voulu la faire que je n'aurais même pas eu l'idée ;-)

          Bises à toi…

      • [^] # Re: arg bash

        Posté par (page perso) . Évalué à 1.

        Sauf que le == ne fait absoluement pas partie du language shell, il s'agit du programme '[' aka 'test'

        'if' en shell a la syntaxe suivante:

            if "commande/liste de commande"
            then "commande/liste de commande"
            [elif "commande/liste de commande"
            then "commande/liste de commande"] ...
            [else "commande/liste de commande"]
            fi
        

        if ne fait que tester le retour de "commande/liste de commande"

        [/test n'ayant pour unique but que de tester une expresion alors le simple '=' prend son sens puisqu'il ne peut pas faire s'assignation.

        • [^] # Re: arg bash

          Posté par (page perso) . Évalué à 2.

          Je doute que cela soit vrai avec un bash d'aujourd'hui. Bash intègre echo, time… Je suis persuadé qu'il ne lance plus depuis longtemps la commande /usr/bin/test pour faire les tests mais utilise sa version (voir man bash).

          • [^] # Re: arg bash

            Posté par (page perso) . Évalué à 3.

            $ LANG=C type test
            test is a shell builtin

            Par contre, dans help test, il n'est fait aucune mention du support du == (même si ça fonctionne). Contrairement au binaire test qui le supporte (c'est indiqué dans info test).

            « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

  • # MPEG-TS

    Posté par . Évalué à 10. Dernière modification le 01/11/14 à 14:33.

    L'inconvénient est qu'on a des coupures pas très nettes

    L'inconvénient est que tu produis un fichier corrompu, et que les différents lecteurs arriveront plus ou moins bien à le corriger et le lire.

    Déjà, les paquets d'un MPEG-TS sont de 188 octets, en coupant à 100000, qui n'est pas un multiple de 188, tu laisses des bouts de paquets traîner un peu partout.

    Ensuite, les paquets ont des compteurs de continuité par PID, qu'il faudrait resynchroniser, pour éviter qu'il y ait des sauts.

    Et enfin, certaines payloads de plus de 188 octets (moins les quelques octets de header TS, de PID et le checksum) sont fragmentées, et il y a aussi un risque que la coupure sauvage vire uniquement le début ou la fin des fragments.

    • [^] # Re: MPEG-TS

      Posté par (page perso) . Évalué à 2.

      Merci pour ta réponse. Néanmoins, j'aurais besoin de quelques précisions.

      "Déjà, les paquets d'un MPEG-TS sont de 188 octets, en coupant à 100000, qui n'est pas un multiple de 188, tu laisses des bouts de paquets traîner un peu partout."

      Je m'en doute. Mais couper sur un multiple de 188 n'a de l'intérêt que si le fichier enregistré commence au début d'un paquet et s'ils ont tous une longueur 188. Est-ce une hypothèse raisonnable  ?

      Pour le reste, j'imagine que tu as raison, mais concrètement, je ne vois pas bien comment faire.

      • [^] # Re: MPEG-TS

        Posté par . Évalué à 3.

        Un TS enregistré commence forcément sur un début de paquet puisque c'est un format à base de paquets. Bien entendu, si l'on a coupé le fichier à la hache ensuite on ne peut être sûr de rien… mais justement, un paquet commence toujours par un marqueur, un octet avec une valeur que je n'ai plus en tête.

        Donc, tu regardes si tu trouves bien cette valeur, si tu la trouves bien 188 octets plus loin (et n*388 plus loin si tu veux), et là tu peux raisonnablement penser que tu es devant un fichier commençant sur un paquet (et à fortiori tu peux couper juste avant un marqueur).

        Il n'y a pas des paquets de 200 et quelques octets aussi ? Je ne me souviens plus très bien (et j'ai la flemme de chercher).

        La gent féminine, pas la "gente", pas de "e" ! La gent féminine ! Et ça se prononce comme "gens". Pas "jante".

        • [^] # Re: MPEG-TS

          Posté par (page perso) . Évalué à 3.

          Bon, alors suite à tes remarques, j'ai affiné en délégant à mplayer le soin de détecter le début d'un paquet.
          De toutes façons, il est peu vraisemblable que je fasse mieux que mplayer.

          #!/bin/sh
          
          entree=$1
          taille=$2
          fin=$3
          sortie=$4
          c=$((fin - taille + 1))
          d=$((fin +1))
          provisoire=`mktemp  /tmp/$entree$taille.XXXXXX`
          echo $c
          dd if=$entree of=$provisoire  ibs=100000 skip=$taille count=$c 
          dd if=$entree of=$sortie ibs=100000 skip=$d count=50
          a=`mplayer -v -nosound  -frames 1 -vo null $sortie | grep -e "SEEMS A TS" | cut -d " " -f 5 | sed -e "s/,//" `
          echo $a
          frame=`echo $a | cut -d " " -f 1`
          dd if=`{mathjax} sortie  ibs=`((frame -1)) count=1 >> $provisoire
          a=`mplayer -v -nosound  -frames 1 -vo null $provisoire | grep -e "SEEMS A TS" | cut -d " " -f 5 | sed -e "s/,//" `
          echo $a
          frame=`echo $a | cut -d " " -f 1`
          tail -c +$((frame + 1 )) $provisoire > $sortie
          rm -f $provisoire

          (J'ai encore une ligne avec des $ remplacés par des choses bizarres)

          • [^] # Re: MPEG-TS

            Posté par (page perso) . Évalué à 2.

            Il faut remplacer la ligne avec mathjax par

            dd if=$sortie ibs=$frame count=1 >> $provisoire

            Et alors miraculeusement, les fichiers sortis ont une longueur multiple de 188…

            Merci encore pour ton aide.

        • [^] # Re: MPEG-TS

          Posté par (page perso) . Évalué à 7.

          Il n'y a pas des paquets de 200 et quelques octets aussi ?

          188 pour les fichiers TS (le classique)
          4+188=192 pour les fichiers M2TS (Bluray)
          188+16=204 pour les fichiers TSP (certaines captures satellite)

          • [^] # Re: MPEG-TS

            Posté par (page perso) . Évalué à 2.

            Tiens, je vais lâchement profiter d'un fin connaisseur de ces sujets, pourquoi la Freebox me crée des fichiers .m2ts énormes, quand j'enregistre une émission ?

            Pour une durée d'une heure, je dois avoir un fichier de plus d'1 Giga, alors que la qualité n'est pas fantastique.

            If you choose open source because you don't have to pay, but depend on it anyway, you're part of the problem.evloper) February 17, 2014

            • [^] # Re: MPEG-TS

              Posté par . Évalué à 1.

              m2ts ? parce que la freebox v6 a un chipset qui attend un flux blu-ray chiffré et que le dump est effectué après ?
              Pourquoi c'est gros ? parce que probablement l'ensemble des streams sont enregistrés (pas seulement celui visionné).

            • [^] # Re: MPEG-TS

              Posté par (page perso) . Évalué à 9.

              je vais lâchement profiter d'un fin connaisseur de ces sujets,

              Vite fait alors, j'essaye de me sevrer.

              pourquoi la Freebox me crée

              La Freebox ne créé rien, elle copie simplement le flux reçu, à ma connaissance.

              Pour une durée d'une heure, je dois avoir un fichier de plus d'1 Giga,

              Soit 2.4 Mbps, soit pas grand chose, rien de choquant, au contraire c'est plutôt peu pour de la HD.

              alors que la qualité n'est pas fantastique.

              Comparé à?
              C'est sûr que si tu compares à de l'optimisé par x264 en 2 passes avec autorisation de balancer du 10 Mbps en pointe et avoir un distance de 10 secondes entre les images de références, tu dois être déçu : les contraintes techniques (fiabilité de la diffusion, compression temps réel) font que tu diffuses avec une compression en 1 passe (le 20h de TF1 est en direct et n'attend pas que tu scannes toute la durée), débit maxi bref constant de 2.5 Mbps (pour ton cas, j'imagine) sans autoriser de pointe (ben oui, la diffusion temps réel n'aime pas les pointes, ton tuyau est à taille fixe) et un distance entre les images de référence de 0.5 seconde (vaut mieux vu les pertes sur le tuyau).

              Le mieux est de choper à la source (je te rassure, ils stockent en très bonne qualité, pour le futur, ou pour d'autres canaux moins radins) mais les diffuseurs sont assez avares, dommage :).

        • [^] # Re: MPEG-TS

          Posté par . Évalué à 2.

          Un TS enregistré commence forcément sur un début de paquet puisque c'est un format à base de paquets. Bien entendu, si

          Faux. Un enregistrement brut n'a aucune connaissance de la packetisation.
          C'est au lecteur de rechercher la taille des paquets et synchroniser sur le début d'un paquet pour le demultiplexage.

          • [^] # Re: MPEG-TS

            Posté par . Évalué à 2.

            Tu as tout à fait raison, j'ai merdoyé, tout cela est un peu loin.

            La gent féminine, pas la "gente", pas de "e" ! La gent féminine ! Et ça se prononce comme "gens". Pas "jante".

  • # Ma solution

    Posté par . Évalué à 6.

    Ma solution :

    1. Réencapsuler le .ts en .mp4, avec avconv, ffmpeg ou vlc (suivant l’origine, chacun fonctionne plus ou moins bien). Possiblement réencoder le son (eac3 en aac). Le son n’est pas vraiment utile mais j’ai eu des problèmes avec des vidéos sans son.
      Le but est juste d’avoir des timecodes corrects.

    2. Noter les timecodes qui nous intéressent (début/fin du programme et des pubs). Pour ça, j’utilise une petit interface autour de mplayer mais on peut utiliser n’importe quoi, notamment mplayer tout seul (les déplacements y sont simples et la touche . fait l’image par image).

    3. Découper le .ts en tranches avec avconv ou ffmpeg (options -ss et -t, et pas de réencodage -c copy).
      Parfois, il faut jouer avec l’option -map pour virer les flux inutiles (il y en a parfois un : vide et repéré mp1, mp3 ou simplement data, ça dépend des chaînes (M6HD en particulier)).

    4. Concaténer avec avconv ou ffmpeg : ffmpeg -i "concat:part0.ts|part1.ts|part2.ts" -c copy -map 0 -y Final.ts

    Et voilà : un .ts sans pub, avec la VO et les sous-titres.

    • [^] # Re: Ma solution

      Posté par (page perso) . Évalué à 3. Dernière modification le 01/11/14 à 16:16.

      j'avais essayé à une époque d'avoir un script automatique pour virer la pub, mon idée était de trouver les moments où le son monte nettement, après une vingtaine de minutes, mais je n'avais pas réussi.

      Si quelqu'un a une idée, je suis preneur.

      If you choose open source because you don't have to pay, but depend on it anyway, you're part of the problem.evloper) February 17, 2014

      • [^] # Re: Ma solution

        Posté par . Évalué à 2.

        Et les plages noires ou les jingles ? (Oui, encore heureux, en France, il y a des jingles. C’est pas le cas partout.)

        Ça ne devrait pas être trop dur d’avoir un signal dans le flux DVB. Faudrait juste que les chaînes l’envoient…

        • [^] # Re: Ma solution

          Posté par . Évalué à 2.

          J'ai un enregistreur numérique TNT sony.
          J'ai une touche pour passer directement à la fin de la pub. Super pratique.
          Me suis toujours sur quoi il se basait…
          Je supposais que les diffuseurs envoyait des marqueurs à chaque début et fin de pub….
          Il y a donc une solution…

          • [^] # Re: Ma solution

            Posté par . Évalué à 5.

            Après une recherche rapide (p.ex. ), il semble que tout le monde fasse de la détection via logo, frame noire ou un artefact audio (silence ou augmentation du volume).

            Mais on peut voir, p.ex. , que ce n’est pas toujours efficace…

            • [^] # Re: Ma solution

              Posté par (page perso) . Évalué à 2.

              J'imagine qu'on doit aussi pouvoir faire une bdd de toutes les pubs existantes (on sort un hash à partir de l'audio/vidéo). Cela doit pouvoir se faire collaborativement et le logiciel doit aussi être capable de deviner que s'il y a une séquence de moins de 30s entre deux pubs, alors c'est certainement une pub et il peut éventuellement demander confirmation. Après, suffit donc de passer les pubs reconnues.

      • [^] # Re: Ma solution

        Posté par . Évalué à 3. Dernière modification le 02/11/14 à 17:12.

        Je m'étais fait un programme qui fonctionnait bien, à l'époque de la TV analogique.
        Ça fonctionnait sous Windows.
        Je balançais mon enregistrement brut dans Virtualdub, qui, via un petit filtre maison, me détectait la hauteur des bandes noires.
        Ensuite, un autre filtre dans virtualdub, créait un log qui contenait, image par image, la luminosité moyenne, UNIQUEMENT dans la zone des bandes noires.

        Ensuite une petite analyse de ce log faisait ceci :
        - détection d'une image avec bandes noires
        - stockage du numéro de l'image comme début possible d'un tronçon de film
        - poursuite de l'analyse
        - si 5mn d'enregistrement sans détecter d'image pleine (4/3, donc pub)
        - alors le numéro d'image stocké est bel et bien le début d'un tronçon de film.
        - poursuivre jusqu'à la première image pleine (4/3) = fin du tronçon.

        Le tout était automatisé, je programmais la chaîne, les heures de début et de fin, et je laissais faire :
        - Lancement auto du logiciel TV et enregistrement du programme.
        - Passes d'analyse de détection des pubs.
        - Encodage en DivX, avec Virtualdub, des tronçons détectés.
        - Extinction du PC

        Le lendemain, j'avais juste à vérifier mon fichier AVI de 700Mo, avant de le graver.
        Ça fonctionnait presque tout le temps ( sauf perturbations de l'image dues à une mauvaise qualité de réception ).
        Ça a été une de mes rares aventures de programmation, mais ça m'avait passionné.
        Depuis, on est passé au numérique, et je suis revenu à une méthode plus manuelle :
        - enregistrement avec Kaffeine
        - Suppression des pubs avec Avidemux 2.6 -> fichier MKV
        - Encodage avec Handbrake
        Mais, effectivement, les sous-titres sautent au passage dans Avidemux.

    • [^] # Re: Ma solution

      Posté par (page perso) . Évalué à 1.

      Merci pour ta réponse, mais je ne comprends pas comment faire marcher avconv.

      Par exemple, avec

      avconv -ss 2 -i qssq.ts -t 30 -c:v copy -c:a copy -c:s copy -map 0 sortie.ts

      J'obtiens

      avconv version 9.16-6:9.16-0ubuntu0.14.04.1, Copyright (c) 2000-2014 the Libav developers
      built on Aug 10 2014 18:16:02 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
      [h264 @ 0x18ca4e0] non-existing PPS referenced
      [h264 @ 0x18ca4e0] non-existing PPS 0 referenced
      [h264 @ 0x18ca4e0] decode_slice_header error
      [h264 @ 0x18ca4e0] no frame!
      [h264 @ 0x18ca4e0] non-existing PPS referenced
      [h264 @ 0x18ca4e0] non-existing PPS 0 referenced
      [h264 @ 0x18ca4e0] decode_slice_header error
      [h264 @ 0x18ca4e0] no frame!
      [h264 @ 0x18ca4e0] non-existing PPS referenced
      [h264 @ 0x18ca4e0] non-existing PPS 0 referenced
      [h264 @ 0x18ca4e0] decode_slice_header error
      [h264 @ 0x18ca4e0] no frame!
      [h264 @ 0x18ca4e0] mmco: unref short failure
      [mpegts @ 0x18c4fc0] max_analyze_duration reached
      [mpegts @ 0x18c4fc0] PES packet size mismatch
      Last message repeated 1 times
      Input #0, mpegts, from 'qssq.ts':
      Duration: 02:27:00.13, start: 9609.323944, bitrate: 6837 kb/s
      Program 2817
      Stream #0.0[0x78]: Video: h264 (High), yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
      Stream #0.10x82: Audio: eac3, 48000 Hz, 5.1, fltp, 256 kb/s
      Stream #0.20x83: Audio: eac3, 48000 Hz, stereo, fltp, 128 kb/s
      Stream #0.30x84: Audio: eac3, 48000 Hz, stereo, fltp, 128 kb/s
      Stream #0.40x8c: Subtitle: dvbsub (hearing impaired)
      Stream #0.50x8d: Subtitle: dvbsub
      Output #0, mpegts, to 'sortie.ts':
      Metadata:
      encoder : Lavf54.20.4
      Stream #0.0: Video: libx264, yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], q=2-31, 90k tbn, 90k tbc
      Stream #0.1(fra): Audio: eac3, 48000 Hz, 5.1, 256 kb/s
      Stream #0.2(qaa): Audio: eac3, 48000 Hz, stereo, 128 kb/s
      Stream #0.3(qad): Audio: eac3, 48000 Hz, stereo, 128 kb/s
      Stream #0.4(fra): Subtitle: dvbsub (hearing impaired)
      Stream #0.5(fra): Subtitle: dvbsub
      Stream mapping:
      Stream #0:0 -> #0:0 (copy)
      Stream #0:1 -> #0:1 (copy)
      Stream #0:2 -> #0:2 (copy)
      Stream #0:3 -> #0:3 (copy)
      Stream #0:4 -> #0:4 (copy)
      Stream #0:5 -> #0:5 (copy)
      Press ctrl-c to stop encoding
      frame= 719 fps= 0 q=-1.0 Lsize= 21187kB time=26.49 bitrate=6551.3kbits/s

      video:17401kB audio:1870kB global headers:0kB muxing overhead 9.942334%

      Mais le résultat est incorrect: totem et vlc lisent la vidéo, mplayer le son …et personne les sous-titres.

      • [^] # Re: Ma solution

        Posté par . Évalué à 2.

        Essaie avec ffmpeg ou une autre version de avconv et bienvenu dans le monde merveilleux du « parfois, ça tombe en marche »…

  • # fin=$3<

    Posté par (page perso) . Évalué à 2.

    C'est la première fois que je rencontre cette syntaxe :
    fin=$3<
    et je n'arrive pas à la comprendre :< Quelqu'un peut-il venir à mon secours ?

    « Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »

    • [^] # Re: fin=$3<

      Posté par (page perso) . Évalué à 2.

      C'est juste une erreur de saisie, un reste d'une balise html. La bonne ligne est
      fin=$3

      • [^] # Re: fin=$3<

        Posté par (page perso) . Évalué à 10.

        C'est très décevant comme réponse :)

        « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

        • [^] # Re: fin=$3<

          Posté par (page perso) . Évalué à 3.

          je suis le seul à y voir des ciseaux ?

          • [^] # Re: fin=$3<

            Posté par . Évalué à 4.

            Moi je vois une femme avec des gros seins et une coiffure bizarre. J'en parlerai à mon psy demain.

          • [^] # Re: fin=$3<

            Posté par . Évalué à 3.

            8< ?

            8<-----8<-----8<-----8<-----8<-- coupez ici --8<-----8<-----8<-----8<-----

            La gent féminine, pas la "gente", pas de "e" ! La gent féminine ! Et ça se prononce comme "gens". Pas "jante".

  • # ProjectX

    Posté par . Évalué à 4.

    ProjectX, un truc en java pas très connu mais qui marche très bien.
    http://sourceforge.net/projects/project-x/

    • [^] # Re: ProjectX

      Posté par . Évalué à 1.

      Je l'utilise aussi, et effectivement, pour couper les pubs dans les TS, c'est nickel.

      • [^] # Re: ProjectX

        Posté par . Évalué à 2.

        La dernière fois que je l’ai testé (1 ou 2 ans mais il ne semble pas avoir eu de release depuis 2011 (un peu du travail dans le CVS (CVS!!) mais pas de release)), en plus d’une interface fouillis (et de fontes trop petites, merci Java) et franchement pas facile d’accès, il n’a jamais réussi à me démuxer un TS (ni HD ni SD).

        Et, sur la page web du projet ( http://project-x.sourceforge.net/ ), on lit :

        At the moment, Project-X does not include support for H.264 (HD video) content.

        Hum…

  • # VDR et ces plugins.

    Posté par . Évalué à 1.

    Bonjour,

    tu pourrais laisser faire le travail a VDR + noads ?

    -> http://linuxtv.org/vdrwiki/index.php/Noad en mode batch ….

    il y a aussi vdr + markad semble aussi fonctioner http://www.vdr-wiki.de/wiki/index.php/Markad

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.