我对 ffmpeg 还很陌生,但是在对这个问题进行了几天的搜索之后,我已经完全碰壁了。任何帮助,将不胜感激。
我的用例:我们的客户想要上传多个地区的视频。每个视频都是相同的格式,1920x1080,mp4。对于每个区域,他们都希望在视频结尾添加不同的图像,持续几秒钟。此图像包含他们的徽标、一些附加信息和可变代码。他们将在上传的视频旁边输入此代码。图像保持不变,因此已经存在于服务器上。所以基本上,我有一个输入视频、一个图像视频和一个小代码。我需要将此代码添加到图像的视频中(在预定义的位置),然后我需要将生成的视频添加到输入视频的末尾。完成后,我只需要以 1920x1080 和 1024x576 输出视频。
我已经尝试了几件事,但是连接步骤总是因操作视频而失败。
尝试 1
在我的第一次尝试中,我使用 ffmpeg 从图像创建视频,并在指定区域添加文本。
ffmpeg -y -f lavfi -i image.png -r 30 -t 10 -pix_fmt yuv420p -map 0:v -vf drawtext="fontfile=HelveticaNeue.dfont: text='GLNS/TEST/1234b': fontcolor=black: fontsize=20: box=1: boxcolor=white: boxborderw=7: x=179: y=805" imageVideo.mp4
Run Code Online (Sandbox Code Playgroud)
此命令创建一个大小正确的 .mp4 视频,持续时间为 10 秒,并在正确的位置添加文本“GLNS/TEST/1234b”。
接下来,我使用以下命令连接两个视频。两者具有相同的分辨率和编解码器。
ffmpeg -f concat -safe 0 -i config.txt -vf scale=1920:1080 outputHD.mp4 -vf scale=1024:576 outputSD.mp4
Run Code Online (Sandbox Code Playgroud)
config.txt包含以下内容:
file my_input_file.mp4
file ImageVideo.mp4
Run Code Online (Sandbox Code Playgroud)
这种串联适用于常规视频。但是,当我将它与 ImageVideo.mp4(由第一个命令创建的那个)一起使用时,我收到以下错误日志:
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f86dc924600] Auto-inserting h264_mp4toannexb bitstream filtereed=0.509x
[aac @ 0x7f86dc019e00] Number of bands (31) …Run Code Online (Sandbox Code Playgroud)