dwing吧 关注:5,665贴子:89,010

回复:常up分享:边学边用一年多来的小技巧s

只看楼主收藏回复

这个序列图要分成三次,第1次做模糊背景,第2次做序列scale第1个的尺寸其中一边的比例,第3个才是Overlay。


IP属地:广东来自Android客户端50楼2022-01-13 21:45
回复
    -loop 1 -r 17/80 -i %2d.jpg -filter_complex "[0:v]crop=iw/2:ih/2:iw/4:ih/4,scale=1080:800,setsar=1,gblur=19[v]" -map [v] -t 80 00dd.mp4
    -loop 1 -r 17/80 -i 00g%%2d.jpg -filter_complex "[0:v]scale='if(gt(a,1080/800),1080,trunc(800*a/2)*2)':'if(lt(a,1080/800),800,trunc(1080/a/2)*2)',pad=1080:800:'if(gt(a,ow/oh),0,(ow-iw)/2)':'if(lt(a,ow/oh),0,(oh-ih)/2)':color=#008000,setsar=1[v]" -map [v] -t 80 00du.mp4
    -i 00dd.mp4 -i 00du.mp4 -filter_complex "[1:v]chromakey=0x008000:0.1:0.0,setsar=1,setpts=PTS-STARTPTS[a],[0:v][a]overlay=(W-w)/2:(H-h)/2,setsar=1,setpts=PTS-STARTPTS[v]" -map [v] -t 80 -crf 25 -preset faster -r 25 00out.mp4
    同样三个步骤 这种方法,可以保留原图比例且同图背景模糊OVELAY的效果。唯一缺点: 如果图片的颜色是#008000则会变透明。


    IP属地:广东51楼2022-01-19 15:00
    收起回复
      转的,时间参数:
      %y 两位数的年份表示(00-99)
      %Y 四位数的年份表示(000-9999)
      %m 月份(01-12)
      %d 月内中的一天(0-31)
      %H 24小时制小时数(0-23)
      %I 12小时制小时数(01-12)
      %M 分钟数(00=59)
      %S 秒(00-59)
      %a 本地简化星期名称
      %A 本地完整星期名称
      %b 本地简化的月份名称
      %B 本地完整的月份名称
      %c 本地相应的日期表示和时间表示
      %j 年内的一天(001-366)
      %p 本地A.M.或P.M.的等价符
      %U 一年中的星期数(00-53)星期天为星期的开始
      %w 星期(0-6),星期天为星期的开始
      %W 一年中的星期数(00-53)星期一为星期的开始
      %x 本地相应的日期表示
      %X 本地相应的时间表示
      %Z 当前时区的名称
      %% %号本身


      IP属地:广东52楼2022-01-21 14:08
      回复

        drawtext=msyh.ttf:text='可用冒号%{pts\:localtime\:1641630398\:%Y年%m月%d日-\\\%H\\\:%M\\\:%S}'
        drawtext=msyh.ttf:text='用文字%{pts\:localtime\:1641630398\:%Y年%m月%d日-%H时%M分%S秒}'
        当年一直想做这样的效果,但是无法搞个冒号,原来当初只差一点点就行了。


        IP属地:广东53楼2022-01-21 14:53
        回复
          vstack 竖排
          hstack 并排
          xstack NXN排
          想取最短时间,用 :SHORTEST=1


          IP属地:广东54楼2022-01-24 12:04
          回复
            More than 1000 frames duplicated 卡住不动时,所有[视频输出]前加设FPS,例如 ......,fps=25,setsar[v1],......,fps=25,setsar[v2],


            IP属地:广东来自Android客户端55楼2022-03-04 15:39
            回复
              回复27楼
              ff -i "concat:.\in1.ts|.\in2.ts|.\in3.ts" -c copy .\out.ts 这种做法基本上只有出来是第1个文件,哪怕是同规格的编码出来的文件,如果,从从参数出来的文件合并应该用list的的方法,而list是可以用bat来生成的 (for %%i in (*.mp4) do @璐村惂鐢ㄦ埛_000076K馃惥 file '%cd%\%%i') > list.txt 然后再 ff -y -safe 0 -f concat -i list.txt -c copy list.mp4
              %cd%如果是在同一文件夹内就不用


              IP属地:广东57楼2022-03-11 10:55
              回复
                能够直接 -ss -t 剪到秒的设置(每24帧为关键帧)
                -keyint_min 24 -g 24 -sc_threshold 0 在编码输出文件前加上,就能出来的文件剪切到任意秒也不会不同步。因为正常编码默认是250即大约10秒为关键帧,所以不同步。
                但这样编码出来的文件比正常码率会高一两成,速度也慢一两成。但对于一般想随意剪切的百秒内小视频,几乎无影响。但方便极方便无重编码剪切。


                IP属地:广东58楼2022-03-29 10:57
                回复
                  多重截取还是-SS -TO 几个输入再CONCAT更快捷,以下为例,虽然视频只有18.5秒,但编码时长为260秒。
                  select='between(t,204,206.5)+between(t,97,106)+between(t,374,391)',setpts=N/FRAME_RATE/TB" -af "aselect='between(t,204,206.5)+between(t,97,106)+between(t,374,391)',asetpts=N/SR/TB"
                  一般输入文件不大于一分钟或一百秒内,才可以用select 或TRIM,否则,只会更浪费时间。
                  trim=15.8:31.5,setpts=PTS-STARTPTS,atrim=15.8:31.5,asetpts=PTS-STARTPTS


                  IP属地:广东59楼2022-03-29 13:10
                  回复
                    drawtext timecode 不要选微软雅黑。
                    就能解决数字左右晃动的问题。


                    IP属地:广东来自Android客户端60楼2022-03-31 08:45
                    回复
                      找关键帧-c copy其实没有解决方法的。
                      只能找最接近的可接受的解决方法:无论是电脑Klite或手机MXPlayer,受到关键帧影响,不能随意拖到任意秒来开始播放。但会有一定的起始时间(即关键帧时间点),选-ss前和-to后的拖放起始的秒数。这样的话--c copy就基本上能做到同步了,出来的文件Duration与Source duration的偏差基本上一秒内甚至为0.
                      至于-ss在-i之前和之后对-c cop影响是不几乎不存在的。在-i后最多差1秒的读取时间。
                      另外,在输出文件之前加上 -vsnyc 2 -r 75 这样出来的文件的FPS就是可变的FPS,因为有很多时候手机拍的视频都是可变FPS,这样编码就可以保持原文件的FPS了。


                      IP属地:广东61楼2022-04-14 11:16
                      回复
                        [libfdk_aac @ 0x76dee8f700] Queue input is backward in time
                        遇到这个情况编码出来的会不同步,要修正就用。 -async 1
                        但是如果想要动态帧率就要这样处理。
                        -async 2 -r 75 这样就能满足一般手机拍摄的视频的原帧率编码。


                        IP属地:广东来自Android客户端62楼2022-04-21 16:40
                        收起回复
                          回复35楼。:enable='between(t,16,26)这是指定时间且只有一个overlay,如果是第2或以后的话,就用+秒数/tb(开始时间),不指定时间则不设置between,以下
                          overlay的eof_action参数:
                          eof_action=0:重复前一帧(默认,不用写出来)
                          eof_action=1:停止所有流
                          eof_action=2:停留在主画面


                          IP属地:广东来自Android客户端63楼2022-05-01 19:45
                          回复
                            ,drawtext=/storage/emulated/0/fonts/msyh.ttf:text='选自电影《冰河世纪五》31分',subtitles='/storage/emulated/0/ic5+.mkv:si=5':fontsdir='/storage/emulated/0/fonts/':force_style='fontname=微软雅黑,arial,scalex=1.5,scaley=3,MarginL=2,MarginR=2,marginV=-32,OutlineColour=&H000456,BorderStyle=1,outline=4'
                            双语字幕要这样操作。


                            IP属地:广东来自Android客户端64楼2022-05-30 15:27
                            回复
                              -ss 9 -t 1 -i aa.mp4 -i "啊.mp3" -filter_complex "[0:v]pad=800:800:40:80,drawtext=ft.ttf:text='十大恶心BGM之一':fontsize=60:fontcolor=white,setsar=1,loop=31:size=31*25[v],[1:a]adelay=390|390,aloop=loop=30:size=2*48000[a]" -map [v] -map [a] -c:a libfdk_aac -t 33.0 大厂的十大恶心bgm出自哪位球员.mp4 -y
                              终于搞定了循环的问题。v循环32次a频循环31次,为什么要这样写法?我也不懂。反正误打误撞的情况下测试成功了。


                              IP属地:广东来自Android客户端65楼2022-06-22 07:34
                              收起回复