YANO's digital garage

Copyright ©YANO All rights reserved. https://www.bravotouring.com/~yano/

Last-modified: 2024-03-20 (水)


[一語一絵/IT系]

FFmpeg 1.1.2 / 2013-02-21 (木)

昨日libavformatの例外障害対処で復旧したMediaTomb

流れでffmpegを1.1.2 "Fire Flower"にアップデートしたのに伴い、今度はmp4エンコードがコケるようになったので、その対処。

/usr/local/share/ffmpeg/libx264-hq.ffpreset~/bin/ts2mp4_1280x720.shオプション類を見直して、以下のように改修する事でこちらも無事復旧。

yano@GT110b:~$ cat /usr/local/share/ffmpeg/libx264-hq.ffpreset
vcodec=libx264

vprofile=baseline
maxrate=10000000
bufsize=10000000

level=41
crf=25
coder=1
flags=+loop
cmp=chroma
partitions=+parti8x8+parti4x4+partp8x8+partb8x8
me_method=umh
subq=7
me_range=16
g=250
keyint_min=25
sc_threshold=40
i_qfactor=0.71
b_strategy=1
qmin=10
rc_eq='blurCplx^(1-qComp)'
bf=16
bidir_refine=1
refs=6
yano@GT110b:~$ diff -b libx264-hq-20121014.ffpreset /usr/local/share/ffmpeg/libx264-hq.ffpreset
5c5
< cmp=+chroma
---
> cmp=chroma
yano@GT110b:~$
yano@GT110b:~$ cat ~/bin/ts2mp4_1280x720.sh
#!/bin/bash

CPU_CORES=$(/usr/bin/getconf _NPROCESSORS_ONLN)

PREFIX=/usr/local;
FFMPEG=${PREFIX}/bin/ffmpeg;
OUTDIR=/mnt/newpool/Videos;
LOGDIR=${OUTDIR}/.logs

FORMAT="mp4"

# OPT_SWSFLAGS="-sws_flags mmx2";
OPT_THREADS="-threads ${CPU_CORES}";
OPT_PROCESSER="${OPT_SWSFLAGS} ${OPT_THREADS}";

X264_PRESET=${PREFIX}/share/ffmpeg/libx264-hq.ffpreset
OPT_VCODEC="-vcodec libx264 -fpre ${X264_PRESET}";
OPT_VCODEC="${OPT_VCODEC} -bufsize 10000000 -level 41 -crf 25";
OPT_FILTER="-filter:v yadif"
# OPT_VRATE="-b:a 2M -bt 2M"
OPT_VRATE="-re -b:v 5M -maxrate 10M"
OPT_VSIZE="-aspect 16:9 -s hd720"
OPT_VCODEC="${OPT_VCODEC} -r 30000/1001 ${OPT_FILTER} ${OPT_VRATE} ${OPT_VSIZE} -vsync 1"
OPT_ACODEC="-acodec libfaac -ac 2 -ar 48000 -ab 128k"
OPT_MAP="-map 0:0 -map 0:1";

INFILE=$1;
FNAME=`basename "${INFILE}" .ts`;
OUTFILE=${OUTDIR}/${FNAME}.${FORMAT};
LOGFILE=${LOGDIR}/${FNAME}.log

FFMPEG_CMDLINE="-y -i ${INFILE} ${OPT_PROCESSER} ${OPT_VCODEC} ${OPT_ACODEC} ${OPT_MAP} -f ${FORMAT} ${OUTFILE}"

if [ ! -s ${OUTFILE} ]; then
        echo "${INFILE} -> ${OUTFILE}"
        date > "${LOGFILE}"
        (time ${FFMPEG} ${FFMPEG_CMDLINE}) 2>&1 | tee -a "${LOGFILE}"
        date >> "${LOGFILE}"
fi
touch --refer=${INFILE}  ${OUTFILE}

# ls -la ${INFLIE} ${OUTFILE}*
yano@GT110b:~$

【参照】
●FFmpeg http://www.ffmpeg.org/