Strict Standards: Non-static method Flyspray::absoluteURI() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/constants.inc.php on line 29 Strict Standards: Non-static method Flyspray::get_tmp_dir() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/constants.inc.php on line 77 Strict Standards: Non-static method Flyspray::base_version() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/header.php on line 29 Strict Standards: Non-static method Flyspray::base_version() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/header.php on line 29 Strict Standards: Non-static method Req::val() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/header.php on line 39 Strict Standards: Non-static method Req::has() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.gpc.php on line 26 Strict Standards: Non-static method Req::num() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/header.php on line 40 Strict Standards: Non-static method Req::val() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.gpc.php on line 32 Strict Standards: Non-static method Req::has() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.gpc.php on line 26 Strict Standards: Non-static method Filters::num() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.gpc.php on line 32 Strict Standards: Non-static method Req::num() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/header.php on line 42 Strict Standards: Non-static method Req::val() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.gpc.php on line 32 Strict Standards: Non-static method Req::has() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.gpc.php on line 26 Strict Standards: Non-static method Filters::num() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.gpc.php on line 32 Strict Standards: Non-static method Req::enum() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/index.php on line 20 Strict Standards: Non-static method Req::val() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.gpc.php on line 37 Strict Standards: Non-static method Req::has() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.gpc.php on line 26 Strict Standards: Non-static method Filters::enum() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.gpc.php on line 37 Strict Standards: Non-static method Req::has() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/index.php on line 26 Strict Standards: Non-static method Req::has() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/index.php on line 26 Strict Standards: Non-static method Cookie::has() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/index.php on line 33 Strict Standards: Non-static method Get::val() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/index.php on line 41 Strict Standards: Non-static method Get::has() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.gpc.php on line 100 Strict Standards: Non-static method Get::val() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/index.php on line 100 Strict Standards: Non-static method Get::has() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.gpc.php on line 100 Strict Standards: Non-static method Flyspray::requestDuplicated() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/index.php on line 109 Strict Standards: Non-static method Req::has() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/index.php on line 148 Strict Standards: Non-static method Req::num() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/scripts/details.php on line 15 Strict Standards: Non-static method Req::val() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.gpc.php on line 32 Strict Standards: Non-static method Req::has() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.gpc.php on line 26 Strict Standards: Non-static method Filters::num() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.gpc.php on line 32 Strict Standards: Non-static method Flyspray::GetTaskDetails() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/scripts/details.php on line 17 Strict Standards: Non-static method Flyspray::GetAssignees() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.flyspray.php on line 358 Strict Standards: Non-static method Get::val() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/scripts/details.php on line 34 Strict Standards: Non-static method Get::has() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.gpc.php on line 100 Strict Standards: Non-static method Post::has() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/scripts/details.php on line 34 Strict Standards: Non-static method TextFormatter::render() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/scripts/details.php on line 128 FS#58 : Ajout d'un transcodage DNxHD pour la gestion de l'AVCHD dans EKD

EKD

Welcome on the EKD bug report site.
Liste des tâches

FS#58 - Ajout d'un transcodage DNxHD pour la gestion de l'AVCHD dans EKD

Concerne le projet: EKD
Ouverte par Strict Standards: array_map() expects parameter 1 to be a valid callback, non-static method Filters::noXSS() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.tpl.php on line 281 Angelo (ekd) - Strict Standards: Non-static method Filters::noXSS() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.tpl.php on line 613 mercredi, 11 août 2010, 23:36 GMT
Dernière édition par Angelo (ekd) - Strict Standards: Non-static method Filters::noXSS() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.tpl.php on line 613 samedi, 21 avril 2012, 18:33 GMT
Type de tâche Feature Request
Catégorie Video engine
Etat Closed
Assignée à Angelo (ekd)
Système d'exploitation All
Sévérité Haute
Priorité Haute
Basée sur la version 3.1.0
Due pour la version Non décidé
Date d'échéance Non décidé
Pourcentage achevé: 100%
Votes 0
Privée Non

Détails

Salut les gars,

Donc voilà il faudrait ajouter la gestion du DNxHD pour le transcodage en sortie et ce pour l'AVCHD dans EKD.

En fait il s'agit d'une conversation entre Julien et moi sur la liste lprod (et dans le sujet: [fr] problème de pré encodage).

Dans ces différents dialogues Julien nous expose ce qu'est exactement le DNxHD ... et comment il serait bon qu'il soit mis en place dans EKD.

Attention nos différents entretiens sont longs, je vais essayer de les dispatcher dans ici dans différents blocs pour que ce soit plus lisible.

Il va falloir qu'on en dégage les choses importantes et ce qu'il y aura à mettre en place pour la sortie: DNxHD (.mov) ... et les différentes conditions de réglage (donc par exemple une liste déroulante Sortie du flux audio --> contenant 4 réglages différents) qui ne sera visible qu'en cas de choix par l'utilisateur du DNxHD (.mov).

Donc voilà, c'est parti !

*** Le 14/08/10 j'ai fini l'intégration du DNxHD pour l'AVCHD dans EKD ... il reste à tester à fond (les qques tests que j'ai faits fonctionnent bien). Je vais demander des tests à ce sujet sur la lste lprod, et je vais écrire un article là-dessus sur le blog d'EKD.
Cette tâche dépend de

Commentaire de Angelo (ekd) - Strict Standards: Non-static method Filters::noXSS() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.tpl.php on line 613 mercredi, 11 août 2010, 23:38 GMT
Premier entretient (là Julien répond à Romain, mais je ne vais pas manquer de me glisser dans la discussion !):

> salut à tous,
>
> j'ai des vidéos de vacances au format AVCHD. j'ai utilisé EKD pour faire
> un pré encodage avant de faire un montage. mais la qualité de la vidéo
> ne me plait pas.
> en fait la vidéo est pixelisée lorsque le caméraman bouge la caméra.
> j'aurais voulu savoir si cela vient de l'encodage ou des fichiers vidéo
> eux-mêmes.
>
> amicalement
> Romain

Si ta source AVCHD n'est pas pixelisée, alors le problème de pixellisation vient forcément de l'encodage (pas des éventuelles bières bues par le cameraman, il n'y est pour rien le pauvre...).

Apparemment tu as encodé tes vidéos en mpeg4 avec EKD, or le mpeg4 engendre des pertes de qualité assez importantes (trop à mon sens).

Pour du montage en HD, je te conseille plutôt d'encoder tes vidéos en DNxHD. C'est un format spécialement conçu pour le montage HD par Avid (le n°1 des logiciels de montage pro). Il a de multiples avantages : très faible perte de qualité d'image, montage précis à l'image près sans trop de calcul par le logiciel, etc., tout cela au prix d'une compression assez faible (càd qu'il génère des fichiers nettement plus gros que ta source AVCHD, donc il faut disposer de place sur le disque). Avid en a rendu les spécifications publiques et le support du DNxHD a donc pu être ajouté à ffmpeg il y a déjà quelques temps. Il est très bien supporté par cinelerra, kdenlive et sans doute d'autres logiciels de montage.

Deux exemples de commandes (à adapter) pour convertir ta source vidéo en DNxHD dans un conteneur MOV, sans piste son :
* Conversion en en DNxHD 185 (1080p à 25 images/s) :
ffmpeg -i <source> -s 1920x1080 -r 25 -b 185000k -vcodec dnxhd -an <sortie.mov>
* Conversion en DNxHD 90 (720p à 25 images/s) :
ffmpeg -i <source> -s 1280x720 -r 25 -b 90000k -vcodec dnxhd -an <sortie.mov>

