添加字幕:
ffplay -vf drawtext="fontfile=arial.ttf: text='Test Text': x=100: y=300: \
 fontsize=48: fontcolor=red: box=1: boxcolor=white" /d/ts/music.ts
把x=100 改成 x=50*t 可以使文本向右滚动。

./ffplay -vf drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text': x=100: y=50: fontsize=24: fontcolor=yellow@0.2: box=1: boxcolor=red@0.2" h.mp4

黑白漫画风格显示:
ffplay -vf edgedetect=low=0.1:high=0.4 /d/ts/music.ts

./ffplay -vf edgedetect=low=0.1:high=0.4 h.mp4

对比正常视频和deshake 过的视频:
-vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'

堆叠视频/马赛克:
ffplay /d/ts/music.ts -vf 'scale=128:72,tile=4x4'
ffplay /d/ts/mis.ts -vf select='gt(scene\,0.4)',scale=160:120,tile

快进:
ffplay /d/ts/mis.ts -vf setpts=0.5*PTS

Audio Source:
 生成440Hz正弦信号,设置采样率为8000Hz:
 ffplay -nostats -f lavfi aevalsrc="sin(440*2*PI*t)::s=8000"

Video Source:
 元包自动机:
 ffplay -nostats -f lavfi cellauto
 类似地,还有分形图案mandelbrot, 模拟life, 测试testsrc

todo:
how to use "nullsrc" <--the input content is to be ignored. for analysis/debugging?
synthesize a voice utterance using libflite

[0]=>Parsed_setpts_0

[1]=>ffplay_buffersink

[2]=>ffplay_crop

[3]=>ffplay_buffer

(gdb) p *filter->graph->filters[0]->inputs[0]->srcpad
$266 = {name = 0x8ee5a3d "default", type = AVMEDIA_TYPE_VIDEO, min_perms = 0, rej_perms = 0, start_frame = 0, get_video_buffer = 0,
  get_audio_buffer = 0, end_frame = 0, draw_slice = 0, filter_frame = 0, poll_frame = 0x8078c28 <poll_frame>,
  request_frame = 0x8078ba5 <request_frame>, config_props = 0x8078b01 <config_props>, needs_fifo = 0, needs_writable = 0}
(gdb) p *filter->graph->filters[1]->inputs[0]->srcpad
$267 = {name = 0x8eeef6c "default", type = AVMEDIA_TYPE_VIDEO, min_perms = 0, rej_perms = 0, start_frame = 0, get_video_buffer = 0,
  get_audio_buffer = 0, end_frame = 0, draw_slice = 0, filter_frame = 0, poll_frame = 0, request_frame = 0,
  config_props = 0x808fc6e <config_output>, needs_fifo = 0, needs_writable = 0}
(gdb) p *filter->graph->filters[2]->inputs[0]->srcpad
$268 = {name = 0x8ee8ccc "default", type = AVMEDIA_TYPE_VIDEO, min_perms = 0, rej_perms = 0, start_frame = 0, get_video_buffer = 0,
  get_audio_buffer = 0, end_frame = 0, draw_slice = 0, filter_frame = 0, poll_frame = 0, request_frame = 0, config_props = 0,
  needs_fifo = 0, needs_writable = 0}

(gdb) p *filter->graph->filters[0]->inputs[0]->dstpad
$270 = {name = 0x8ee8ccc "default", type = AVMEDIA_TYPE_VIDEO, min_perms = 0, rej_perms = 0, start_frame = 0, get_video_buffer = 0,
  get_audio_buffer = 0, end_frame = 0, draw_slice = 0, filter_frame = 0x8083a6b <filter_frame>, poll_frame = 0, request_frame = 0,
  config_props = 0x80838c9 <config_input>, needs_fifo = 0, needs_writable = 0}
(gdb) p *filter->graph->filters[1]->inputs[0]->dstpad
$271 = {name = 0x8ee4fec "default", type = AVMEDIA_TYPE_VIDEO, min_perms = 0, rej_perms = 0, start_frame = 0, get_video_buffer = 0,
  get_audio_buffer = 0, end_frame = 0, draw_slice = 0, filter_frame = 0x80768fe <filter_frame>, poll_frame = 0, request_frame = 0,
  config_props = 0, needs_fifo = 0, needs_writable = 0}
(gdb) p *filter->graph->filters[2]->inputs[0]->dstpad
$272 = {name = 0x8eeef6c "default", type = AVMEDIA_TYPE_VIDEO, min_perms = 0, rej_perms = 0, start_frame = 0, get_video_buffer = 0,
  get_audio_buffer = 0, end_frame = 0, draw_slice = 0, filter_frame = 0x808fcb0 <filter_frame>, poll_frame = 0, request_frame = 0,
  config_props = 0x808f4c2 <config_input>, needs_fifo = 0, needs_writable = 0}

