分享

利用libavfilter来实现加水印 LOGO

 jas0n_liu 2012-08-03
1、 先安装faac和x264
faac 编译方式为:#./configure --prefix=/usr
报错:mpeg4ip.h:126: error: new declaration 'char* strcasestr(const char*, const char*)’
解决方法: 从123行开始修改此文件mpeg4ip.h,到129行结束

修改前:
#ifdef __cplusplus
extern "C" {
#endif
char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif
修改后:
#ifdef __cplusplus
extern "C++" {
#endif
const char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif
2、x264 编译方式为:./configure --prefix=/usr --enable-shared

3 、下一步就是安装 libavfilter
svn checkout svn://svn.mplayerhq.hu/soc/libavfilter
cd libavfilter/
./checkout.sh
checkout时可能会报:Reversed (or previously applied) patch detected!  Assume -R? [n]
忽略
cd ffmpeg/
./configure  --enable-libx264  --disable-ffplay   --enable-gpl   --enable-pthreads --enable-libfaac --enable-nonfree --enable-postproc

3 最后编译mplayer,为了防止下载ffmpeg,在configure文件中注释掉了git下载部分,可参考源码包
./configure  --enable-ass-internal --prefix=/usr/local/mplayer

比较全的http://blog.csdn.net/yue_wu151/article/details/6054126#viewSource
#!/bin/sh
  infile="test.flv"
  outfile="test.mp4"
  options="-vcodec libx264 -b 512k -flags +loop+mv4 -cmp 256  -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -me_method hex -subq 7       -trellis 1 -refs 5 -bf 3 flags2 +bpyramid+wpred+mixed_refs+dct8x8 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71         -qmin 10  -qmax 51 -qdiff 4"
 
  #ffmpeg -y -i "$infile" -acodec libfaac -ar 44100 -ab 96k -pass 2 -threads 2 $options "$outfile"
接下来介绍视频选项:
-b 指定码率注意单位是bit/s,所以我们一般要加k,比如 -b 1000k 就是1000kb/s
-g 设置组的大小
-vframes 指定要编码的帧数,比如-vframes 1 就是编码1帧,截图的时候就这样写.
-r 指定帧率,默认是25
-s 指定图像分辨率,用wxh的格式,比如320×240
-aspect 指定宽高比 可以些16:9这种,也可以写小数比如1.3333
-croptop 指定顶部裁减多少像素,类似的还有-cropleft -cropright -cropbuttom
-bt 设置比特率容许的误差,默认4000k,在第一阶段时使用这个参数会告诉码率控制器能够偏移平均码率多远,这个选项和最大最小码率无关.设太小了不利于质量
-maxrate 和-minrate 指定允许的最大和最小码率,一般如果要用cbr模式编码的话会用这个:
ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v
否则用处不大
-vcodec 强制使用某种编码器
-sameq 使用和源文件相同的质量,这个选项是动态码率的
-pass 指定编码阶段,这个只有1和2,第一阶段的时候应该不处理音频,并且把输出导向空,比如
音频部分:
-ar 设置采样频率,默认44100hz
-ab 设置比特率,默认64k
-an 禁用音频录制
-acodec 指定音频编码器


支持添加字幕:需要安装libass
首先安装freetype2
yum install freetype*
安装libass
tar zxvf libass-0.9.11.tar.gz
cd libass-0.9.11
./configure
make
make install
vi /etc/ld.so.conf
添加/usr/local/lib
ldconfig

重新编译安装mplayer
cd mplayer
./configure  --enable-ass-internal --prefix=/usr/local/mplayer
make
make install
测试:
/usr/local/mplayer/bin/mencoder -ass 查看是否支持ass
/usr/local/mplayer/bin/mencoder -voc -help 查看mencoder是否正确
mplayer/bin/mencoder -sub 222.ass -ass  -subcp utf8 -vf ass -oac pcm -ovc x264 -mc 0  -nobps 1202DQZTXXYWTCYJ610060.mp4 -o 222.avi
如果报错找不到字幕文件ass
将字幕添加到安装用户的根目录下,例:/root/.mplayer/subfont.ttf

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多