Sardylan Site - Guide - Scripts di ricodifica video

Valid XHTML 1.0 Strict Valid CSS Level 3 Valid RSS Optimized for Firefox Apache HTTPD Powered MySQL Powered PHP 5 Powered GNU/Linux Operated Creative Commons License NY-NC-SA 2.5 IT Member of W3C Sites dot com VIM Power



Scripts di ricodifica video

3GP Output per Nokia 6630

#!/bin/bash

set -e

CNV_INPUT="${1}"
CNV_OUTPUT="$(echo ${CNV_INPUT} | sed -e "s/^\(.*\)\.\(.*\)$/\1\.3gp/g")"

if [ ! -r "${CNV_INPUT}" ]; then
    exit 1
fi

CNV_IN_RES="$(ffmpeg -i "${CNV_INPUT}" 2>&1 | grep "Stream" | grep "Video" | awk -F' ' '{print $6}' | sed -e "s/,//g")"

CNV_IN_X="$(echo ${CNV_IN_RES} | awk -Fx '{print $1}')"
CNV_IN_Y="$(echo ${CNV_IN_RES} | awk -Fx '{print $2}')"

CNV_OUT_X="176"
CNV_OUT_Y="144"

CNV_IN_ASPECT="$(echo -e "scale=5\n${CNV_IN_X}/${CNV_IN_Y}" | bc)"
CNV_IN_ZOOMFAC="$(echo -e "scale=5\n${CNV_IN_X}/${CNV_OUT_X}" | bc)"

CNV_SC_X="176"
CNV_SC_Y="$(echo -e "${CNV_IN_Y}/${CNV_IN_ZOOMFAC}" | bc)"

if [ -e temp.avi ]; then
    rm temp.avi
fi

if [ -r ${CNV_INPUT}.3gp ]; then
    rm ${CNV_INPUT}.3gp
fi

mencoder "${CNV_INPUT}" -o temp.avi -ovc raw -oac pcm -vf harddup,format=i420,scale=${CNV_SC_X}:${CNV_SC_Y},expand=${CNV_OUT_X}:${CNV_OUT_Y} -ofps 30000/1001

ffmpeg -i temp.avi -b 300k -ac 1 -ab 12.2k -ar 8000 "${CNV_OUTPUT}"

rm temp.avi

DV Video per Kino in 16/9

#!/bin/bash

set -e

CNV_INPUT="${1}"
CNV_OUTPUT="$(basename "${CNV_INPUT}" | sed -e "s/\(.*\)\.\(.*\)$/\1\.dv/g")"

if [ ! -r "${CNV_INPUT}" ]; then
    echo "Input file is not readable or not exists!"
    exit 1
fi

ffmpeg -i "${CNV_INPUT}" -acodec pcm_s16le -ac 2 -ar 48000 -pix_fmt yuv420p -deinterlace -vcodec dvvideo -s 720x576 -aspect 16:9 -r 25 "${CNV_OUTPUT}"

DV Video per Kino in 4/3

#!/bin/bash

set -e

CNV_INPUT="${1}"
CNV_OUTPUT="$(basename "${CNV_INPUT}" | sed -e "s/\(.*\)\.\(.*\)$/\1\.dv/g")"

if [ ! -r "${CNV_INPUT}" ]; then
    echo "Input file is not readable or not exists!"
    exit 1
fi

ffmpeg -i "${CNV_INPUT}" -acodec pcm_s16le -ac 2 -ar 48000 -pix_fmt yuv420p -deinterlace -vcodec dvvideo -s 720x576 -aspect 4:3 -r 25 "${CNV_OUTPUT}"

Nokia ExpressMusic 5800 a partire da qualsiasi video (con audio obbligatorio)

#!/bin/bash

###############################################
###   Video  Converter                      ###
###############################################


# Bash local echo and errors:
set -x
set -e


# Output video config:
CNV_OUT_X="640"
CNV_OUT_Y="360"
CNV_OUT_EXT="mp4"
CNV_OUT_APPEND="-cv"
CNV_OUT_FPS="24"
CNV_OUT_VIDEO_CODER="-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900:mbd=2:keyint=20:v4mv:vqmin=3:lumi_mask=0.07:dark_mask=0.2:scplx_mask=0.1:tcplx_mask=0.1:naq"
CNV_OUT_AUDIO_CODER="-acodec libfaac -ac 2 -ab 192k"


# Temp filenames:
CNV_RAW_VIDEO="cnv_raw_video.avi"
CNV_RAW_AUDIO="cnv_raw_audio.wav"
CNV_TMP_VIDEO="cnv_temp_video.avi"
CNV_TMP_AUDIO="cnv_temp_audio.aac"


# Filenames:
CNV_INPUT="${1}"
CNV_IN_FPS="${2}"
CNV_OUTPUT="$(basename "${CNV_INPUT}" | sed -e "s/\(.*\)\.\(.*\)$/\1${CNV_OUT_APPEND}\.${CNV_OUT_EXT}/g")"


# Check if input file exists:
if [ ! -r "${CNV_INPUT}" ]; then
    echo "Please provide a valid input file"
    exit 1
fi

if [ -z "${CNV_IN_FPS}" ]; then
    echo "Please give the FPS value of the input file"
    exit 1
fi


# Obtain input video resolution:
CNV_IN_RES="$(ffmpeg -i "${CNV_INPUT}" 2>&1 | grep "Stream" | grep "Video" | awk -F' ' '{print $6}' | sed -e "s/,//g")"
CNV_IN_X="$(echo ${CNV_IN_RES} | awk -Fx '{print $1}')"
CNV_IN_Y="$(echo ${CNV_IN_RES} | awk -Fx '{print $2}')"


