有时候需要转换一个视频、音频文件或者文档成其他格式。
## 文本编码
文本编码可以得到完全错误的,特别是当语言需要某些特殊字符像 àäç。命令 `iconv` 可以从一个编码转换成另一个编码。
# iconv -f <from_encoding> -t <to_encoding> <input_file>
# iconv -f ISO8859-1 -t UTF-8 -o file.input > file_utf8
# iconv -l # 列显系统所支持的字符编码
若文档显示良好,通常都可不使用 -f 选项,iconv 会使用本地字符集(char-set)。
## Unix - DOS 新行
在 Unix Shell 中转换 DOS (CR/LF) 到 Unix (LF) 新行格式。也可使用 `dos2unix` 和 `unix2dos` 工具,如果你有它们的话。
# sed 's/.$//' dosfile.txt > unixfile.txt
在 Windows 环境中转换 Unix 到 Dos 新行格式。需要在 mingw 或 cygwin 中使用 sed。
# sed -n p unixfile.txt > dosfile.txt
## PDF 转换成 Jpeg 和 连接一串 PDF 文件
用 `gs` (GhostScript) 工具转换 PDF 文档的每一页成 jpeg (或 png)图像。也可以使用更短的 `convert` (来自 ImageMagick 或 GraphicsMagick 工具) 命令。
# gs -dBATCH -dNOPAUSE -sDEVICE=jpeg -r150 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 \
-dMaxStripSize=8192 -sOutputFile=unixtoolbox_%d.jpg unixtoolbox.pdf
# convert unixtoolbox.pdf unixtoolbox-%03d.png
# convert *.jpeg images.pdf # 把所有图片转换成一份简单的 PDF 文档
Ghostscript 同样可连接多个 pdf 文件成一份 PDF 文档。这仅可工作于这些 PDF 文件都 "呈现一致(well behaved)" 的情况下。
# gs -q -sPAPERSIZE=a4 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=all.pdf \
file1.pdf file2.pdf ... # 在 Windows 上使用 '#' 代替 '='
## 视频转换
使用 mpeg4 编码压缩佳能数码相机视频并修复无用音质。
# mencoder -o videoout.avi -oac mp3lame -ovc lavc -srate 11025 \
-channels 1 -af-adv force=1 -lameopts preset=medium -lavcopts \
vcodec=msmpeg4v2:vbitrate=600 -mc 0 vidoein.AVI
对于声音的处理可看 [sox](http://sox.sourceforge.net/)。
## 拷贝音频光盘
程序 [`cdparanoia`](http://xiph.org/paranoia/) 可以保存音轨(FreeBSD port 在 audio/cdparanoia/),`oggenc` 可编码 Ogg Vorbis 格式,`lame` 可转换成 mp3。
# cdparanoia -B # 拷贝音轨成 wav 文件到当前目录列表(dir)
# lame -b 256 in.wav out.mp3 # 编码成 256 kb/s 的 mp3
# for i in *.wav; do lame -b 256 $i `basename $i .wav`.mp3; done
# oggenc in.wav -b 256 out.ogg # 编码成 256 kb/s 的 Ogg Vorbis