Pour tout savoir sur les différents "modes" du DNxHD (selon la taille de l'image, le nombre d'images par seconde, l'entrelacement ou pas), voir la page 9 de ce doc sur le site d'Avid : http://www.avid.fr/resources/whitepapers/dnxhd.pdf

Cerise sur le gâteau, kdenlive propose un menu graphique pour transcoder les vidéos en DNxHD : ajouter un clip au projet puis clic droit -> "Convertir".
On peut facilement s'inspirer des paramètres ffmpeg utilisés par kdenlive, disponibles dans le menu Configuration -> onglet "Convertir". Les développeurs d'EKD, s'ils le souhaitent, pourront ainsi facilement ajouter quelques options à leur menu "Gestion AVCHD"...

Julien
Commentaire de Angelo (ekd) - Strict Standards: Non-static method Filters::noXSS() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.tpl.php on line 613 mercredi, 11 août 2010, 23:40 GMT
Là j'interviens:

Salut Julien,

> Si ta source AVCHD n'est pas pixelisée, alors le problème de pixellisation vient forcément de l'encodage (pas des éventuelles bières bues par le cameraman, il n'y est pour rien le pauvre...).

Je plaisantais bien sûr ;).

> Apparemment tu as encodé tes vidéos en mpeg4 avec EKD, or le mpeg4 engendre des pertes de qualité assez importantes (trop à mon sens).
>
> Pour du montage en HD, je te conseille plutôt d'encoder tes vidéos en DNxHD. C'est un format spécialement conçu pour le montage HD par Avid (le n°1 des logiciels de montage pro). Il a de multiples avantages : très faible perte de qualité d'image, montage précis à l'image près sans trop de calcul par le logiciel, etc., tout cela au prix d'une compression assez faible (càd qu'il génère des fichiers nettement plus gros que ta source AVCHD, donc il faut disposer de place sur le disque). Avid en a rendu les spécifications publiques et le support du DNxHD a donc pu être ajouté à ffmpeg il y a déjà quelques temps. Il est très bien supporté par cinelerra, kdenlive et sans doute d'autres logiciels de montage.
>
> Deux exemples de commandes (à adapter) pour convertir ta source vidéo en DNxHD dans un conteneur MOV, sans piste son :
> * Conversion en en DNxHD 185 (1080p à 25 images/s) :
> ffmpeg -i <source> -s 1920x1080 -r 25 -b 185000k -vcodec dnxhd -an <sortie.mov>
> * Conversion en DNxHD 90 (720p à 25 images/s) :
> ffmpeg -i <source> -s 1280x720 -r 25 -b 90000k -vcodec dnxhd -an <sortie.mov>

Tout ça m'intéresse aussi particulièrement car ça fait un moment que
je veux intégrer le DNxHD dans EKD.

Par rapport à ça je voudrais savoir exactement (si jamais tu sais)
dans quelle version de FFmpeg le DNxHD a été intégré ? (est-ce que tu
saurais par hasard ?)

Autrement quand on a une piste audio, pour le transcodage quel est le
codec à ajouter après -acodec ... ?, quelle est la norme pour le DNxHD
?, est-ce qu'il y a une norme au niveau du codec audio ?

Dès que j'aurais ces réponses, je pourrais commencer une intégration
du transcodage en DNxHD dans EKD.