(gdb) p *filter->graph->filters[3]->inputs
Cannot access memory at address 0x0

(gdb) p *filter->graph->filters[0]->outputs[0]->srcpad
$275 = {name = 0x8ee8ccc "default", type = AVMEDIA_TYPE_VIDEO, min_perms = 0, rej_perms = 0, start_frame = 0, get_video_buffer = 0,
  get_audio_buffer = 0, end_frame = 0, draw_slice = 0, filter_frame = 0, poll_frame = 0, request_frame = 0, config_props = 0,
  needs_fifo = 0, needs_writable = 0}

(gdb) p *filter->graph->filters[1]->outputs[0]->srcpad
Cannot access memory at address 0x0
(gdb) p *filter->graph->filters[2]->outputs[0]->srcpad
$276 = {name = 0x8eeef6c "default", type = AVMEDIA_TYPE_VIDEO, min_perms = 0, rej_perms = 0, start_frame = 0, get_video_buffer = 0,
  get_audio_buffer = 0, end_frame = 0, draw_slice = 0, filter_frame = 0, poll_frame = 0, request_frame = 0,
  config_props = 0x808fc6e <config_output>, needs_fifo = 0, needs_writable = 0}
(gdb) p *filter->graph->filters[3]->outputs[0]->srcpad
$277 = {name = 0x8ee5a3d "default", type = AVMEDIA_TYPE_VIDEO, min_perms = 0, rej_perms = 0, start_frame = 0, get_video_buffer = 0,
  get_audio_buffer = 0, end_frame = 0, draw_slice = 0, filter_frame = 0, poll_frame = 0x8078c28 <poll_frame>,
  request_frame = 0x8078ba5 <request_frame>, config_props = 0x8078b01 <config_props>, needs_fifo = 0, needs_writable = 0}

(gdb) p *filter->graph->filters[0]->outputs[0]->dstpad
$278 = {name = 0x8eeef6c "default", type = AVMEDIA_TYPE_VIDEO, min_perms = 0, rej_perms = 0, start_frame = 0, get_video_buffer = 0,
  get_audio_buffer = 0, end_frame = 0, draw_slice = 0, filter_frame = 0x808fcb0 <filter_frame>, poll_frame = 0, request_frame = 0,
  config_props = 0x808f4c2 <config_input>, needs_fifo = 0, needs_writable = 0}
(gdb) p *filter->graph->filters[1]->outputs[0]->dstpad
Cannot access memory at address 0x0
(gdb) p *filter->graph->filters[2]->outputs[0]->dstpad
$279 = {name = 0x8ee4fec "default", type = AVMEDIA_TYPE_VIDEO, min_perms = 0, rej_perms = 0, start_frame = 0, get_video_buffer = 0,
  get_audio_buffer = 0, end_frame = 0, draw_slice = 0, filter_frame = 0x80768fe <filter_frame>, poll_frame = 0, request_frame = 0,
  config_props = 0, needs_fifo = 0, needs_writable = 0}
(gdb) p *filter->graph->filters[3]->outputs[0]->dstpad
$280 = {name = 0x8ee8ccc "default", type = AVMEDIA_TYPE_VIDEO, min_perms = 0, rej_perms = 0, start_frame = 0, get_video_buffer = 0,
  get_audio_buffer = 0, end_frame = 0, draw_slice = 0, filter_frame = 0x8083a6b <filter_frame>, poll_frame = 0, request_frame = 0,
  config_props = 0x80838c9 <config_input>, needs_fifo = 0, needs_writable = 0}

#0  ff_filter_frame (link=0xad333a20, frame=0xad334020) at libavfilter/avfilter.c:1163
#1  0x08090098 in filter_frame (link=0xad333f60, frame=0xad334020) at libavfilter/vf_crop.c:297
#2  0x080729c1 in ff_filter_frame_framed (link=0xad333f60, frame=0xad334020) at libavfilter/avfilter.c:1081
#3  0x08072d35 in ff_filter_frame (link=0xad333f60, frame=0xad334020) at libavfilter/avfilter.c:1161
#4  0x08084382 in filter_frame (inlink=0xad333940, frame=0xad334020) at libavfilter/setpts.c:210
#5  0x080729c1 in ff_filter_frame_framed (link=0xad333940, frame=0xad334020) at libavfilter/avfilter.c:1081
#6  0x08072d35 in ff_filter_frame (link=0xad333940, frame=0xad334020) at libavfilter/avfilter.c:1161
#7  0x08078c26 in request_frame (link=0xad333940) at libavfilter/buffersrc.c:500
#8  0x08070bcf in ff_request_frame (link=0xad333940) at libavfilter/avfilter.c:346
#9  0x08070bf4 in ff_request_frame (link=0xad333f60) at libavfilter/avfilter.c:348
#10 0x08070bf4 in ff_request_frame (link=0xad333a20) at libavfilter/avfilter.c:348
#11 0x08076a3b in av_buffersink_get_frame_flags (ctx=0xad3332a0, frame=0xad500480, flags=0) at libavfilter/buffersink.c:138

