c# - 使用 FFMPEG 添加闪屏到视频开头

标签 c# ffmpeg console-application

我正在用头撞墙试图添加启动画面。这就是我正在做的事情:

  1. 将静态图像转换为带有静音音频流的“ts”文件

ffmpeg -loop 1 -i image.png -c:v libx264 -t 10 -c:a libvo_aacenc -b:a 160k -bsf:v h264_mp4toannexb -f mpegts -crf 32 image.ts

  • 现在,将原始视频也转换为“ts”文件
  • ffmpeg -i video.mp4 -c:v libx264 -c:a aac -b:a 160k -bsf:v h264_mp4toannexb -f mpegts -crf 32 video.ts

  • 现在,合并 2 个“ts”文件
  • ffmpeg -i "concat:image.ts|video.ts" -c:v libx264 -c:a aac -b:a 160k -bsf:v -y output.mp4

    问题:

    1. 输出文件生成得很好,但音频完全丢失。步骤 # 3 中生成的“output.mp4”视频实际上具有音轨,但闪屏视频已静音音频。

    2. 我也无法添加过渡。我对此进行了很多研究,但无法添加它,请帮忙。

    我真的很感激你的想法!谢谢

    最佳答案

    当使用concat协议(protocol)或demuxer时,所有文件必须包含相应的流。在这种情况下,您的启动文件没有音频。让我们添加一个。

    ffmpeg -loop 1 -i image.png -f lavfi -i anullsrc -t 10 -pix_fmt yuv420p -c:v libx264 -crf 32 -ac 2 -ar 48000 -c:a aac -b:a 160k -f mpegts image.ts

    ffmpeg -i video.mp4 -pix_fmt yuv420p -c:v libx264 -crf 32 -ac 2 -ar 48000 -c:a aac -b:a 160k -f mpegts video.ts

    ffmpeg -i "concat:image.ts|video.ts"-c 复制输出.mp4

    (如果libvo_aacenc对你有用,那么你的ffmpeg太旧了。几年前就删除了对它的支持。升级到v4.3)


    如果您希望启动图像淡出,请更改为

    ffmpeg -loop 1 -i image.png -f lavfi -i anullsrc -t 10 -vf "fade=out:st=9:d=1"-c:v libx264 -pix_fmt yuv420p -crf 32 -ac 2 -ar 48000 -c:a aac -b:a 160k -f mpegts image.ts

    这将使启动图像在 9 到 10 秒的时间范围内淡出。

    (注:我添加了 pix_fmt 选项以确保输出广泛兼容)

    关于c# - 使用 FFMPEG 添加闪屏到视频开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63481882/

    相关文章:

    c# - 无法打开数据库 - 登录请求 - 为什么我无法连接到我的数据库?

    c# - StructureMap 2.5 注册表语法

    php - FFMpeg 在命令行中工作,但不在 PHP 中使用 exec();

    ffmpeg - 在 openshift online 上安装 ffmpeg 时出现未绑定(bind)变量错误

    FFMPEG-无法识别的选项 'hls_key_info_file'

    c# - 控制台窗口关闭时是否可以订阅事件?

    c# - 字体是对的。为什么我不能让这个 unicode 字符显示在这个 C# 控制台应用程序中?

    C# - 需要知道变量何时超出范围

    c# - 具有相同 xaml 文件和不同 DataContext 的多个输入表单

    c - Visual Studio 2015 "stealing"应用程序的控制台