> Pour tout savoir sur les différents "modes" du DNxHD (selon la taille de l'image, le nombre d'images par seconde, l'entrelacement ou pas), voir la page 9 de ce doc sur le site d'Avid : http://www.avid.fr/resources/whitepapers/dnxhd.pdf

Je vais aller voir aussi. Il y a des spécificités précises selon le
framerate de la vidéo source ?, et selon la taille de l'image dans la
vidéo ?

Est-ce que par exemple le transcodage des vidéos dont le framerate est
inférieur à 20 img/sec est possible ?, et que dire de la taille des
images de la source ?, est-ce qu'il y a un ratio à respecter ?,
faut-il vraiment redimensionner l'image à la sortie ?

Question pour tout le monde ici, est-ce qu'un transcodage en DNxHD
(1080p) et un autre en DNxHD (720p) vous intéresserait dans EKD ?

Julien est qu'un transcodage en 1440x1080 est possible avec le DNxHD,
de même est-ce qu'un transcodage en 720x576 est possible ? Si oui
quelle est le nom a leur donner ? (par exemple pour le 1280x720 c'est
720p).

> Cerise sur le gâteau, kdenlive propose un menu graphique pour transcoder les vidéos en DNxHD : ajouter un clip au projet puis clic droit -> "Convertir".
> On peut facilement s'inspirer des paramètres ffmpeg utilisés par kdenlive, disponibles dans le menu Configuration -> onglet "Convertir". Les développeurs d'EKD, s'ils le souhaitent, pourront ainsi facilement ajouter quelques options à leur menu "Gestion AVCHD"...

J'attend tes réponses par rapport à ça Julien, je ne pourrais
commencer le boulot dans EKD qu'en ayant des réponses à toutes mes
questions posées ici (et bien sûr quand j'aurais un peu de temps).

> Julien

a+

Angelo
Commentaire de Angelo (ekd) - Strict Standards: Non-static method Filters::noXSS() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.tpl.php on line 613 mercredi, 11 août 2010, 23:45 GMT
Réponse de Julien:

> Salut Julien,

Salut Angelo

> Je plaisantais bien sûr ;).

> Tout ça m'intéresse aussi particulièrement car ça fait un moment que
> je veux intégrer le DNxHD dans EKD.
>
> Par rapport à ça je voudrais savoir exactement (si jamais tu sais)
> dans quelle version de FFmpeg le DNxHD a été intégré ? (est-ce que tu
> saurais par hasard ?)

D'après le changelog de ffmpeg (http://www.ffmpeg.org/changelog.html) le support du DNxHD date de la version 0.5 (mars 2009), mais j'ignore quand il a été ajouté dans le SVN.

> Autrement quand on a une piste audio, pour le transcodage quel est le
> codec à ajouter après -acodec ... ?, quelle est la norme pour le DNxHD
> ?, est-ce qu'il y a une norme au niveau du codec audio ?

Il me semble qu'on peut utiliser tous les codecs supportés par ffmpeg à condition qu'ils puissent être écrits et lus dans un conteneur MOV. Souvent le plus simple est de copier le flux audio d'origine avec '-acodec copy'. Dans mon cas, ça fonctionne parfaitement pour copier le flux audio AC3 sur 6 canaux (5.1) produit par mon caméscope.
Cependant, pour une raison que j'ignore, cinelerra considère ces 6 canaux comme muets, alors qu'ils peuvent être lus sans problème par mplayer, kdenlive, etc. Par contre si je me contente de copier (démultiplexer) le flux audio AC3 tel quel, cinelerra l'accepte sans problème. Je suppose que c'est un bug de cinelerra, mais c'est pourquoi j'ai pris l'habitude de séparer l'audio de la vidéo quand je transcode en DNxHD.
Dans l'optique d'un transcodage par EKD, je crois qu'il serait bon de ne pas "imposer" un seul format audio mais de laisser un minimum de choix, ne serait-ce qu'entre les possibilités suivantes :
- copie du flux audio tel quel ('-acodec copy')
- pas de flux audio ('-an')
- flux audio PCM sur 2 canaux (stéréo)
- flux audio PCM sur 6 canaux (5.1)
C'est la norme AVCHD elle-même qui permet l'utilisation de 2 ou 6 canaux. Beaucoup de caméscopes laissent le choix entre l'un et l'autre dans leur menu.

> Dès que j'aurais ces réponses, je pourrais commencer une intégration
> du transcodage en DNxHD dans EKD.

> Je vais aller voir aussi. Il y a des spécificités précises selon le
> framerate de la vidéo source ?, et selon la taille de l'image dans la
> vidéo ?
>
> Est-ce que par exemple le transcodage des vidéos dont le framerate est
> inférieur à 20 img/sec est possible ?, et que dire de la taille des
> images de la source ?, est-ce qu'il y a un ratio à respecter ?,
> faut-il vraiment redimensionner l'image à la sortie ?
>
> Question pour tout le monde ici, est-ce qu'un transcodage en DNxHD
> (1080p) et un autre en DNxHD (720p) vous intéresserait dans EKD ?
>
> Julien est qu'un transcodage en 1440x1080 est possible avec le DNxHD,
> de même est-ce qu'un transcodage en 720x576 est possible ? Si oui
> quelle est le nom a leur donner ? (par exemple pour le 1280x720 c'est
> 720p).

D'après la doc dispo sur le site d'Avid, il semble que seules certaines combinaisons de taille d'image et de framerate soient possibles avec le format DNxHD :
- format d'image : 1080i, 1080p ou 720p
- nombre d'images / seconde : 23.976, 24, 25, 29.97, 50 ou 59.94
Cela couvre les besoins "normaux" en HD. Pour travailler en SD (720x576) il faut utiliser autre chose que du DNxHD, par exemple du DV. Je n'ai pas essayé d'autres combinaisons que celles indiquées dans la doc d'Avid.
Deux derniers points à noter :
- ffmpeg ne supporte pas les vidéos sur 10 bits / composante donc pas moyen d'utiliser les variantes du DNxHD marquées d'un "x". Mais avec du matériel grand public le problème ne se pose pas.
- Il me semble que certaines options de ffmpeg doivent permettre d'améliorer un peu la qualité du transcodage au prix d'un temps de calcul plus long (mais c'est à vérifier). Je pense particulièrement à '-mbd' ("macroblock decision") et surtout aux différents algorithmes de mise à l'échelle ('-sws_flags') qui seront utilisés en cas de redimensionnement 1080 -> 720. Là il y a un choix à faire dans EKD entre la simplicité d'utilisation (imposer l'algorithme par défaut de ffmpeg) ou donner plusieurs choix à l'utilisateur.

Les développeurs d'EKD, s'ils le souhaitent, pourront ainsi facilement ajouter quelques options à leur menu "Gestion AVCHD"...

> J'attend tes réponses par rapport à ça Julien, je ne pourrais
> commencer le boulot dans EKD qu'en ayant des réponses à toutes mes
> questions posées ici (et bien sûr quand j'aurais un peu de temps).

> a+
>
> Angelo

En espérant que ça aide...

Julien
Commentaire de Angelo (ekd) - Strict Standards: Non-static method Filters::noXSS() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.tpl.php on line 613 mercredi, 11 août 2010, 23:49 GMT
Ma dernière intervention pour l'instant (le 12 août à 01:22).

Oulàlà elle est longue ma réponse (mais il y a des choses importantes selon moi):

> Salut Angelo

Salut Julien,

> D'après le changelog de ffmpeg (http://www.ffmpeg.org/changelog.html) le support du DNxHD date de la version 0.5 (mars 2009), mais j'ignore quand il a été ajouté dans le SVN.

Il va falloir que tu lises mon message jusqu'au bout, et il est très
très long !!! ... que tu lises tout et que tout répondes avec
précision ... voilà ta pénitence ! ;). Ah oui, il va falloir que tu
t'y retrouves (en lisant ma réponse) entre ce que j'ai écrit et les
retours de FFmpeg (pour mes différents essais).

Julien peux-tu essayer d'être très méticuleux dans ta réponse, en
mettant des points comme je le fais là moi-même, car je vais
copier/coller notre conversation dans le bugtracker d'EKD (ça va
forcément nous aider à intégrer correctement le DNxHD pour l'AVCHD)
... merci d'avance !

Voilà, on y va !

Ah ok, il faudrait quand même la version SVN en question.

> Il me semble qu'on peut utiliser tous les codecs supportés par ffmpeg à condition qu'ils puissent être écrits et lus dans un conteneur MOV. Souvent le plus simple est de copier le flux audio d'origine avec '-acodec copy'. Dans mon cas, ça fonctionne parfaitement pour copier le flux audio AC3 sur 6 canaux (5.1) produit par mon caméscope.
> Cependant, pour une raison que j'ignore, cinelerra considère ces 6 canaux comme muets, alors qu'ils peuvent être lus sans problème par mplayer, kdenlive, etc. Par contre si je me contente de copier (démultiplexer) le flux audio AC3 tel quel, cinelerra l'accepte sans problème. Je suppose que c'est un bug de cinelerra, mais c'est pourquoi j'ai pris l'habitude de séparer l'audio de la vidéo quand je transcode en DNxHD.
> Dans l'optique d'un transcodage par EKD, je crois qu'il serait bon de ne pas "imposer" un seul format audio mais de laisser un minimum de choix, ne serait-ce qu'entre les possibilités suivantes :
> - copie du flux audio tel quel ('-acodec copy')
> - pas de flux audio ('-an')
> - flux audio PCM sur 2 canaux (stéréo)
> - flux audio PCM sur 6 canaux (5.1)
> C'est la norme AVCHD elle-même qui permet l'utilisation de 2 ou 6 canaux. Beaucoup de caméscopes laissent le choix entre l'un et l'autre dans leur menu.

Tout d'abord ça roule, EKD utilise FFmpeg au niveau de la gestion de
l'AVCHD donc là ça va.

Ok merci pour ces précieuses. informations sur par exemple le
conteneur MOV pour le DNxHD (et extension .mov à l'arrivée).

Pour ce qui est du l'audio ça se complique, il faudrait donc rajouter
un champ de réglage supplémentaire uniquement pour la gestion de la
sortie DNxHD ... bon ça c'est gérable ... mais dans EKD --> dans la
partie vidéo je gère plus le côté moteur ... et Aurélien la partie
interface (quoiqu'à certains moments je peux aussi gérer un peu la
partie GUI). Aurélien est très pris par son boulot en ce moment, ça va
donc être chaud. Je demanderais aussi à Olivier (mais il est
actuellement en vacances) de voir ce qu'on peut faire ...

Donc dans l'absolu si on intègre le support du DNxHD pour l'AVCHD dans
EKD, il faudrait rajouter un champ de réglage pour la sortie audio,
c'est bien ça ?

Si oui c'est possible en faisant en sorte que dès que l'utilisateur
aura choisi DNxHD (.mov) dans la liste déroulante pour Encodage sortie
vidéo, on ait un 5ème réglage (qui n'apparaîtrait que pour le DNxHD)
... et qui serait:

--> Sortie audio

... et qui contiendrait:

* Copie du flux audio
* Pas de flux audio
* Flux audio PCM sur 2 canaux (stéréo)
* Flux audio PCM sur 6 canaux (5.1)

Autant je connais la syntaxe FFmpeg pour la sortie audio pour:

--> Copie du flux audio -> c'est '-acodec copy'
--> Pas de flux audio --> c'est '-an'

... mais pour Flux audio PCM sur 2 canaux (stéréo) et Flux audio PCM
sur 6 canaux (5.1) ... il faudrait que tu me donnes la syntaxe exacte
de FFmpeg au niveau de '-acodec ...'. Là pour l'instant je ne vois
pas. Il faudrait aussi savoir si la syntaxe que tu vas me donner est
compatible avec les anciennes versions de FFmpeg (on va dire depuis
que l'AVCHD est géré complètement dans FFmpeg ... il me semble depuis
environ avril-mai 2009).

> D'après la doc dispo sur le site d'Avid, il semble que seules certaines combinaisons de taille d'image et de framerate soient possibles avec le format DNxHD :
> - format d'image : 1080i, 1080p ou 720p

Je viens de faire des tests avec un fichier AVCHD ... et là j'ai
vérifié que le 720x576 et le 1440x1080 ne fonctionnent pas en sortie
pour le DNxHD ... il va donc falloir qu'on exclue ces dimensions en
sortie (et ce pour l'utilisateur) dans le réglage:

Résolution sortie

> - nombre d'images / seconde : 23.976, 24, 25, 29.97, 50 ou 59.94

Tu dis que le nombre d'image par seconde peut se faire uniquement avec
ces réglages pour le DNxHD à partir d'un fichier AVCHD ?

--> C'est bizarre car je viens de tester chez moi avec un fichier
AVCHD que j'ai récupéré je ne sais plus où (je n'ai pas de caméra
AVCHD moi-même) ... et j'ai mis les paramètres '-r 25', '-r 10' et
même '-r 3' et ça passe sans problème !

Tu verras tous mes essais à la fin de ce message.

Il faut savoir que pour la gestion de l'AVCHD l'utilisateur à accès au
réglage 'Nombre d'images/secondes (entre 2 et 60)', sauf s'il choisit
le MPEG1 ou le MPEG2 pour le réglage 'Encodage sortie vidéo' ... dans
ces 2 cas bien précis ce dernier réglage devient invisible et le
transcodage se fait avec 25 img/sec.

> Cela couvre les besoins "normaux" en HD. Pour travailler en SD (720x576) il faut utiliser autre chose que du DNxHD, par exemple du DV. Je n'ai pas essayé d'autres combinaisons que celles indiquées dans la doc d'Avid.

Oui ça j'ai vérifié.

> Deux derniers points à noter :
> - ffmpeg ne supporte pas les vidéos sur 10 bits / composante donc pas moyen d'utiliser les variantes du DNxHD marquées d'un "x". Mais avec du matériel grand public le problème ne se pose pas.

Là il faut que tu expliques (je ne pige pas), donne des exemples.

> - Il me semble que certaines options de ffmpeg doivent permettre d'améliorer un peu la qualité du transcodage au prix d'un temps de calcul plus long (mais c'est à vérifier). Je pense particulièrement à '-mbd' ("macroblock decision") et surtout aux différents algorithmes de mise à l'échelle ('-sws_flags') qui seront utilisés en cas de redimensionnement 1080 -> 720. Là il y a un choix à faire dans EKD entre la simplicité d'utilisation (imposer l'algorithme par défaut de ffmpeg) ou donner plusieurs choix à l'utilisateur.

EKD c'est la simplicité ... et je ne suis pas pour rajouter ce genre
d'option. Faisons dans la simplicité.

> En espérant que ça aide...

Ah ben oui que ça aide !

Bon voilà mes essais:

* 1er essai (avec simplement copie du flux audio et un framerate de 25):

angelo@kubuntu-1:~/film_MTS$ ffmpeg -i 00080.mts -s 1280x720 -r 25 -b
90000k -vcodec dnxhd -acodec copy
z_AVCHD_vers_DNxHD_1280x720_acodec_copy_001.mov
FFmpeg version SVN-r19352-4:0.5+svn20090706-2ubuntu2.2, Copyright (c)
2000-2009 Fabrice Bellard, et al.
configuration: --extra-version=4:0.5+svn20090706-2ubuntu2.2
--prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau
--enable-bzlib --enable-libgsm --enable-libschroedinger
--enable-libspeex --enable-libtheora --enable-libvorbis
--enable-pthreads --enable-zlib --disable-stripping --disable-vhook
--enable-gpl --enable-postproc --enable-swscale --enable-x11grab
--enable-libdc1394
--extra-cflags=-I/build/buildd/ffmpeg-0.5+svn20090706/debian/include
--enable-shared --disable-static
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 0 / 52.20. 0
libavformat 52.31. 0 / 52.31. 0
libavdevice 52. 1. 0 / 52. 1. 0
libavfilter 0. 4. 0 / 0. 4. 0
libswscale 0. 7. 1 / 0. 7. 1
libpostproc 51. 2. 0 / 51. 2. 0
built on Apr 23 2010 15:38:06, gcc: 4.4.1
Input #0, mpegts, from '00080.mts':
Duration: 00:00:07.81, start: 1.000067, bitrate: 16199 kb/s
Program 1
Stream #0.0[0x1011]: Video: h264, yuv420p, 1440x1080 [PAR 4:3 DAR
16:9], 50 tbr, 90k tbn, 50 tbc
Stream #0.1[0x1100]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
Output #0, mov, to 'z_AVCHD_vers_DNxHD_1280x720_acodec_copy_001.mov':
Stream #0.0: Video: dnxhd, yuv422p, 1280x720 [PAR 1:1 DAR 16:9],
q=2-31, 90000 kb/s, 90k tbn, 25 tbc
Stream #0.1: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press [q] to stop encoding
[h264 @ 0x25ef450]missing picture in access unit.05
bitrate=92092.6kbits/s
frame= 195 fps= 13 q=1.0 Lsize= 87790kB time=7.80
bitrate=92202.0kbits/s
video:87360kB audio:427kB global headers:0kB muxing overhead 0.003442%


* 2ème essai (framerate de 10 ... et ça fonctionne parfaitement !):

angelo@kubuntu-1:~/film_MTS$ ffmpeg -i 00080.mts -s 1280x720 -r 10 -b
90000k -vcodec dnxhd -acodec copy
z_AVCHD_vers_DNxHD_1280x720_r_10_acodec_copy_001.mov
FFmpeg version SVN-r19352-4:0.5+svn20090706-2ubuntu2.2, Copyright (c)
2000-2009 Fabrice Bellard, et al.
configuration: --extra-version=4:0.5+svn20090706-2ubuntu2.2
--prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau
--enable-bzlib --enable-libgsm --enable-libschroedinger
--enable-libspeex --enable-libtheora --enable-libvorbis
--enable-pthreads --enable-zlib --disable-stripping --disable-vhook
--enable-gpl --enable-postproc --enable-swscale --enable-x11grab
--enable-libdc1394
--extra-cflags=-I/build/buildd/ffmpeg-0.5+svn20090706/debian/include
--enable-shared --disable-static
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 0 / 52.20. 0
libavformat 52.31. 0 / 52.31. 0
libavdevice 52. 1. 0 / 52. 1. 0
libavfilter 0. 4. 0 / 0. 4. 0
libswscale 0. 7. 1 / 0. 7. 1
libpostproc 51. 2. 0 / 51. 2. 0
built on Apr 23 2010 15:38:06, gcc: 4.4.1
Input #0, mpegts, from '00080.mts':
Duration: 00:00:07.81, start: 1.000067, bitrate: 16199 kb/s
Program 1
Stream #0.0[0x1011]: Video: h264, yuv420p, 1440x1080 [PAR 4:3 DAR
16:9], 50 tbr, 90k tbn, 50 tbc
Stream #0.1[0x1100]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
Output #0, mov, to
'z_AVCHD_vers_DNxHD_1280x720_r_10_acodec_copy_001.mov':
Stream #0.0: Video: dnxhd, yuv422p, 1280x720 [PAR 1:1 DAR 16:9],
q=2-31, 90000 kb/s, 90k tbn, 10 tbc
Stream #0.1: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press [q] to stop encoding
[h264 @ 0x11de450]missing picture in access unit.85
bitrate=37387.6kbits/s
frame= 79 fps= 8 q=1.0 Lsize= 35822kB time=7.85
bitrate=37392.0kbits/s
video:35392kB audio:427kB global headers:0kB muxing overhead 0.007170%


* 3ème essai (effectivement le 1440x1080 ça fonctionne pas ! -->
pareil pour le 720x576):

angelo@kubuntu-1:~/film_MTS$ ffmpeg -i 00080.mts -s 1440x1080 -r 10 -b
90000k -vcodec dnxhd -acodec copy
z_AVCHD_vers_DNxHD_1440x1080_r_10_acodec_copy_001.mov
FFmpeg version SVN-r19352-4:0.5+svn20090706-2ubuntu2.2, Copyright (c)
2000-2009 Fabrice Bellard, et al.
configuration: --extra-version=4:0.5+svn20090706-2ubuntu2.2
--prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau
--enable-bzlib --enable-libgsm --enable-libschroedinger
--enable-libspeex --enable-libtheora --enable-libvorbis
--enable-pthreads --enable-zlib --disable-stripping --disable-vhook
--enable-gpl --enable-postproc --enable-swscale --enable-x11grab
--enable-libdc1394
--extra-cflags=-I/build/buildd/ffmpeg-0.5+svn20090706/debian/include
--enable-shared --disable-static
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 0 / 52.20. 0
libavformat 52.31. 0 / 52.31. 0
libavdevice 52. 1. 0 / 52. 1. 0
libavfilter 0. 4. 0 / 0. 4. 0
libswscale 0. 7. 1 / 0. 7. 1
libpostproc 51. 2. 0 / 51. 2. 0
built on Apr 23 2010 15:38:06, gcc: 4.4.1
Input #0, mpegts, from '00080.mts':
Duration: 00:00:07.81, start: 1.000067, bitrate: 16199 kb/s
Program 1
Stream #0.0[0x1011]: Video: h264, yuv420p, 1440x1080 [PAR 4:3 DAR
16:9], 50 tbr, 90k tbn, 50 tbc
Stream #0.1[0x1100]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
Output #0, mov, to
'z_AVCHD_vers_DNxHD_1440x1080_r_10_acodec_copy_001.mov':
Stream #0.0: Video: dnxhd, yuv422p, 1440x1080 [PAR 4:3 DAR 16:9],
q=2-31, 90000 kb/s, 90k tbn, 10 tbc
Stream #0.1: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
[dnxhd @ 0x15d28d0]video parameters incompatible with DNxHD
Error while opening codec for output stream #0.0 - maybe incorrect
parameters such as bit_rate, rate, width or height


