我目前正在使用此代码并排记录两个窗口:
ffmpeg -f gdigrab -framerate 30 -i title="" -f gdigrab -framerate 30 -i title="" -c:v h264_nvenc -qp 0 -filter_complex hstack=inputs=2 2.mp4
Run Code Online (Sandbox Code Playgroud)
但是它在执行后抛出这个错误:
More than 1000 frames duplicated
Run Code Online (Sandbox Code Playgroud)
错误日志:https : //pastebin.com/gREVrKVK
第一个窗口大部分时间是同一帧,每 3 秒可能有 1 帧变化。
控制台中的另一个错误是当第一个窗口与第二个窗口的高度不同时,错误:
[Parsed_hstack_0 @ 000002491166fd00] Input 1 height 500 does not match input 0 height 488.
[Parsed_hstack_0 @ 000002491166fd00] Failed to configure output pad on Parsed_hstack_0
Run Code Online (Sandbox Code Playgroud)
错误日志:https : //pastebin.com/vqdBPfpv
当它们具有不同的尺寸时看起来是不可能记录的,所以,如果可能的话,我想问一下如何将第一个窗口缩放到第二个窗口的相同高度(不需要保持纵横比),考虑到低 CPU使用高于视频质量。
使用scale2refinput0过滤器使高度匹配input1高度:
ffmpeg -i input0 -i input1 -filter_complex "[0][1]scale2ref=w=oh*mdar:h=ih[left][right];[left][right]hstack" output
Run Code Online (Sandbox Code Playgroud)
使每个输入适合 175x100 并带有灰色背景:
ffmpeg -i input0 -i input1 -filter_complex "[0]scale=175:100:force_original_aspect_ratio=decrease,pad=175:100:-1:-1:color=gray,setsar=1[left];[1]scale=175:100:force_original_aspect_ratio=decrease,pad=175:100:-1:-1:color=gray,setsar=1[right];[left][right]hstack" output
Run Code Online (Sandbox Code Playgroud)
更多示例:使用 ffmpeg 调整视频大小以适应静态大小。
请参阅日志中的警告:
[mp4 @ 0000026082276400] Frame rate very high for a muxer not efficiently supporting it.
Please consider specifying a lower framerate, a different muxer or -vsync 2
Run Code Online (Sandbox Code Playgroud)
添加-vsync 2输出选项,或输出为不同的格式,例如.mkv.
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |