Hélène et David

Non connecté

Connecter

Patch FFMPEG pour PSP

vendredi 31 octobre 2008 par Admin

Introduction

Apr�s quelques recherches, je me suis rendu compte qu’il n’existait pas de convertisseur video pour la PSP r�pondant � mes besoins. A savoir :
- supportant la normalisation audio,
- supportant l’encodage vid�o H264 et audio AAC,
- supportant la suppression des bandes noires,
- et supportant la mise � l’�chelle automatique pour la PSP.

J’en suis donc venu � modifier l’application FFMPEG par rapport � mes besoins.

Normalisation audio

La premi�re modification a consist� � ajouter la normalisation audio en 2 passes.

Ce patch a �t� refus� par les mainteneurs de FFMPEG, car ils pr�f�rent un filtre bas�e sur la nouvelle architecture "libavfilter". Faute de temps et de documentations, j’ai conserv� ma version, car FFMPEG lui-m�me ne permet pas d’utiliser leur nouvelle architecture. Quand celui-ci sera adapt� � "libavfilter", je porterais mon petit filtre de normalisation dans la nouvelle librairie de filtrage (en y apportant des am�liorations).

Le patch de normalisation ajout un param�tre � FFMPEG : "-normalize".

Ce param�tre fonctionne en 2 passes. Lors du premier lancement de FFMPEG avec ce param�tre, un fichier est cr�� contenant les coefficients � appliquer � la piste audio pour que le niveau maximum soit atteint.

Deux conditions � l’usage de ce param�tre :
- La piste audio doit �tre d�cod�e en PCM 16bits (pour la premi�re passe, car c’est fait pour la seconde juste avant encodage AAC) et
- un downmix st�r�o doit �tre fait pour une piste 5.1

Voir plus bas comment j’utilise ce param�tre.

Support de la PSP

FFMPEG propose par d�faut une option "-target" qui permet de pr�-configurer la sortie sur un format d�termin�.

L’extension cette option pour g�rer le format de sortie "PSP" permet de simplifier grandement la ligne de commande utiliser pour g�n�rer des fichiers vid�o lisible par la PSP.

Le format de cette option est celui-ci : -target psp[-opt]*

O� [-opt] peut �tre r�p�t� plusieurs fois et avoir les valeurs suivantes :
- "tv", force le 4:3, soit 368x272,
- "wide", force le 16:9, soit 480x272,
- "scope", force le format cin�mascope 2.35, soit 480x208
- "pal", force le framerate � 25im/s,
- "ntsc" force le framerate � 30im/s,
- "aac", downmix et encode l’audio en AAC, sinon copie le flux audio.

Les options de redimmensionnement sont optionnelles. Dans ce cas, un redimenssionement automatique est effectu�, en tenant compte du ratio de la source (il faut donc sp�cifier l’option "-i" avant "-target’).

En dehors du redimensionnement, l’utilisation de cette option permet de pr�configurer les options suivante :
- format de sortie = "psp"
- codec audio = ’libfaac"
- bitrate audio = 64000, sauf si "wide" ou "scope", dans ce cas, 96000.
- codec video = "libx264"
- bitrate video = framewidth*frameheight*framerate / 8
- "qmin" = 10
- "qmax" = 51
- "minrate" = 0
- "maxrate" = 4M
- "bufsize" = 4M
- "g" = ( ntsc ? 300 : 250 )
- "keyint_min" = (ntsc ? 30 : 25 )
- "me_range" = 16
- "sc_threshold" = 40
- "i_qfactor" = 0.71
- "qcomp" = 0.6
- "qdiff" = 4
- "me" = "umh"
- "subq" = 5
- "trellis" = 2
- "coder" = 1
- "flags" = "+loop"
- "cmp" = "+chroma"
- "partitions" = "+parti4x4+partp8x8+partb8x8"
- "refs" = 2
- "bf" = 3
- "rc_eq" = "blurCplx^(1-qComp)"

Utilisation de la version patch� de FFMPEG

Ci-dessous, le code du script utilis� pour convertir une vid�o en utilisant ma version modifi�e de FFMPEG.

#!/bin/bash
VID=$1
OUT=$2
shift 2

rm -f normalize.stats *.log

# first audio normalization pass (no video)
nice ~/bin/ffmpeg -i "$VID" -vn -ac 2 -f s16le -normalize $* -y /dev/null
# first video pass (no audio)
nice ~/bin/ffmpeg -i "$VID" -an -target psp -b 500k -bt 250k -pass 1 -threads 2 $* -f h264 -y /dev/null

# second pass with audio normalization and video
nice ~/bin/ffmpeg -i "$VID" -ac 2 -normalize -target psp-aac -b 500k -bt 250k -pass 2 -threads 2 $* -y "$OUT"

Code source

Le patch ci-dessous s’applique � la version de d�veloppement de FFMPEG (r�vision 15760 � ce jour).

Zip - 2.6 ko
Patch FFMPEG pour SVN r25757

Patch de normalisation audio et support de la cible PSP pour la version SVN r25757 de FFMPEG.

 

Documents joints :

 

  • Patch FFMPEG pour PSP

    20 mai 2010

    bonjour,
    Merci pour ces explication, mais ou placer ce patch sous mandriva par exemple, et serait-il possible de faire un exemple d’utilisation du script pour mieu comprendre.
    merci d’avance.

Vous êtes sur un site internet créé avec le système de publication SPIP.
Ce site est optimisé pour un affichage 1024x768 minimum.
De plus, certain problèmes peuvent apparaitre avec Internet Explorer, utilisez Firefox