* 4ème essai (là j'ai intégré le paramètre -qscale [qui sert à définir
la qualité] ... et ça fonctionne !, tu remarqueras aussi que le
framerate est défini à 3 !!!, et ça fonctionne aussi sans ourciller
!):

angelo@kubuntu-1:~/film_MTS$ ffmpeg -i 00080.mts -s 1280x720 -r 3 -b
90000k -vcodec dnxhd -acodec copy -qscale 10
z_AVCHD_vers_DNxHD_1280x720_r_3_acodec_copy_qscale_10_001.mov
FFmpeg version SVN-r19352-4:0.5+svn20090706-2ubuntu2.2, Copyright (c)
2000-2009 Fabrice Bellard, et al.
configuration: --extra-version=4:0.5+svn20090706-2ubuntu2.2
--prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau
--enable-bzlib --enable-libgsm --enable-libschroedinger
--enable-libspeex --enable-libtheora --enable-libvorbis
--enable-pthreads --enable-zlib --disable-stripping --disable-vhook
--enable-gpl --enable-postproc --enable-swscale --enable-x11grab
--enable-libdc1394
--extra-cflags=-I/build/buildd/ffmpeg-0.5+svn20090706/debian/include
--enable-shared --disable-static
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 0 / 52.20. 0
libavformat 52.31. 0 / 52.31. 0
libavdevice 52. 1. 0 / 52. 1. 0
libavfilter 0. 4. 0 / 0. 4. 0
libswscale 0. 7. 1 / 0. 7. 1
libpostproc 51. 2. 0 / 51. 2. 0
built on Apr 23 2010 15:38:06, gcc: 4.4.1
Input #0, mpegts, from '00080.mts':
Duration: 00:00:07.81, start: 1.000067, bitrate: 16199 kb/s
Program 1
Stream #0.0[0x1011]: Video: h264, yuv420p, 1440x1080 [PAR 4:3 DAR
16:9], 50 tbr, 90k tbn, 50 tbc
Stream #0.1[0x1100]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
Output #0, mov, to
'z_AVCHD_vers_DNxHD_1280x720_r_3_acodec_copy_qscale_10_001.mov':
Stream #0.0: Video: dnxhd, yuv422p, 1280x720 [PAR 1:1 DAR 16:9],
q=2-31, 90000 kb/s, 90k tbn, 3 tbc
Stream #0.1: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press [q] to stop encoding
[h264 @ 0x8ad450]missing picture in access unit6.95 bitrate=11531.6kbits/s
frame= 24 fps= 3 q=1.0 Lsize= 11181kB time=7.85 bitrate=11671.6kbits/s
video:10752kB audio:427kB global headers:0kB muxing overhead 0.021053%


