2010年4月27日星期二

Linux下多媒体处理

使用Linux,多媒体软件不像WIndows下的那么多,不过要知道,很多图形工作站中运行的都是Linux操作系统,一些大片中的3D特效也是在Linux下完成的。只要是掌握了Linux的使用方式,一切就好办了。


下面是一些可能比较常见的关于多媒体处理的东西。


保存串流视频(mms/rtsp)
mplayer -dumpfile dump.rm -dumpstream rstp://..


批量将rmvb转为avi
#ipod touch可用
for i in *.rmvb; do mencoder -vf harddup -oac mp3lame -lameopts vbr=3 -ovc xvid -xvidencopts fixed_quant=4 -of avi $i -o `echo $i | sed -e 's/rmvb$/avi/'`; done


批量将DVD转为avi
for i in *.VOB; do mencoder -oac mp3lame -lameopts aq=7:vbr=2:q=6 -srate 44100 -ovc xvid -xvidencopts fixed_quant=4 -of avi $i -o `echo $i | sed -e 's/VOB$/avi/'`; done


批量将任何格式的电影转为ogv


#sudo apt-get install ffmpeg2theora


#firefox3.5或chrome直接支持播放,无需安装任何解码器,注意不支持rmvb,rmvb会出现a/v不同步问题


for i in *; do ffmpeg2theora --optimize --deinterlace $i; done


批量将rmvb格式的电影转为ogv
#!/bin/bash
for i in *; do
mkfifo "/tmp/$i"
mencoder -quiet -vf harddup -ovc raw -oac pcm -o "/tmp/$i" "$i" &
ffmpeg2theora --optimize --deinterlace "/tmp/$i" -o "`echo $i | sed 's/\(.*\)\..*$/\1/'`.ogv"
rm "/tmp/$i"
done


利用gst来转换任意电影为ogv
#!/bin/bash
for i in *; do
gst-launch-0.10 filesrc location="$i" ! decodebin name=demux \
{ oggmux name=mux ! filesink location="`echo $i | sed 's/\(.*\)\..*$/\1/'`.ogv" } \
{ demux. ! queue ! audioconvert ! vorbisenc ! queue ! mux. } \
{ demux. ! queue ! ffmpegcolorspace ! videorate ! theoraenc ! mux. }
done


批量转换任意文件为ipod touch使用的mp4
#!/bin/bash
#sudo apt-get install mencoder mplayer
find . -name '*.avi' -o -name '*.rm' -o -name '*.rmvb' -o -name '*.wmv' -o \
-name '*.vob' -o -name '*.asf' -o -name '*.mpg' -o -name '*.ts' -o \
-name '*.flv' -o -name '*.mpeg' -o -name '*.ogv' -o -name '*.mov' -o \
-name '*.mkv' -o -name '*.dat' | while read i; do
basename=`echo $i | sed 's/\(.*\)\..*$/\1/'`
font="WenQuanYi Zen Hei"
if [ -f "${basename}.srt" ] ; then
cp "${basename}.srt" $$.srt
m0="-vf scale=480:-10,harddup -sub $$.srt -unicode -subcp GB18030 -subfont-text-scale 3";
else
m0="-vf scale=480:-10,harddup";
fi


x0="-lavfopts format=mp4 -faacopts mpeg=4:object=2:raw:br=160 -oac faac -ovc x264 -sws 9 -x264encopts nocabac:level_idc=30:bframes=0:global_header:threads=auto:subq=5:frameref=6:partitions=all:trellis=1:chroma_me:me=umh:bitrate=500 -of lavf -ofps 24000/1001";
mencoder $m0 -fontconfig -font "${font}" $x0 -o "$$.mp4" "$i"
mv "$$.mp4" "${basename}.mp4"
if [ -f "${basename}.mp4" ] ; then
rm "$i"
fi
done


图形界面为ipod touch转mp4的方法
先确保有zenity和memcoder
wget http://linuxfire.com.cn/~lily/toIpod -O ~/.gnome2/nautilus-scripts/toIpod && chmod +x ~/.gnome2/nautilus-scripts/toIpod


在nautilus里对视频文件点右键,选择"脚本"-"toIpod"
mencoder/mplayer 反拉丝参数
-vf lavcdeint


合并多个 rm 文件为一个 avi 文件
mencoder -ovc lavc 1.rm -oac mp3lame -o 1.avi
mencoder -ovc lavc 2.rm -oac mp3lame -o 2.avi
mencoder -idx 1.avi -ovc copy -oac copy -o o1.avi
mencoder -idx 2.avi -ovc copy -oac copy -o o2.avi
cat o1.avi o2.avi | mencoder -noidx -ovc copy -oac copy -o output.avi -


CD 抓轨为 mp3 (有损)
#sudo apt-get install abcde
abcde -o mp3 -b


CD 抓轨为 Flac (无损)
#sudo apt-get install abcde
abcde -o flac -b


ape 转换为 flac
#sudo apt-get install flac shntool iconv
iconv -f GB2312 -t UTF-8 example.cue -o example_UTF-8.cue
shntool split -t "%n.%p-%t" -f example_UTF-8.cue -o flac example.ape -d flacOutputDir


ape/flac 转换为 mp3
#sudo apt-get install flac shntool lame
#ape 需要安装 monkeys 包
iconv -f GB2312 -t UTF-8 example.cue -o example_UTF-8.cue
shntool split -t "%n.%p-%t" -f example_UTF-8.cue -o 'cust ext=mp3 lame --r3mix -b 320 --quiet - %f' example.ape -d mp3OutputDir


批量将 ape 转为 mp3
for i in *.ape; do shnconv -i ape -o "cust ext=mp3 lame -b 320 - %f" "$i" -d mp3OutputDir; done


批量将 flac 转为 mp3
for i in *.flac; do shnconv -i flac -o "cust ext=mp3 lame -b 320 - %f" "$i" -d mp3OutputDir; done


批量将svg转为png
for i in *.svg; do inkscape $i --export-png=`echo $i | sed -e 's/svg$/png/'`; done


批量转换格式到mp3
#sudo apt-get install lame mplayer


for i in *; do base=${i%.*}; mplayer -quiet -vo null -vc dummy -af volume=0,resample=44100:0:1 -ao pcm:waveheader:file="$i.wav" "$i" ; lame -V0 -h -b 192 -vbr-new "$i.wav" "$base.mp3"; rm -f "$i.wav" ; done


批量缩小图片到30%
for i in *.jpg; do convert -resize 30%x30% "$i" "sm-$i"; done


批量转换jpg到png
or i in *.jpg; do convert $i `echo $i | sed -e 's/jpg$/png/'`; done


如何压缩png图片
#sudo apt-get install optipng
optipng -o7 old.png new.png
#或 sudo apt-get install pngcrush
#pngcrush -brute old.png new.png

没有评论:

发表评论