# Encoder une vidéo sur un serveur

**URL:** <https://www.debian-fr.org/t/encoder-une-video-sur-un-serveur/63490>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 8:46 UTC](https://www.debian-fr.org/t/encoder-une-video-sur-un-serveur/63490 "2016-02-21T20:46:52Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![seagul](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/9fc29f/32.png) [@seagul](https://www.debian-fr.org/u/seagul)\
**Post date:** [Février 21, 2016, 8:46 UTC](https://www.debian-fr.org/t/encoder-une-video-sur-un-serveur/63490/1 "2016-02-21T20:46:52Z")

</div>

Bonjour,

Pour un client, j’aimerais proposer un sous-titrage/traduction de vidéo en ligne (pages en php) :

- sur le serveur, la vidéo a été préalablement exportée sans les sous-titres en image par image (25 images par seconde, plein de fichiers)
- l’utilisateur visualise une série d’images, chacune avec 1 ou 2 lignes de sous-titres proposés en français / anglais
- il répond à un formulaire sous chaque image pour remplacer les sous-titres dans sa langue

Automatisation déjà en place :

- le serveur avec sa bibliothèque graphique fusionne les sous-titres sur les images concernées

Jusqu’ici tout va bien…

J’aimerais ENCODER ces images en vidéo WMV directement sur le serveur…  
Pouvez-vous me conseiller un module pour ça ?

(ma solution actuelle est assez simple : je télécharge les images, j’encode la vidéo sur mon PC et je la dépose sur un serveur ftp)  
(mais j’aimerais automatiser cette dernière partie)

---

<div class="post-metadata">

**Author:** ![agentsteel](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/97f17d/32.png) [@agentsteel](https://www.debian-fr.org/u/agentsteel)\
**Post date:** [Février 21, 2016, 8:46 UTC](https://www.debian-fr.org/t/encoder-une-video-sur-un-serveur/63490/2 "2016-02-21T20:46:53Z")

</div>

Voir du côté de ffmpeg/avconv, le couteau suisse de la vidéo.

Mais mieux vaudrait choisir un autre format de sortie que le WMV.  
Préférer le .webm ou le .ogm pour une lecture directe dans le navigateur (Firefox/IceWeasel, Chromium/Chrome)

---

<div class="post-metadata">

**Author:** ![seagul](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/9fc29f/32.png) [@seagul](https://www.debian-fr.org/u/seagul)\
**Post date:** [Février 21, 2016, 8:46 UTC](https://www.debian-fr.org/t/encoder-une-video-sur-un-serveur/63490/3 "2016-02-21T20:46:54Z")

</div>

Merci, je regarde le couteau suisse 🙂

Ces vidéos sont à intégrer dans des traductions de présentations Powerpoint (plein de filiales dans des dizaines de pays, elles font elles-mêmes leurs traductions). Donc les filiales vont préférer le wmv…

---

<div class="post-metadata">

**Author:** ![vohu](https://www.debian-fr.org/user_avatar/www.debian-fr.org/vohu/32/4108_2.png) [@vohu](https://www.debian-fr.org/u/vohu)\
**Post date:** [Février 21, 2016, 8:46 UTC](https://www.debian-fr.org/t/encoder-une-video-sur-un-serveur/63490/4 "2016-02-21T20:46:55Z")

</div>

Y a opencv aussi. Par contre je sais pas s’il y a un wrapper php

---

<div class="post-metadata">

**Author:** ![seagul](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/9fc29f/32.png) [@seagul](https://www.debian-fr.org/u/seagul)\
**Post date:** [Février 21, 2016, 8:46 UTC](https://www.debian-fr.org/t/encoder-une-video-sur-un-serveur/63490/5 "2016-02-21T20:46:56Z")

</div>

Je pensais générer un fichier avec une ligne de commande sur le disque et la faire exécuter par php via un exec(), puis effacer ce fichier…  
Mais si il y a un accès plus direct, oui, je préfèrerais !

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 8:47 UTC](https://www.debian-fr.org/t/encoder-une-video-sur-un-serveur/63490/6 "2016-02-21T20:47:10Z")

</div>

[moderation]C’est de la programmation, ça ?[/moderation]

---

<div class="post-metadata">

**Author:** ![seagul](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/9fc29f/32.png) [@seagul](https://www.debian-fr.org/u/seagul)\
**Post date:** [Février 21, 2016, 8:47 UTC](https://www.debian-fr.org/t/encoder-une-video-sur-un-serveur/63490/7 "2016-02-21T20:47:10Z")

</div>

Le choix des modules, comment les mettre en oeuvre,… Désolé si ce n’est pas le projet du siècle, pour moi ça demande pas mal de recherche pour assembler une solution, c’est la première fois que j’essaie de transformer de la vidéo hors Mac ou PC !

---

<div class="post-metadata">

**Author:** ![Knucky](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/71e660/32.png) [@Knucky](https://www.debian-fr.org/u/Knucky)\
**Post date:** [Février 21, 2016, 8:47 UTC](https://www.debian-fr.org/t/encoder-une-video-sur-un-serveur/63490/8 "2016-02-21T20:47:31Z")

</div>

Bonjour,

Il te faut des images avec le même format de nom et dans l’ordre numérique, par example :

```auto
ls /tmp
000001.jpg
[...] 
001500.jpg
```

Pour info je les ai extrait comme ça (voir man ffmpeg)

```auto
ffmpeg -ss 0 -r framerate_souvent_25ou24 -i mon_fichier.avi -f image2 -q 0 /tmp/%06d.jpg
```

Tu peux obtenir le framerate (fps) en faisant [mono]ffmpeg -i mon\_fichier.avi[/mono]

Après c’est doigts dans le nez pour en faire une video:

```auto
ffmpeg -f image2 -i /tmp/%06d.jpg -r meme_framerate_qua_lentree -q 0 sortie.wmv
```

NB: je crois pas que le ffmpeg par défaut sous Debian sait faire du wmv, il faut celui de [deb-multimedia.org](http://deb-multimedia.org) (attention aux conflits avec les paquets Debian officiels).

Ca c’était la version exec().

J’y connais rien avec ffmpeg en plugin sous php, à part que ça existe. Un des problèmes va être le set\_time\_limit de ton php.ini en cas de gros fichiers.

---

<div class="post-metadata">

**Author:** ![seagul](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/9fc29f/32.png) [@seagul](https://www.debian-fr.org/u/seagul)\
**Post date:** [Février 21, 2016, 8:47 UTC](https://www.debian-fr.org/t/encoder-une-video-sur-un-serveur/63490/9 "2016-02-21T20:47:36Z")

</div>

Merci,  
J’ai testé avec Libav

isoler le son :

```auto

```

isoler les images :

```auto

```

-q:v 1 est nécessaire pour avoir les images non compressées

(puis traitement sur les images)

assemblage de la vidéo de sortie :

```auto

```

On est obligé d’utiliser WMV8 et pas WMV9  
Il n’y a pas de patch vc-1 ou wmv3 encoder (si j’ai bien tout lu à ce sujet)

-q:v 2 est plus compressé que -q:v 1  
env 3250kb/s @ 1280x720/25ips : OK pour moi  
-q:v 3 commence à pixéliser

Pour l’intégration, je vais rester sur un traitement asynchrone via un exec().  
Donc ajouter un script CRON pour vérifier si le fichier de sortie est généré et tout nettoyer à la fin.  
(Autre méthode ?)