# Compute input and output video aspect:
CNV_IN_ASPECT="$(echo -e "scale=5\n${CNV_IN_X}/${CNV_IN_Y}" | bc)"
CNV_OUT_ASPECT="$(echo -e "scale=5\n${CNV_OUT_X}/${CNV_OUT_Y}" | bc)"


# Compute scaled output resolution, if needed:
if [[ ${CNV_IN_ASPECT} < ${CNV_OUT_ASPECT} ]]; then
    CNV_IN_ZOOMFAC="$(echo -e "scale=5\n${CNV_IN_Y}/${CNV_OUT_Y}" | bc)"
    CNV_SC_X="$(echo -e "${CNV_IN_X}/${CNV_IN_ZOOMFAC}" | bc)"
    CNV_SC_Y="${CNV_OUT_Y}"
elif [[ ${CNV_IN_ASPECT} = ${CNV_OUT_ASPECT} ]]; then
    CNV_SC_X="${CNV_OUT_X}"
    CNV_SC_Y="${CNV_OUT_Y}"
else
    CNV_IN_ZOOMFAC="$(echo -e "scale=5\n${CNV_IN_X}/${CNV_OUT_X}" | bc)"
    CNV_SC_X="${CNV_OUT_X}"
    CNV_SC_Y="$(echo -e "${CNV_IN_Y}/${CNV_IN_ZOOMFAC}" | bc)"
fi


# Remove any old temp file:
if [ -e "${CNV_TMP_VIDEO}" ]; then
    rm "${CNV_TMP_VIDEO}"
fi

if [ -e "${CNV_TMP_AUDIO}" ]; then
    rm "${CNV_TMP_AUDIO}"
fi

if [ -r "${CNV_OUTPUT}" ]; then
    rm "${CNV_OUTPUT}"
fi

if [ -r stream.yuv ]; then
    rm stream.yuv
fi

if [ -r stream.avi ]; then
    rm stream.avi
fi

mkfifo stream.yuv
mkfifo stream.avi


# Decode video track to rawvideo applying scaling filter:
mplayer -nosound -noframedrop -vo yuv4mpeg "${CNV_INPUT}" -vf harddup,format=i420,scale=${CNV_SC_X}:${CNV_SC_Y},expand=${CNV_OUT_X}:${CNV_OUT_Y} -fps ${CNV_IN_FPS} > /dev/null 2> /dev/null &
sleep 4

# Apply a colorspace conversion:
ffmpeg -an -f yuv4mpegpipe -r ${CNV_IN_FPS} -i stream.yuv -an -vcodec rawvideo -sameq -pix_fmt yuv420p -f rawvideo -r ${CNV_OUT_FPS} - > stream.avi 2> /dev/null &
sleep 1

# Encode video track:
mencoder stream.avi -nosound -demuxer rawvideo -rawvideo w=${CNV_OUT_X}:h=${CNV_OUT_Y}:format=i420:fps=${CNV_OUT_FPS} -ofps ${CNV_OUT_FPS} -o ${CNV_TMP_VIDEO} -vf harddup,hqdn3d ${CNV_OUT_VIDEO_CODER}


# Encode audio track:
ffmpeg -vn -i "${CNV_INPUT}" ${CNV_OUT_AUDIO_CODER} ${CNV_TMP_AUDIO}


# Final muxing of output video and audio:
MP4Box -add ${CNV_TMP_VIDEO}:fps=${CNV_OUT_FPS} -add ${CNV_TMP_AUDIO} "${CNV_OUTPUT}"


# Remove temp files:
rm stream.avi
rm stream.yuv
rm ${CNV_TMP_VIDEO}
rm ${CNV_TMP_AUDIO}

Mpeg output per DVD (VOB)

#!/bin/bash

CNV_INPUT="${1}"

if [ -z "${CNV_INPUT}" ]; then
    echo "Please give an input file"
    exit 1
fi

if [ ! -r "${CNV_INPUT}" ]; then
    echo "Input file is not readable"
    exit 1
fi

CNV_OUTPUT="$(dirname ${CNV_INPUT})/$(basename "${CNV_INPUT}" | sed -e "s/\(.*\)\.\(.*\)$/\1\-dvd.mpg/g")"

if [ -r "${CNV_OUTPUT}" ]; then
    echo -n "Output file already exists. Overwrite?? [n]: "
    read CNV_WTD
    if [ "${CNV_WTD}" != "y" ]; then
        exit 0
    fi
fi

mencoder \
    -oac lavc \
    -ovc lavc \
    -of mpeg \
    -mpegopts format=dvd:tsaf \
    -vf hqdn3d,eq2=1.0:1.0:0:1.0,harddup \
    -srate 48000 \
    -af lavcresample=48000 \
    -lavcopts vcodec=mpeg2video:trell:mbd=2:sc_threshold=1000000000:cgop:threads=2:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=9000:keyint=15:vstrict=0:acodec=mp2:abitrate=192:aspect=16/9 \
    -ofps 25 \
    -o "${CNV_OUTPUT}" \
    "${CNV_INPUT}" \

Fatti un salto su #sardylan @ irc.syrolnet.org...

Visitatore #27433 da Mon, 07 Jun 2010 15:34:36 +0200 | Pagina visitata 594 volte da Fri, 03 Dec 2010 23:21:15 +0100
L'indirizzo IP dal quale ti colleghi è 38.107.179.214 | Thursday 23 February 2012 - 0:13:40