I am LAZY bones? AN ancient AND boring SITE

2008年 08月 12日 的归档

给 iPod 转视频的脚本

由于新买了个 iPod touch,这几天认真钻研了下它的视频格式,搞了个nautilus脚本,使用mencoder做后端.
以后想把某个视频文件转成iPod的格式的话,直接在 nautilus 里面右键点文件-脚本-toIpod 就可以搞定了.
脚本的特点:
* 借助mplayer的强大,支持N多的源格式(已测试: avi rmvb mov flv).
* 支持srt/ass格式的外挂字幕.
* 自动缩放画面比例到适合ipod touch的480*320,如果是 ipod shuffle 之类的话,可以自己修改下脚本.
* 可视化的进度提示
* 转换速度较快
* 默认保存到当前目录,可修改脚本,输出到统一目录,方便管理.会自动加上 _ipod.mp4 的后缀名.
使用方法,保存以下脚本到 ~/.gnome2/nautilus-scripts/toIpod ,并加可执行权限…或者这里下载

PS: 如果压缩出来的字幕有乱码,请参照我以前的文章,建个 ~/.mplayer/mencoder.conf 文件,写上一行 subcp=cp936 就好了.

#!/bin/bash
#filename: ~/.gnome2/nautilus-scripts/toIpod
#Copyright (c) 2008 bones7456 (bones7456<A>gmail<D>com)
#License: GPL
#version 20081101
#用于将视频转成 ipod touch / iphone 格式.右击文件使用
 
SAVEDIR=`pwd`
#SAVEDIR="/data/movie"
 
INFILE="$1"
PWD=`pwd`
CMD="mencoder -of lavf -lavfopts format=mp4 -oac lavc -ovc lavc "
CMD+="-lavcopts aglobal=1:vglobal=1:vcodec=mpeg4:vbitrate=600:acodec=libfaac:abitrate=128 "
CMD+="-af lavcresample=22050 -vf dsize=480:320:0,scale=0:0,expand=480:320,harddup -ofps 25 -srate 22050 "
P="没有找到对应的字幕."
if [[ -f "${INFILE%.*}.srt" ]];then
	CMD+=" -sub ""\"$PWD/${INFILE%.*}.srt\""
	P="找到字幕文件: ""${INFILE%.*}.srt"
elif [[ -f "${INFILE%.*}.ssa" ]];then
	CMD+=" -sub ""\"$PWD/${INFILE%.*}.ssa\""
	P="找到字幕文件: ""${INFILE%.*}.ssa"
elif [[ -f "${INFILE%.*}.aas" ]];then
	CMD+=" -sub ""\"$PWD/${INFILE%.*}.aas\""
	P="找到字幕文件: ""${INFILE%.*}.aas"
fi
 
CMD+=" -o ""\"$SAVEDIR/${INFILE%.*}_ipod.mp4\""" ""\"$PWD/$INFILE\""
P+="\n\n保存目录: $SAVEDIR"
P+="\n\n是否继续?"
#echo "$CMD" >> ~/toIpod.log
if ! zenity --question --text "$P" ; then
	exit 0;
fi
 
eval "$CMD 2>&1" |\
while read line; do echo $line |\
awk -F '[ :\(\)%]+' '/^Pos/{print "# 速度:",$5,"(点\"取消\"转入后台运行.)";print $4}' ; done |\
zenity --progress --title "正在转换..." --percentage=0 --auto-close --width=500

截图:
工作截图