作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个隔行扫描视频流,需要在自定义视频帧上应用一个过滤器(任何将两帧作为输入的过滤器,例如 tblend 或 lut2),并将它们的输出放置在大型机之间,如下所示:
Input frames: [1] [2] [3] ..... FPS=25
| \ / | \ / |
| \ / | \ / |
Output frames: [1] [f(1,2)] [2] [f(2,3)] [3] ..... FPS=50 i/p
我想我需要
select filter + Expressions
选择框架,但我不知道该怎么做
Input has no audio stream.
Output = uncompressed yuv422 8bits in AVI container
the output scan type can be interlaced or progressive
I have to do this with just one command.
我试过
FFmpeg -i in.avi -vf tblend -vcodec rawvideo out.avi
,但是这个命令的输出不是我想要的。
最佳答案
你可以链tblend
, interleave
和 setpts
过滤器,而交错过滤器的两个输入是 tblend
的输出和原始视频:
示例(假设输入帧率为 25Hz):
ffmpeg -y -i in.avi -filter_complex "[0:v]tblend=all_mode=average[v1],[v1][0:v]interleave,setpts=N/50/TB" -r 50 -vcodec rawvideo -pix_fmt bgr24 out.avi
[0:v]tblend=all_mode=average[v1]
使用 tblend
创建一个流过滤器,并为输出提供临时名称 [v1]
. [v1][0:v]interleave
申请 interleave [v1]
的过滤器和原始视频。 setpts=N/50/TB
修复时间戳以应用 50fps 输出视频。 -r 50
将输出帧速率设置为 50Hz。 -pix_fmt bgr24
, 因为
yuv422
不使用 MPC-HC 播放。
-r 25
、rate=1
和 setpts=N/25/TB
用于创建 25Hz 的计数): ffmpeg -y -f lavfi -r 25 -i testsrc=size=192x108:rate=1:duration=10 -vf setpts=N/25/TB -vcodec rawvideo -pix_fmt bgr24 in.avi
ffmpeg -y -i in.avi -filter_complex "[0:v]tblend=all_mode=average[v1],[v1][0:v]interleave,setpts=N/50/TB" -r 50 -vcodec rawvideo -pix_fmt bgr24 out.avi
'drop_even, 1'
Only output odd frames, even frames are dropped, generating a frame with unchanged height at half frame rate.
------> time
Input:
Frame 1 Frame 2 Frame 3 Frame 4
11111 22222 33333 44444
11111 22222 33333 44444
11111 22222 33333 44444
11111 22222 33333 44444
Output:
11111 33333
11111 33333
11111 33333
11111 33333
ffmpeg -y -f lavfi -i testsrc=size=192x108:rate=2:duration=10 -vf tinterlace=drop_even,fieldorder=tff -vcodec rawvideo -pix_fmt bgr24 in_drop_even.avi
'interleave_top, 4'
Interleave the upper field from odd frames with the lower field from even frames, generating a frame with unchanged height at half frame rate.
------> time
Input:
Frame 1 Frame 2 Frame 3 Frame 4
11111<- 22222 33333<- 44444
11111 22222<- 33333 44444<-
11111<- 22222 33333<- 44444
11111 22222<- 33333 44444<-
Output:
11111 33333
22222 44444
11111 33333
22222 44444
ffmpeg -y -f lavfi -i testsrc=size=192x108:rate=2:duration=10 -vf tinterlace=interleave_top,fieldorder=tff -vcodec rawvideo -pix_fmt bgr24 in_interleave_top.avi
关于windows - FFmpeg : How to apply a filter on custom frames and place output of them between mainframes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70936689/
我是一名优秀的程序员,十分优秀!