FFmpeg: convertit les données binaires brutes d'une image au format audio (à des fins de databending)

1

Cet article décrit comment modifier une image en convertissant sa représentation binaire brute en audio PCM et en lui appliquant des effets audio avant de la reconvertir. La méthode recommandée consiste à importer dans Audacity, qui dispose de l'option Importer des données brutes pour le faire.

Capture d'écran du menu Importer des données brutes d'Audacity

Puisque je voudrais faire mes manipulations audio dans d’autres logiciels (à savoir Reaper, qui n’a pas d’option équivalente), il serait préférable de sauter l’étape Audacity et de simplement lancer une commande à chaque image avec laquelle je travaille.

Cela semble être quelque chose que la CLI FFmpeg devrait être capable de gérer, mais je n’ai pas réussi à trouver de guide à ce sujet, et ma propre connaissance de FFmpeg est quasiment limitée au copier-coller.

J'ai essayé ffmpeg -i example.png example.wavmais j'ai eu la sortie:

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

Je pense que s’il existe un moyen, cela impliquera une sorte de manipulation de flux, mais pour moi, c’est la partie la plus déroutante de l’interface ffmpeg. Quelqu'un peut m'aider?

Points bonus si votre solution permet également de convertir le flux d’images d’une vidéo en audio.

Igid
la source

Réponses:

1

image en audio

Vous pouvez générer rawvideo et le rediriger vers une autre ffmpeginstance en forçant l'entrée en tant qu'audio PCM:

ffmpeg -i in.png -f rawvideo - | ffmpeg -y -f s16le -sample_rate 44100 -channels 1 -i - -f s16le out.sw
  • Ajustez les formats de démultiplexeur et multiplexeur avec -f. La sortie finale dans cet exemple est "s16le" (little-endian 16 bits signé PCM).
  • Voir ffmpeg -demuxerset ffmpeg -muxerspour la liste des démultiplicateurs et multiplexeurs disponibles.
  • Pour plus de détails et d’options pour un démultiplexeur spécifique: ffmpeg -h demuxer=s16le
  • Pour plus de détails et d’options pour un multiplexeur spécifique: ffmpeg -h muxer=rawvideo

Si votre éditeur audio n'accepte pas les données PCM brutes, vous pouvez essayer WAV. Puisque vous allez jouer avec ça quand même, cela ne devrait pas avoir beaucoup d'importance:

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

audio à l'image

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. Si la sortie PNG ne fonctionne pas pour vous, essayez d'autres formats.

llogan
la source
Je vous remercie! Cela semble prometteur jusqu’à présent, même si j’ai du mal à lire le fichier de sortie dans Reaper. J'imagine que la corruption de fichier est normale lorsque vous essayez quelque chose comme ça, alors je vais continuer à expérimenter et j'espère pouvoir le faire fonctionner avant que j'accepte votre réponse. S'il vous plaît noter que la commande à la liste des démuxers disponibles est tout simplement ffmpeg -demuxerspas ffmpeg -h demuxers( ce qui se traduit par «option d'aide inconnue)
Igid
@Igid Désolé, je ne suis pas familier avec Reaper, donc je ne sais pas quoi suggérer à ce sujet. J'ai corrigé la faute de frappe, merci.
llogan
Reaper n'est qu'un éditeur de son. Le fichier de sortie ne parvient pas non plus à jouer avec Preview / VLC - je veux dire par là qu’il est corrompu pour la plupart des applications audio.
Igid le
@Igid Voir les modifications.
llogan
Désolé pour la réponse tardive à ce sujet. Je n'ai pas encore eu beaucoup de temps pour expérimenter cela en profondeur, mais j'apprécie vos efforts pour compléter votre réponse. Je suis sûr que les problèmes que je rencontrais ne concernaient pas l'exactitude de votre solution.
Igid