#!/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
#!/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}"
#!/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}"
#!/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}
#!/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