Bon voilà pour finir il faut savoir que le paramètre '-qscale ...' est
réglabe (entre 1 et 31) dans EKD et ce pour tous les réglages
'Encodage sortie vidéo' pour la gestion de l'AVCHD. J'aimerais que çe
soit pareil pour la gestion du DNxHD.

Voilà comment se fait la gestion de l'AVCHD dans EKD, tu y verras
notamment l'onglet Réglages (il s'agit d'un article que j'avais fait à
l'époque sur le blog d'EKD):

http://ekdm.wordpress.com/2009/11/09/gestion-de-lavchd-dans-ekd

Là tu verras le code python de la partie moteur pour la gestion de
l'AVCHD dans EKD (et notamment les paramètres définis pour chaque cas
--> codec géré) ==> voir dans la fonction run (--> le bloc faisant
partie de def run(self):):

http://svn.tuxfamily.org/viewvc.cgi/ekdforum_ekd/trunk/moteur_modules_animation/ffmpeg_avchd.py?view=markup

Donc j'attend tes réponses complètes par rapport à tout ça (notamment
pour toutes mes questions persistantes concernant le DNxHD et son
intégration dans EKD).

> Julien

a+

Angelo
Commentaire de Angelo (ekd) - Strict Standards: Non-static method Filters::noXSS() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.tpl.php on line 613 jeudi, 12 août 2010, 22:22 GMT
Dernière réponse de Julien le jeudi 12 août (il y a des informations importantes):

> Il va falloir que tu lises mon message jusqu'au bout, et il est très
> très long !!! ... que tu lises tout et que tout répondes avec
> précision ... voilà ta pénitence ! ;).

Quel péché ai-je donc commis, Père Angelo ?

> Ah oui, il va falloir que tu
> t'y retrouves (en lisant ma réponse) entre ce que j'ai écrit et les
> retours de FFmpeg (pour mes différents essais).
>
> Julien peux-tu essayer d'être très méticuleux dans ta réponse, en
> mettant des points comme je le fais là moi-même, car je vais
> copier/coller notre conversation dans le bugtracker d'EKD (ça va
> forcément nous aider à intégrer correctement le DNxHD pour l'AVCHD)
> ... merci d'avance !
>
> Voilà, on y va !
>
> Ah ok, il faudrait quand même la version SVN en question.

