在分割视频流中间创建黑色半框会导致 FFmpeg 错误

在分割视频流中间创建黑色半框会导致 FFmpeg 错误

该错误是由于在分割视频流的中间创建黑色半尺寸框架而引发的。

该脚本的目的是将双鱼眼图像向上移动20像素。

该文件将双鱼眼视频分成左和右,然后从顶部向下裁剪每半 20 像素,然后叠加到“黑色”半框上,然后将左和右图像水平堆叠成新的视频 OUT.mp4

@echo off
set "W=3840"    ::Width of video
set "H=1920"    ::Height of video
set "WC=1920"   ::Width of crop
set "HC=20"   ::Height of crop
set "X=0"       ::X coordinate of overlay
set "Y=0"       ::Y coordinate of overlay

ffmpeg -i %1 -filter_complex "split[left][right]; [left]crop=ih:iw/2:0:0[left_half];[right]crop=ih:iw/2:iw/2:0[right_half];[left_half]crop=%WC%:%H%-%HC%:0:%HC%[left_crop];[right_half]crop=%WC%:%H%-%HC%:0:%HC%[right_crop];color=black:size=%H%x%H%[bg];[bg][left_crop]overlay=%X%:%Y%:shortest=1[left_overlayed];[bg][right_crop]overlay=%X%:%Y%:shortest=1[right_overlayed];[left_overlayed][right_overlayed]hstack=shortest=1[out]" -y OUT.mp4
pause
::
::

错误信息如下:

The error is [mov,mp4,m4a,3gp,3g2,mj2 @ 00000207a61d4040] Invalid stream specifier: bg.
    Last message repeated 1 times
Stream specifier 'bg' in filtergraph description split[left][right]; [left]crop=ih:iw/2:0:0[left_half];[right]crop=ih:iw/2:iw/2:0[right_half];[left_half]crop=1920:1920-20:0:20[left_crop];[right_half]
crop=1920:1920-20:0:20[right_crop];color=black:size=1920x1920[bg];[bg][left_crop]overlay=0:0:shortest=1[left_overlayed];[bg][right_crop]overlay=0:0:shortest=
1[right_overlayed];[left_overlayed][right_overlayed]hstack=shortest=1 matches no streams.

答案1

黑色半框需要单独输入,这样才有效。

ffmpeg -i %1 -f lavfi -i color=black:size=%H%x%H% -filter_complex "[0]split[left][right]; [left]crop=ih:iw/2:0:0[left_half];[right]crop=ih:iw/2:iw/2:0[right_half];[left_half]crop=%WC%:%H%-%HC%:0:%HC%[left_crop];[right_half]crop=%WC%:%H%-%HC%:0:%HC%[right_crop];[1][left_crop]overlay=%X%:%Y%:shortest=1[left_overlayed];[1][right_crop]overlay=%X%:%Y%:shortest=1[right_overlayed];[left_overlayed][right_overlayed]hstack=shortest=1" -y OUT.mp4

答案2

回应此评论:使用 [bg] 创建覆盖后,它会被消耗掉,如果您打算使用它两次,则必须使用另一个 [bg]split[bg1][bg2]。– Ricardo Bohner

该脚本确实有效:

ffmpeg -i %1 -filter_complex "split[left][right]; [left]crop=ih:iw/2:0:0[left_half];[right]crop=ih:iw/2:iw/2:0[right_half];[left_half]crop=%WC%:%H%-%HC%:0:%HC%[left_crop];[right_half]crop=%WC%:%H%-%HC%:0:%HC%[right_crop];color=black:size=%H%x%H%[bg0];[bg0][left_crop]overlay=%X%:%Y%:shortest=1[left_overlayed];color=black:size=%H%x%H%[bg1];[bg1][right_crop]overlay=%X%:%Y%:shortest=1[right_overlayed];[left_overlayed][right_overlayed]hstack=shortest=1" -y OUT.mp4

相关内容