Outils pour utilisateurs

Outils du site


video

Cette page rassemble un certain nombre de scripts pour convertir des videos prises avec un APN en Video H264 de super bonne qualité (600 kbits/s de video, 64kbit/s d'audio, encodage triple passe).

Voici un premier script qui va bien pour les appareils Canon et Fuji

#!/bin/sh
#X264 version of rencoder
# 16/03/2008  J. Kieffer
VBitrate=600
ABitRate=64
x264opts="subq=7:nr=100:me=umh:partitions=all:direct_pred=auto:b_pyramid:bframes=3:frameref=5"
IASampleRate=11025
case $(basename $0 rencoder.sh) in
  cw-)
        rotate="-vf rotate=1"
        ;;
  ccw-)
        rotate="-vf rotate=2"
        ;;
    * )
        rotate=""
        ;;
esac
BN=$(basename $1 .AVI)-H264.avi
rm "$BN"
mplayer -dumpaudio "$1"  -dumpfile audio_theme.raw
sox   -r $IASampleRate -c 1 -u -b -t raw audio_theme.raw  -r 44100 audio_theme.wav resample
rm audio_theme.raw
mencoder $rotate -oac copy -ovc x264  -x264encopts bitrate=$VBitrate:pass=1:turbo=1:$x264opts -ofps 24 -o "$BN" "$1"
rm "$BN"
cp divx2pass.log divx2pass.bak
mencoder $rotate -oac copy -ovc x264 -x264encopts bitrate=$VBitrate:pass=3:$x264opts -ofps 24  -o "$BN" "$1"
rm "$BN"
if [ ! -s divx2pass.log ]
then
        cp divx2pass.bak divx2pass.log
        touch backup
fi
mencoder $rotate -oac mp3lame -lameopts mode=3:vbr=3:br=$ABitRate -audiofile audio_theme.wav -ovc x264 -x264encopts bitrate=$VBitrate:pass=3:$x264opts -ofps 24 -o "$BN" "$1"
rm audio_theme.wav
rm divx2pass.log
if [ -s divx2pass.bak ]
then
        rm divx2pass.bak
fi
if [ -s divx2pass.log.temp ]
then
        rm divx2pass.log.temp
fi

Pour conserver la bande son originale, utile pour les MPEG fait par les APN sony :

#!/bin/sh
#X264 version of rencoder
# 16/03/2008  J. Kieffer
VBitrate=600
ABitRate=64
x264opts="subq=7:nr=100:me=umh:partitions=all:direct_pred=auto:b_pyramid:bframes=3:frameref=5"
case $(basename $0 rencoder-mpg.sh) in
  cw-)
        rotate="-vf rotate=1"
        ;;
  ccw-)
        rotate="-vf rotate=2"
        ;;
    * )
        rotate=""
        ;;
esac
BN=$(basename $1 .mpg)-H264.avi
rm "$BN"
mencoder $rotate -oac copy -ovc x264  -x264encopts bitrate=$VBitrate:pass=1:turbo=1:$x264opts -ofps 24 -o "$BN" "$1"
rm "$BN"
cp divx2pass.log divx2pass.bak
mencoder $rotate -oac copy -ovc x264 -x264encopts bitrate=$VBitrate:pass=3:$x264opts -ofps 24  -o "$BN" "$1"
rm "$BN"
if [ ! -s divx2pass.log ]
then
        cp divx2pass.bak divx2pass.log
        touch backup
fi
mencoder $rotate -oac copy -ovc x264 -x264encopts bitrate=$VBitrate:pass=3:$x264opts -ofps 24 -o "$BN" "$1"
rm divx2pass.log
if [ -s divx2pass.bak ]
then
        rm divx2pass.bak
fi
if [ -s divx2pass.log.temp ]
then
        rm divx2pass.log.temp
fi

La dernière version : la version en python qui essaye de devier quel est le meilleur traitement a effectuer pour la bande son :

#!/usr/bin/python
#X264 version of rencoder written in python
# 16/03/2008  J. Kieffer
#
#rencoder.py [-cw|-ccw] [-copyaudio] files.mpg files.avi
#
#
#
VBitrate=600
ABitRate=64
x264opts="subq=7:nr=100:me=umh:partitions=all:direct_pred=auto:b_pyramid:bframes=3:frameref=5 -ofps 24"
mplayer="/usr/bin/mplayer"
mencoder="/usr/bin/mencoder"
sox="/usr/bin/sox"
import sys,os,tempfile,shutil
rotate=" "
DoAudio=True
files=[]
for i in sys.argv[1:]:
        if i.lower()=="-cv": rotate=" -vf rotate=1 "
        elif i.lower()=="-ccw": rotate=" -vf rotate=2 "
        elif i.lower()=="-copyaudio":DoAudio=False
        elif os.path.isfile(i):files.append(i)
        else: print "Unreconized option: "+i
for file in files:
                - path.splitext(file)[0]+"-H264.avi"
        if os.path.isfile(basename): os.remove(basename)
        if DoAudio:
                print "Reading audio track"
                                - popen("%s %s -identify -vo null -ao null -frames 0 "%(mplayer,file))
                for i in sout.readlines():
                        if i.find("ID_AUDIO_NCH")==0:ID_AUDIO_NCH=i.split("=")[1].strip()
                        elif i.find("ID_AUDIO_RATE")==0:ID_AUDIO_RATE=i.split("=")[1].strip()
                        elif i.find("ID_AUDIO_BITRATE")==0:ID_AUDIO_BITRATE=i.split("=")[1].strip()
                print ID_AUDIO_NCH,ID_AUDIO_RATE,ID_AUDIO_BITRATE
                if float(ID_AUDIO_BITRATE)<=ABitRate*1000.0+1:DoAudio=False
                if DoAudio:
                                                - mkstemp(suffix=".raw")
                                                - system(mplayer+" %s -dumpaudio   -dumpfile %s "%(file,rawaudio))
                                                - mkstemp(suffix=".wav")
                                                - system(sox+" -r %s -c %s -u -b -t raw %s -r 44100 %s resample  "%(ID_AUDIO_RATE,ID_AUDIO_NCH,rawaudio,wavaudio))
                                                - remove(rawaudio)
                - system(mencoder+rotate+"-oac copy -ovc x264 -x264encopts bitrate=%s:pass=1:turbo=1:%s -o %s %s"%(VBitrate,x264opts,basename,file))
                - remove(basename)
                - system(mencoder+rotate+"-oac copy -ovc x264 -x264encopts bitrate=%s:pass=3:%s -o %s %s"%(VBitrate,x264opts,basename,file))
                - remove(basename)
        if not DoAudio:
                                - system(mencoder+rotate+"-oac copy -ovc x264 -x264encopts bitrate=%s:pass=3:%s -o %s %s"%(VBitrate,x264opts,basename,file))
        else:
                                - system(mencoder+rotate+"-oac mp3lame -lameopts mode=3:vbr=3:br=%s -audiofile %s -ovc x264 -x264encopts bitrate=%s:pass=3:%s -o %s %s "%(ABitRate,wavaudio,VBitrate,x264opts,basename,file))
                                - remove(wavaudio)
        if os.path.isfile("divx2pass.log"):os.remove("divx2pass.log")
        if os.path.isfile("divx2pass.log.temp"):os.remove("divx2pass.log.temp")
 
video.txt · Dernière modification : 2023/05/10 19:31 de jerome