Malheureusement, je ne trouve pas comment parcourir en ligne l'historique du SVN de ffmpeg.
Par contre, le dépôt git peut être parcouru facilement :
http://git.ffmpeg.org/?p=ffmpeg&a=search&h=e9f9a8e423e725c461039151a63510f1386a180a&st=commit&s=dnxhd
Le premier commit concernant DNxHD date du 2007-03-18, mais comme tu peux voir d'après le lien ci-dessus il y en a eu d'autres par la suite. Les deux commits les plus récents me semblent un peu "cosmétiques", par contre le 3e sur la liste (2009-11-20, bcoudurier, "avoid integer overflow in dnxhd encoder, fixes #1557") est important puisqu'il corrige une faille. En conclusion : il faudrait s'assurer que EKD utilise une version de ffmpeg postérieure au 2009-11-20.
Ça fait un peu avancer le schmilblick mais ça ne résout pas complètement le problème de formulation des dépendances. Je ne sais pas comment c'est géré sous Ubuntu, mais sous Archlinux les versions de ffmpeg sont numérotées selon leur révision SVN uniquement et non par version majeure ni par date.

> Tout d'abord ça roule, EKD utilise FFmpeg au niveau de la gestion de
> l'AVCHD donc là ça va.
>
> Ok merci pour ces précieuses. informations sur par exemple le
> conteneur MOV pour le DNxHD (et extension .mov à l'arrivée).
>
> Pour ce qui est du l'audio ça se complique, il faudrait donc rajouter
> un champ de réglage supplémentaire uniquement pour la gestion de la
> sortie DNxHD ... bon ça c'est gérable ... mais dans EKD --> dans la
> partie vidéo je gère plus le côté moteur ... et Aurélien la partie
> interface (quoiqu'à certains moments je peux aussi gérer un peu la
> partie GUI). Aurélien est très pris par son boulot en ce moment, ça va
> donc être chaud. Je demanderais aussi à Olivier (mais il est
> actuellement en vacances) de voir ce qu'on peut faire ...

Ce n'est peut-être pas grave si le support du DNxHD attend la fin des vacances :-)

> Donc dans l'absolu si on intègre le support du DNxHD pour l'AVCHD dans
> EKD, il faudrait rajouter un champ de réglage pour la sortie audio,
> c'est bien ça ?

Étant données les différentes possibilités autorisées par le standard AVCHD pour le flux audio (AC3 ou PCM, sur 2 ou 6 canaux), faire autrement reviendrait à imposer à l'utilisateur un choix qui ne lui conviendra pas forcément.

> Si oui c'est possible en faisant en sorte que dès que l'utilisateur
> aura choisi DNxHD (.mov) dans la liste déroulante pour Encodage sortie
> vidéo, on ait un 5ème réglage (qui n'apparaîtrait que pour le DNxHD)
> ... et qui serait:
>
> --> Sortie audio
>
> ... et qui contiendrait:
>
> * Copie du flux audio
> * Pas de flux audio
> * Flux audio PCM sur 2 canaux (stéréo)
> * Flux audio PCM sur 6 canaux (5.1)
>
> Autant je connais la syntaxe FFmpeg pour la sortie audio pour:
>
> --> Copie du flux audio -> c'est '-acodec copy'
> --> Pas de flux audio --> c'est '-an'
>
> ... mais pour Flux audio PCM sur 2 canaux (stéréo) et Flux audio PCM
> sur 6 canaux (5.1) ... il faudrait que tu me donnes la syntaxe exacte
> de FFmpeg au niveau de '-acodec ...'. Là pour l'instant je ne vois
> pas. Il faudrait aussi savoir si la syntaxe que tu vas me donner est
> compatible avec les anciennes versions de FFmpeg (on va dire depuis
> que l'AVCHD est géré complètement dans FFmpeg ... il me semble depuis
> environ avril-mai 2009).

ffmpeg permet de spécifier le nombre de canaux audio avec le paramètre '-ac' ("audio channels").
Par contre, à la réflexion, proposer une conversion en PCM sur 2 canaux me semble utile mais pas en PCM sur 6 canaux. La conversion en PCM sur 2 canaux pourrait servir à "réduire" une source audio (AC3 ou PCM) sur 6 canaux à un flux audio stéréo sur 2 canaux, sans pertes. L'intérêt est que certains logiciels gèrent mieux le son stéréo, et de toute façon les fichiers diffusés via une plate-forme type Youtube ou Dailymotion ont au mieux un son stéréo.
Typiquement la syntaxe pour du PCM sur 2 canaux serait : '-ac 2 -acodec pcm_s16le'. Ces paramètres indiquent un encodage audio sur 16 bits, ce qui devrait convenir dans la majorité des cas, mais il existe peut-être des situations dans lesquels il serait intéressant d'utiliser une autre forme de PCM (à vérifier).

> Je viens de faire des tests avec un fichier AVCHD ... et là j'ai
> vérifié que le 720x576 et le 1440x1080 ne fonctionnent pas en sortie
> pour le DNxHD ... il va donc falloir qu'on exclue ces dimensions en
> sortie (et ce pour l'utilisateur) dans le réglage:
>
> Résolution sortie
>
> Tu dis que le nombre d'image par seconde peut se faire uniquement avec
> ces réglages pour le DNxHD à partir d'un fichier AVCHD ?
>
> --> C'est bizarre car je viens de tester chez moi avec un fichier
> AVCHD que j'ai récupéré je ne sais plus où (je n'ai pas de caméra
> AVCHD moi-même) ... et j'ai mis les paramètres '-r 25', '-r 10' et
> même '-r 3' et ça passe sans problème !

Ça montre seulement que ffmpeg ne respecte pas à la lettre la "norme" DNxHD telle que définie par Avid :-)

C'est à double tranchant :
- Si ça ouvre des possibilités supplémentaires aux utilisateurs, tant mieux. (Encore que du DNxHD à 3 ou 10 images/seconde, je vois pas bien l'intérêt, mais passons.)
- D'un autre côté les fichiers ainsi créés risquent fort d'être inutilisables avec des logiciels n'utilisant pas ffmpeg/libavcodec pour la lecture, c'est-à-dire tous les logiciels propriétaires, et peut-être quelques autres.
=> mon avis perso c'est que EKD ne devrait proposer que les framerate indiqués dans la doc d'Avid, ou alors afficher un avertissement sur les éventuelles incompatibilités.

> Tu verras tous mes essais à la fin de ce message.
>
> Il faut savoir que pour la gestion de l'AVCHD l'utilisateur à accès au
> réglage 'Nombre d'images/secondes (entre 2 et 60)', sauf s'il choisit
> le MPEG1 ou le MPEG2 pour le réglage 'Encodage sortie vidéo' ... dans
> ces 2 cas bien précis ce dernier réglage devient invisible et le
> transcodage se fait avec 25 img/sec.

Je pense donc qu'il faudrait restreindre les choix de framerate lorsque l'utilisateur sélectionne le DNxHD comme format de sortie, ou à tout le moins afficher un message d'avertissement si un framerate non supporté par le "standard" DNxHD est indiqué par l'utilisateur.

> Oui ça j'ai vérifié.
>
> Là il faut que tu expliques (je ne pige pas), donne des exemples.

Le "standard" DNxHD comporte plusieurs "modes" dont les noms se terminent par un "x", par exemple "DNxHD 185x". Dans ces modes, chacune des composantes de chaque pixel (càd les valeurs de luminance et de chrominance Y, U et V) est stockée sur 10 bits, et non sur 8 bits maximum comme c'est le cas généralement (en fait dans le cas le plus courant seule la luminance est stockée sur 8 bits, et la chrominance l'est sur 4 bits seulement, ce qui fait 12 bits en tout par pixel).
Le fait d'avoir des composantes stockées sur 10 bits et non sur 8 bits est censé permettre d'afficher et de traiter un spectre de couleurs plus large, càd mieux conserver l'information colorimétrique au cours du traitement de la vidéo.
Cependant, ffmpeg ne supporte pas les images avec 10 bits / composante. D'après ce que j'ai lu, c'est un choix des développeurs de ffmpeg de supporter les formats de pixel avec 8 ou 16 bits / composante mais pas 10 bits, car ils jugent que l'intérêt est trop limité par rapport au boulot de réécriture du code que cela impliquerait. Donc la "norme" DNxHD ne sera probablement jamais complètement supportée par ffmpeg.
Tout cela n'est pas trop grave dans le cas qui nous intéresse car EKD est un logiciel "grand public", et seuls des appareils professionnels relativement coûteux permettent de bénéficier d'une "profondeur colorimétrique" ("color depth") supérieure à 8 bits. C'est un problème pour les éventuels pros qui voudraient utiliser du DNxHD avec ffmpeg, mais l'utilisateur moyen de EKD n'est pas concerné.

> EKD c'est la simplicité ... et je ne suis pas pour rajouter ce genre
> d'option. Faisons dans la simplicité.

C'est l'une des raisons pour lesquelles j'utilise la ligne de commande et pas EKD ni un autre outil graphique :-) Mais je ne suis sûrement pas représentatif de la majorité des utilisateurs.

> Ah ben oui que ça aide !
>
> Bon voilà mes essais:
[...]
> * 4ème essai (là j'ai intégré le paramètre -qscale [qui sert à définir
> la qualité] ... et ça fonctionne !, tu remarqueras aussi que le
> framerate est défini à 3 !!!, et ça fonctionne aussi sans ourciller
> !):

