图像转音频

图像转音频

本文描述了如何通过将原始二进制表示转换为音频 PCM 并对其应用音频效果,然后再转换回来,来处理图像。它推荐的方法是导入 Audacity,它有“导入原始数据”选项来执行此操作。

Audacity 的导入原始数据菜单的屏幕截图

因为我想在其他软件(即 Reaper,它没有等效选项)中进行音频处理,所以最好跳过 Audacity 步骤,只需对我正在处理的每个图像发出命令即可。

这看起来像是 FFmpeg CLI 应该能够处理的事情,但我没有找到任何关于如何执行此操作的指南,而我自己的 FFmpeg 知识几乎仅限于复制粘贴。

我尝试过ffmpeg -i example.png example.wav但得到的输出是:

Input #0, png_pipe, from 'example.png':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: png, rgba(pc), 1253x499, 25 tbr, 25 tbn, 25 tbc
Output #0, wav, to 'example.wav':
Output file #0 does not contain any stream

我怀疑如果有办法的话,它会涉及某种流操作,但对我来说,这是 ffmpeg 界面中最令人困惑的部分。有人能帮我吗?

如果您的解决方案也可以将视频的图像流转换为音频,则可以获得加分。

答案1

图像转音频

您可以输出 rawvideo 并将其传送到另一个ffmpeg实例,强制输入为 PCM 音频:

ffmpeg -i in.png -f rawvideo - | ffmpeg -y -f s16le -sample_rate 44100 -channels 1 -i - -f s16le out.sw
  • 使用 调整解复用器和复用器的格式-f。本例中的最终输出为“s16le”(PCM 有符号 16 位小端)。
  • 请参阅ffmpeg -demuxersffmpeg -muxers获取可用的解复用器和复用器的列表。
  • 有关特定解复用器的详细信息和选项:ffmpeg -h demuxer=s16le
  • 有关特定多路复用器的详细信息和选项:ffmpeg -h muxer=rawvideo

如果您的音频编辑器不接受原始 PCM,那么您可以尝试 WAV。既然您无论如何都要处理它,那么这应该没什么大不了的:

ffmpeg -i in.png -f rawvideo - | ffmpeg -y -f s16le -sample_rate 44100 -channels 1 -i - out.wav

音频到图像

ffmpeg -f s16le -sample_rate 44100 -channels 1 -i edited.sw -f s16le - | ffmpeg -video_size 1920x1080 -pixel_format rgb24 -f rawvideo -i - out.png

YMMV。如果 PNG 输出不适合您,请尝试其他格式。

相关内容