ffplay 中filter的使用的更多相关文章

  1. css中filter:alpha透明度使用

    css中filter:alpha透明度使用    使用filter可以设置透明度,filter:alpha在IE下是没有问题的,要支持firefox就需要使用-moz-opacity,下面有个不错的示 ...

  2. python中filter、map、reduce的区别

    python中有一些非常有趣的函数,今天也来总结一下,不过该类的网上资料也相当多,也没多少干货,只是习惯性将一些容易遗忘的功能进行整理. lambda 为关键字.filter,map,reduce为内 ...

  3. jquery中filter(fn)的使用研究

    jquery中filter(fn)给出的官方说明是: 筛选出与指定函数返回值匹配的元素集合 这个函数内部将对每个对象计算一次 (正如 '$.each'). 如果调用的函数返回false则这个元素被删除 ...

  4. 024——VUE中filter的使用

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. python中filter函数

    python中filter()函数   filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断 ...

  6. 了解IE中filter属性的应用!

    在设置不透明属性时,经常用opacity来增加层次感或者增加用户体验,但这个属性是css3属性,对于低级浏览器的兼容性来说就达不到预期的效果. 一般而言,我们都尽可能少用一些浏览私有属性-webkit ...

  7. Java中filter内处理重定向遇到的问题

    这是在Java中filter内处理重定向遇到的问题.本意是写一个做URL rewrite 的filter,来重写URL,同时在处理登陆过程中要杀掉当前session,创建新session来代替. 1. ...

  8. vuex中filter的使用 && 快速判断一个数是否在一个数组中

    vue中filter的使用 computed: mapState({ items: state => state.items.filter(function (value, index, arr ...

  9. python2和python3中filter函数

    在python2和python3中filter是不同的,其中在python2中filter返回的是一个list,可以直接使用 >>> a = [1,2,3,4,5,6,7] > ...

随机推荐

  1. [转]rpcndr.h和wtypes.h冲突Bug的解决方案

    [转]rpcndr.h和wtypes.h冲突Bug的解决方案 http://blog.csdn.net/tzwh_86/article/details/9495133 rpcndr.h和wtypes. ...

  2. MVVMLight leaning note

    Learning Note For MvvmLight MvvmLight quitstart refer link1 : MVVMLight HelloWorld *** mc:Ignorable ...

  3. 技术揭秘12306改造(一):尖峰日PV值297亿下可每秒出票1032张

    [编者按]12306网站曾被认为是"全球最忙碌的网站",在应对高并发访问处理方面,曾备受网民诟病. 2015年铁路客票春运购票高峰期已过,并且12306网站今年没"瘫痪& ...

  4. To add private variable to this Javascript literal object

    You can use number as function/variable name, the numberic name can't be accessed from parent scope, ...

  5. Differences Between Xcode Project Templates for iOS Apps

    Differences Between Xcode Project Templates for iOS Apps When you create a new iOS app project in Xc ...

  6. xml之Schema架构

    1.什么是Schema架构 2.Schema文档结构  3.Schema元素类型 1>element元素 <!--简单数据:类型--> <xs:element name=&qu ...

  7. 【收藏】win7打开word每次提示配置解决办法

    打开“我的电脑”——“ C:\Program Files\Common Files\Microsoft Shared\OFFICE12\Office Setup Controller ”——找到一个“ ...

  8. 浅谈GitHub

    Git 是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub. Gith是一个基于 git 的社会化代码分享社区,所谓 social coding.你 ...

  9. 【CentOS】Eclipse插件egit使用

    1.简介 2.安装 3.配置 4.使用 5.补充说明   参考资料: http://yufenfei.iteye.com/blog/1750124    1.简介     EGit就是一款Eclips ...

  10. 【BZOJ】【3442】学习小组

    网络流/费用流 orz zyf 裸的费用流,根据题目描述即可建出如下的图: S->i 费用表示每有一个加入第 i 个小组的学生,需要花的钱,由于是跟流量(人数)的二次方相关,所以要拆边……然后每 ...