Je ne crois pas que le paramètre -qscale soit pertinent avec du DNxHD. La page man de ffmpeg indique en effet :
"qscale q Use fixed video quantizer scale (VBR)."
Si je comprends bien, ce paramètre sert à "quantifier" la qualité de la vidéo quand le débit binaire (bitrate) de celle-ci est variable. Ici "variable" s'entend par opposition à un débit constant ("Constant bitrate" ou "CBR") et à un débit moyen ("Average Bitrate" ou "ABR").
Or il me semble qu'avec le DNxHD le débit binaire est constant par définition (ça fait partie de la définition même de ce format vidéo) et en outre le paramètre '-b' est passé à ffmpeg, ce qui implique un débit constant (ou moyen ?).
Donc à mon avis le paramètre 'qscale' doit être purement et simplement ignoré par ffmpeg quand on encode en DNxHD.
On peut vérifier cela en encodant plusieurs fois une source AVCHD avec le même "mode" DNxHD mais en faisant varier seulement 'qscale'. À mon avis on obtiendrait des fichiers identiques en termes de bitrate et de qualité.

[...]
> Bon voilà pour finir il faut savoir que le paramètre '-qscale ...' est
> réglabe (entre 1 et 31) dans EKD et ce pour tous les réglages
> 'Encodage sortie vidéo' pour la gestion de l'AVCHD. J'aimerais que çe
> soit pareil pour la gestion du DNxHD.

À mon avis il faudrait faire exception pour le DNxHD, c'est-à-dire "griser" ou désactiver le paramètre -qscale quand l'utilisateur choisir d'encoder en DNxHD.

> Voilà comment se fait la gestion de l'AVCHD dans EKD, tu y verras
> notamment l'onglet Réglages (il s'agit d'un article que j'avais fait à
> l'époque sur le blog d'EKD):
>
> http://ekdm.wordpress.com/2009/11/09/gestion-de-lavchd-dans-ekd
>
> Là tu verras le code python de la partie moteur pour la gestion de
> l'AVCHD dans EKD (et notamment les paramètres définis pour chaque cas
> --> codec géré) ==> voir dans la fonction run (--> le bloc faisant
> partie de def run(self):):
>
> http://svn.tuxfamily.org/viewvc.cgi/ekdforum_ekd/trunk/moteur_modules_animation/ffmpeg_avchd.py?view=markup

J'avoue ne pas avoir vraiment le temps de me plonger dans tout cela...

Par contre voici, à titre d'indication, les paramètres ffmpeg définis dans kdenlive :
DNxHD 1920x1080 25p 120 Mb/s : -s 1920x1080 -r 25 -b 120000k -threads 2 -vcodec dnxhd -acodec copy %1.mov
DNxHD 1920x1080 25p 185 Mb/s : -s 1920x1080 -r 25 -b 185000k -threads 2 -vcodec dnxhd -acodec copy %1.mov
DNxHD 1920x1080 30p 145 Mb/s : -s 1920x1080 -r 30 -b 145000k -threads 2 -vcodec dnxhd -acodec copy %1.mov
DNxHD 1920x1080 30p 220 Mb/s : -s 1920x1080 -r 30 -b 220000k -threads 2 -vcodec dnxhd -acodec copy %1.mov
DNxHD 1920x1080 50i 120 Mb/s : -s 1920x1080 -r pal -flags +ilme+ildct -b 120000k -threads 2 -vcodec dnxhd -acodec copy %1.mov
DNxHD 1920x1080 50i 185 Mb/s : -s 1920x1080 -r pal -flags +ilme+ildct -b 185000k -threads 2 -vcodec dnxhd -acodec copy %1.mov
DNxHD 1920x1080 50i/25p 120 Mb/s : -s 1920x1080 -r pal -b 120000k -threads 2 -vcodec dnxhd -acodec copy %1.mov
DNxHD 1920x1080 50i/25p 185 Mb/s : -s 1920x1080 -r pal -b 185000k -threads 2 -vcodec dnxhd -acodec copy %1.mov
DNxHD 1920x1080 60i 145 Mb/s : -s 1920x1080 -r ntsc -flags +ilme+ildct -b 145000k -threads 2 -vcodec dnxhd -acodec copy %1.mov
DNxHD 1920x1080 60i 220 Mb/s : -s 1920x1080 -r ntsc -flags +ilme+ildct -b 220000k -threads 2 -vcodec dnxhd -acodec copy %1.mov
DNxHD 1920x1080 60i/30p 145 Mb/s : -s 1920x1080 -r ntsc -b 145000k -threads 2 -vcodec dnxhd -acodec copy %1.mov
DNxHD 1920x1080 60i/30p 220 Mb/s : -s 1920x1080 -r ntsc -b 220000k -threads 2 -vcodec dnxhd -acodec copy %1.mov

Bien entendu, il faudrait ajouter à cela la possibilité de réduire la dimension de l'image à 1280x720 (-s 1280x720).

> Donc j'attend tes réponses complètes par rapport à tout ça (notamment
> pour toutes mes questions persistantes concernant le DNxHD et son
> intégration dans EKD).

>
> a+
>
> Angelo

Bonne soirée et bon courage.
Commentaire de Angelo (ekd) - Strict Standards: Non-static method Filters::noXSS() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.tpl.php on line 613 samedi, 14 août 2010, 01:10 GMT
Bon et bien je viens de finir l'intégration de la gestion du DnxHD pour l'AVCHD, dans EKD, voilà ce que je viens de répondre à Julien:

