如何使用ffmpeg从音频文件创建视频

时间:2020-07-06 12:22:59

标签: audio video ffmpeg imagemagick google-photos

我大约有8000个音频文件(总计约6 GB),大多数为Running with gitlab-runner 13.1.0 (6214287e) on docker-auto-scale fa6cab46 Preparing the "docker+machine" executor 00:40 Using Docker executor with image node:latest ... Pulling docker image node:latest ... Using docker image sha256:37ad18cd8bd1f0b80ea0ee380a7addda75f51e0b30cf1a03934d20ea16a905d9 for node:latest ... Preparing environment 00:04 Running on runner-fa6cab46-project-19785321-concurrent-0 via runner-fa6cab46-srm-1594037028-15e9cfed... Getting source from Git repository 00:01 $ eval "$CI_PRE_CLONE_SCRIPT" Fetching changes with git depth set to 50... Initialized empty Git repository in /builds/aloisdegouvello/posxtkarto/.git/ Created fresh repository. Checking out fc5855e5 as master... Skipping Git submodules setup Executing "step_script" stage of the job script 00:01 $ npm ci npm ERR! cipm can only install packages with an existing package-lock.json or npm-shrinkwrap.json with lockfileVersion >= 1. Run an install with npm@5 or later to generate it, then try again. npm ERR! A complete log of this run can be found in: npm ERR! /root/.npm/_logs/2020-07-06T12_05_18_266Z-debug.log ERROR: Job failed: exit code 1 m4a格式。有没有一种方法可以将这些音频文件转换为视频,而文件名在视频中显示为静态海报图像。 我可以在ffmpeg中找到drawtext filter,这可能会有所帮助。但是不知道如何在一个命令中将其写出,因此我只传入音频文件的名称(mp3 / mp3),然后输出包含音频文件名称的视频作为输出显示屏( m4a )。

到目前为止,我已经能够通过使用with 256 by 144 pixel resolution转换命令来首先创建静态图像,然后使用ImageMagick进行合并。

由于有很多文件,我希望使用ffmpeg / python / javascript以编程方式完成。 我想这样做将我的录音存档在Google相册中。 Google照片可以无限存储高质量的视频。

2 个答案:

答案 0 :(得分:1)

您可以通过使用ImageMagick创建标签图像并将其通过管道传输到ffmpeg来获得结果,然后再读取音频文件以组合输出。我用Windows语法编写了一个命令...

set FNAME="My Audio.mp3"

convert -pointsize 24 label:%FNAME% -gravity center -extent 720x480 png:- ^
   | ffmpeg -y -f image2pipe -i - -i %FNAME% ^
      -filter_complex "loop=-1:1:0" -shortest out_%FNAME%.mp4

将其转换为* nix语法应该几乎与将连续行插入符号“ ^”更改为反斜杠“ \”以及更改其设置和读取变量的方式一样简单。

该命令以设置音频文件名的变量开始。然后,它运行ImageMagick的“转换”命令来创建一个标签,该标签的文件名以720x480画布为中心。输出强制为PNG格式,并通过管道输入ffmpeg作为视频输入。

读入音频文件后,ffmpeg使用“ filter_complex”将视频图像循环播放,并使用“ -shortest”将其限制为音频长度。

结果是一个MP4视频,其中您的输入为音频,文件名在视频帧中央的白色背景上为黑色。使用其他ImageMagick和/或ffmpeg选项来满足您自己的需求。

要在充满图像的目录上运行该命令,请将命令放入“ for”循环中,以便它遍历所有图像并将变量更改为目录中的每个下一个文件名。

如果您使用的是ImageMagick v7,请使用“ magick”而不是“ convert”。

答案 1 :(得分:0)

只需尝试执行以下代码:

ffmpeg -i 1.mp3 -i cover.jpg -f mp4 out.mp4