【问题标题】:Have not had success chaining these two ffmpeg commands没有成功链接这两个 ffmpeg 命令
【发布时间】:2020-10-19 15:40:21
【问题描述】:

两个命令都运行良好,但我需要链接它们,需要帮助

ffcommand1 = new String[]{"-ss", "00:00:00", "-t", sduration, "-y", "-i", pathDir + fname, "-vf", "scale=640:480", "-s", "640x480", "-r", "15", "-vcodec", "mpeg4", "-b:v", "2097152", "-b:a", "48000", "-ac", "2", "-ar", "22050", "-vf", "scale=640:480,drawtext=fontfile=" + homeDir + "opensansregular.ttf:fontsize=" + fontsize + ":fontcolor=white:box=1:boxcolor=black@0.5:boxborderw=5:text='" + subtitle + "':x=100:y=350", "-c:a", "copy", "-an", pathDir + fname1};


ffmpeg -i input.mp4 -f lavfi -i "color=0x1f477000:s=640x480" -filter_complex "blend=shortest=1:all_mode=overlay:all_opacity=0.7" output.mp4

【问题讨论】:

  • 命令 #2 中的 input.mp4 是否 = 命令 #1 中的 fname1
  • 没有。我在两个不同的功能中使用了它们。变量不一样。我想让它们相同,如果我得到一个组合命令,我将使用“fname”作为源文件,使用 fname1 作为目标文件。

标签: java filter ffmpeg chaining


【解决方案1】:

组合命令:

ffmpeg -y -t 30 -i input.mp4 -f lavfi -i "color=0x1f477000:s=640x480:r=15" -filter_complex "[0]fps=15,scale=640:480[main];[main][1]blend=shortest=1:all_mode=overlay:all_opacity=0.7,drawtext=fontfile=opensansregular.ttf:fontsize=22:fontcolor=white:box=1:boxcolor=black@0.5:boxborderw=5:text='your text':x=100:y=350" -vcodec mpeg4 -b:v 2097152 -c:a copy output.mp4
  • -ss 00:00:00 不执行任何操作,因此已将其从组合命令中删除。
  • 您同时使用-c:a copystream copy 音频)和-an(无音频)。我假设你想保留音频,所以 -an 被省略了。
  • -b:a-ac-ar-c:a copy 忽略,因此这些选项已被省略。
  • 您正在使用刻度 3 次(两个刻度过滤器和 -s 选项)。我将其缩减为一个规模实例。
  • 你真的要使用-c:v mpeg4吗?输出 MPEG-4 Part 2 视频,这是一种旧的传统格式。如果您删除 -c:v mpeg4,它将为 MP4 输出 H.264。

【讨论】:

  • 哇,效果很好。在 Windows 上,无需进行任何更改。谢谢谢谢。在 Android 上,我必须添加 setdar=4/3 当我删除 -c:v mpeg4 时命令坏了,所以不知道该怎么做,你能详细说明一下吗?另一个发现是来自 android 的颜色值不能转换为 ffmpeg,我放了红色,ffmpeg 显示绿色。有没有我错过的 ffmpeg 选项?
  • 我做了更多的实验,我通过的是 ARGB 而不是 RGBA。改正后,我看到了 android setcolorfilter() 和 ffmpeg 之间的颜色。现在唯一的区别是我看到 ffmpeg 输出的透明度比 android 更高。在 Android 上,红色过滤器不允许您查看图片,而 ffmpeg 输出可以。我的假设是 AA 将设置透明度。使用的命令是下一条评论
  • ffmpeg -y -t 00:00:03 -i /data/user/0/com.example.ufco/files/MYrender/CFtmp.mp4 -f lavfi -i color=0xFF092EED:s =640x480:r=15 -filter_complex [0]fps=15,setdar=4/3,scale=640:480[main];[main][1]blend=shortest=1:all_mode=overlay -vcodec mpeg4 -b :v 2097152 -c:a 复制 /data/user/0/com.example.ufco/files/MYrender/CF1-615366424.mp4
  • 问题:鉴于我在 RRGGBBAA 中传递了 alpha,ffmpeg 正在应用 alpha 值的不透明度,那么我为什么要把事情与 all_opacity=0.xx 混淆。还是 all_opacity 有不同的定义?我还应该在 ffmpeg 命令中设置 all_opacity 值吗?
  • @Plazar99 忘了说彩色滤镜是 yuv420p,所以没有 alpha 功能。因此,如果您想要带有颜色过滤器的 alpha,您需要使用格式过滤器更改为带有 alpha 的像素格式(例如 yuva420p),然后使用诸如 colorchannelmixer 之类的过滤器来更改 alpha 级别。但是所有这些都偏离了我已经回答的原始问题。您应该在每个帖子中问 1 个问题,而不是问多个后续问题。如果您需要有关此颜色/透明度的更多帮助,请提出一个新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
  • 2013-03-22
  • 1970-01-01
相关资源
最近更新 更多