Salut Julien,

Je te fais une réponse très courte tout de suite (je vais essayer de te répondre en détail prochainement).

Bon voilà j'ai fini l'intégration du support du DNxHD pour l'AVCHD dans EKD (hé oui !).

C'est disponible sur le SVN d'EKD:

http://ekd.tuxfamily.org/index.php/Developpement/SVN

Attention par rapport à ça (la dernière dépendance demandée pour EKD) le dépôt apt de G'MIC n'est plus disponible depuis plusieurs jours car ce dépôt (dépôt que j'ai crée en juillet) est hébergé sur Legtux mais le serveur Legtux est planté depuis qques jours (car apparemment un des responsables du serveur n'a pas payé l'hébergement sur le serveur dédié, une sombre histoire de banque appremment), enfin bref il faut éviter (pour l'instant) l'étape de mise en place du dépôt apt pour G'MIC ... le serveur Legtxu va revenir en début de semaine prochaine d'après ce que j'ai entendu ... et je remettrais alors en place le dépôt apt pour G'MIC.

Au fait tu es sous ArchLinux non ?, conntrais-tu qqu'un qui pourrait créer (régulièrement) des paquets de G'MIC pour ArchLinux ? G'MIC est téléchargeable ici:

http://sourceforge.net/projects/gmic/files/

--> http://gmic.sourceforge.net

G'MIC est un superbe logiciel (!), et je suis très très content qu'il soit devenu une dépendance d'EKD. David le développeur de G'MIC est un copain, nous habitons Caen tous les 2.

Revenons-en à l'intégration du DNxHD dans EKD, j'ai vraiment restreint le réglage des 'Spécificités AVid DNxHD' car je me suis aperçu qu'il y avait pas mal de commandes (les dernières) que tu m'as filées qui ne fonctionnent pas du tout sous FFmpeg version sous Kubuntu Karmic (les commandes venant de Kdenlive).

Tiens là regarde:


angelo@kubuntu-1:~/film_MTS$ ffmpeg -i "/home/angelo/film_MTS/00080.mts" -s 1280x720 -r 25 -b 120000k -vcodec dnxhd -acodec copy -qscale 2 -y "/home/angelo/film_MTS/zzzessai_1280_00001.mov"
FFmpeg version SVN-r19352-4:0.5+svn20090706-2ubuntu2.2, Copyright (c) 2000-2009 Fabrice Bellard, et al.
configuration: --extra-version=4:0.5+svn20090706-2ubuntu2.2 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --extra-cflags=-I/build/buildd/ffmpeg-0.5+svn20090706/debian/include --enable-shared --disable-static
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 0 / 52.20. 0
libavformat 52.31. 0 / 52.31. 0
libavdevice 52. 1. 0 / 52. 1. 0
libavfilter 0. 4. 0 / 0. 4. 0
libswscale 0. 7. 1 / 0. 7. 1
libpostproc 51. 2. 0 / 51. 2. 0
built on Apr 23 2010 15:38:06, gcc: 4.4.1
Input #0, mpegts, from '/home/angelo/film_MTS/00080.mts':
Duration: 00:00:07.81, start: 1.000067, bitrate: 16199 kb/s
Program 1
Stream #0.0[0x1011]: Video: h264, yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], 50 tbr, 90k tbn, 50 tbc
Stream #0.1[0x1100]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
Output #0, mov, to '/home/angelo/film_MTS/zzzessai_1280_00001.mov':
Stream #0.0: Video: dnxhd, yuv422p, 1280x720 [PAR 1:1 DAR 16:9], q=2-31, 120000 kb/s, 90k tbn, 25 tbc
Stream #0.1: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
[dnxhd @ 0x21fc8e0]video parameters incompatible with DNxHD
Error while opening codec for output stream #0.0 - maybe incorrect parameters such as bit_rate, rate, width or height


--> c'est: '-b 120000k' qui ne convient pas du tout !

Par contre si je met: '-b 220000k', là ça marche beaucoup mieux !:


angelo@kubuntu-1:~/film_MTS$ ffmpeg -i "/home/angelo/film_MTS/00080.mts" -s 1280x720 -r 25 -b 220000k -vcodec dnxhd -acodec copy -qscale 2 -y "/home/angelo/film_MTS/zzzessai_1280_00001.mov"
FFmpeg version SVN-r19352-4:0.5+svn20090706-2ubuntu2.2, Copyright (c) 2000-2009 Fabrice Bellard, et al.
configuration: --extra-version=4:0.5+svn20090706-2ubuntu2.2 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --extra-cflags=-I/build/buildd/ffmpeg-0.5+svn20090706/debian/include --enable-shared --disable-static
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 0 / 52.20. 0
libavformat 52.31. 0 / 52.31. 0
libavdevice 52. 1. 0 / 52. 1. 0
libavfilter 0. 4. 0 / 0. 4. 0
libswscale 0. 7. 1 / 0. 7. 1
libpostproc 51. 2. 0 / 51. 2. 0
built on Apr 23 2010 15:38:06, gcc: 4.4.1
Input #0, mpegts, from '/home/angelo/film_MTS/00080.mts':
Duration: 00:00:07.81, start: 1.000067, bitrate: 16199 kb/s
Program 1
Stream #0.0[0x1011]: Video: h264, yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], 50 tbr, 90k tbn, 50 tbc
Stream #0.1[0x1100]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
Output #0, mov, to '/home/angelo/film_MTS/zzzessai_1280_00001.mov':
Stream #0.0: Video: dnxhd, yuv422p, 1280x720 [PAR 1:1 DAR 16:9], q=2-31, 220000 kb/s, 90k tbn, 25 tbc
Stream #0.1: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press [q] to stop encoding
[h264 @ 0x1f25460]missing picture in access unit.02 bitrate=91987.5kbits/s
frame= 195 fps= 13 q=1.0 Lsize= 87790kB time=7.80 bitrate=92202.0kbits/s
video:87360kB audio:427kB global headers:0kB muxing overhead 0.003442%


La commande '-qscale xx' n'apparaît plus dans EKD pour le DNxHD.

Je t'ais mis des copies d'écran, pour que tu vois mieux ce que ça donne ds EKD.

Je vais envoyer un mail spécial dans la liste lprod pour faire une demande de tests pour cette intégration. Je vais aussi écrire un article par rapport à l'intégration du DNxHD pour la gestion de l'AVCHD dans EKD ... et ce sur le blog d'EKD: http://ekdm.wordpress.com

Voilà, voilà.

a+

Angelo
Commentaire de Angelo (ekd) - Strict Standards: Non-static method Filters::noXSS() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.tpl.php on line 613 vendredi, 20 août 2010, 23:10 GMT
Complètement intégré maintenant avec les eclaircissement qu'il faut de la part de Julien (donc 100% fonctionnel). Voir ici:

http://ekdm.wordpress.com/2010/08/17/arrivee-de-lavid-dnxhd-pour-la-gestion-de-lavchd

Tests effectués, tout fonctionne.

Pour info (ça peut resservir), voilà les spécifications Avid DNxHD (venant de chez Avid):

http://www.avid.fr/resources/whitepapers/dnxhd.pdf (lire en particulier la page 9).

a+

Angelo
Commentaire de Angelo (ekd) - Strict Standards: Non-static method Filters::noXSS() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.tpl.php on line 613 samedi, 21 avril 2012, 18:32 GMT
Fini depuis un moment !

Chargement...