ffmpeg - FFMPEG 将多个音频输入文件映射到 1 个单个图像文件,以便创建多个视频输出文件
问题描述
我正在尝试将 ffmpeg 中的多个输出文件映射到多个输入,但是我将第一个输入映射到第一个视频而不是每个输入映射到一个唯一的输出,然后根本不会创建下一个视频,我将准确描述什么我正在努力实现以下目标,
我需要:
- 创建多个视频输出文件
- 从多个音频输入文件
- 它们都使用相同的一个通用图像文件来创建视频
我将在下面发布我的命令,任何帮助将不胜感激谢谢
-y -i input1.mp3 -i input2.mp3 -f image2 -loop 1 -r 2 -i imagefile.png -shortest -c:a aac -c:v mpeg4 -crf 18 -preset veryfast -movflags faststart -map 0 output1.mp4 -map1 output2.mp4
解决方案
基本命令
ffmpeg -i input1.mp3 -i input2.mp3 -loop 1 -framerate 10 -i imagefile.png -map 2:v -map 0:a -vf format=yuv420p -shortest output1.mp4 -map 2:v -map 1:a -vf format=yuv420p -shortest output2.mp4
每个输出对视频进行一次过滤和编码。
使用分体式过滤器
ffmpeg -i input1.mp3 -i input2.mp3 -loop 1 -framerate 10 -i imagefile.png -filter_complex "[2:v]format=yuv420p,split=outputs=2[v0][v1]" -map "[v0] -map 0:a -shortest -movflags +faststart output1.mp4 -map "[v1]" -map 1:a -shortest -movflags +faststart output2.mp4
视频总共过滤一次,并为每个输出单独编码。
管道
ffmpeg -y -v error -loop 1 -framerate 10 -i imagefile.png -filter_complex "[0:v]format=yuv420p[v]" -map "[v]" -c:v libx264 -f nut - | ffmpeg -y -i - -i input1.mp3 -i input2.mp3 -map 0:v -map 1:a -c:v copy -shortest -movflags +faststart output1.mp4 -map 0:v -map 2:a -c:v copy -shortest -movflags +faststart output2.mp4
视频只被过滤和编码一次,每个输出流都会复制它。
推荐阅读
- mysql - 是否有任何开源库可以将 sql 查询语言转换为相应的 mongodb 查询?
- airflow - Airflow DAG 及其时间表的问题
- blazor - 将 Blazor 代码移动到代码隐藏 - 简单示例
- angular - Angular 8 动态表单 - 从回调中加载“选择”选项
- javascript - 将数据从 google sheet 发送到 cloud firestore 时出现意外的令牌修复
- python - 如何读取以 µ 作为分隔符的 txt 文件?
- python - For循环似乎只运行一次
- javascript - 如何在 VSCode 中添加我的自定义扩展 - OSS
- python-3.x - $pull on mongodb嵌套数组不删除对象
- r - 麦克尼马尔精确检验