video - FFmpeg - 连接视频错误,不匹配相应的输出链接?
问题描述
我正在尝试使用 ffmpeg 将一些视频连接到一个视频中。
输入信息:
a.mp4 1920x808,b.mkv 1280x720
首先我尝试了下面的命令,它工作正常:
ffmpeg -i a.mp4 -i b.mkv -f lavfi -t 0.1 -i anullsrc -filter_complex [1:v]scale=1920:808:force_original_aspect_ratio=decrease,pad=1920:808:(ow-iw)/2 :(oh-ih)/2[v1]; [0:v][0:a][v1][1:a]concat=n=2:v=1:a=1[outv][outa] -map [outv] -map [outa] -vcodec libx264 -crf 27 -preset ultrafast -threads 2 out.mp4
然后我把'b.mkv'放在第一位:
ffmpeg -i b.mkv -i a.mp4 -f lavfi -t 0.1 -i anullsrc -filter_complex [0:v]scale=1920:808:force_original_aspect_ratio=decrease,pad=1920:808:(ow-iw)/2 :(oh-ih)/2[v0]; [v0][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa] -map [outv] -map [outa] -vcodec libx264 -crf 27 -preset ultrafast -threads 2 out.mp4
但这次我得到了错误:
输入链接 in1:v0 参数(大小 1920x808,SAR 0:1)与相应的输出链接 in0:v0 参数(1920x808,SAR 3232:3231)不匹配
我不明白为什么?
有什么想法吗?
提前谢谢了。
解决方案
concat 过滤器要求所有段具有相同的属性,包括纵横比。您可以告诉过滤器忽略它
concat=n=2:v=1:a=1:unsafe=1
(不建议)
或为两个视频流设置相同的纵横比,
ffmpeg -i b.mkv -i a.mp4
-f lavfi -t 0.1 -i anullsrc
-filter_complex
[0:v]scale=1920:808:force_original_aspect_ratio=decrease,pad=1920:808:(ow-iw)/2:(oh-ih)/2,setsar=1[v0];
[1:v]setsar=1[v1];[v0][0:a][v1][1:a]concat=n=2:v=1:a=1[outv][outa]
-map [outv] -map [outa] -vcodec libx264 -crf 27
-preset ultrafast -threads 2 out.mp4
推荐阅读
- go - 来自动态参数的 Hugo 数据文件
- kotlin - 有没有办法更好地优化这个?
- php - MQTT-PHP 订阅陷入循环
- javascript - React 应用无法导入使用 webpack 打包的 react 应用
- api - 虚拟主机面板架构
- javascript - document.cookie 过期无法在 Safari 中正常工作
- python - 在 Python 中运行时创建的 Linting 类
- reactjs - 在 redux-form 中,在 Field-Level Validation 中显示所有验证错误
- c# - 如何制作一个仅使用加法和仅使用 2 个变量进行除法的递归函数
- flutter - Flutter 用 provider 和 riverpod 制作表单