Windows: drawtext ffmpeg com metadados mp3

0

Tentando fazer o ffmpeg criar imagem / vídeo com dados de tags mp3 / id3 (pref. id3v2), por exemplo:

ffmpeg -f lavfi -i "color=c=white:s=720x480" -i "01 - Steel Guitar Rag.mp3" -shortest -filter_complex "drawtext=expansion=normal:fontfile=usb.ttf:fontcolor=black:x=10:y=10:fontsize=10:text='Artist\: %{metadata\:artist}'" "01 - Steel Guitar Rag.png"

DEVE imprimir:

Artist: Bob Wills And His Texas Playboys

mas eu simplesmente não consigo pegar as teclas / escapar da string corretamente para que funcione Eu geralmente ou "Artist:" ou "artist}" é impresso dependendo de onde / quantos uso ...

Como preciso formatar o text='' para funcionar corretamente?

    
por Barry Thelemann 24.02.2016 / 17:43

2 respostas

0

ffmpeg -f lavfi -i "color=c=white:s=720x480" -i "01 - Steel Guitar Rag.mp3" -shortest -filter_complex "drawtext=expansion=normal:fontfile=usb.ttf:fontcolor=black:x=10:y=10:fontsize=10:text=\'Artist\: %{metadata:artist}\'" -vframes 1 "01 - Steel Guitar Rag.png"

Também adicionei -vframes 1 para evitar a produção de várias imagens

    
por 26.02.2016 / 14:07
0

Isso provavelmente exigirá scripts. Você pode usar sua ferramenta de marcação favorita para obter os metadados do artista e usá-los como uma variável no comando ffmpeg .

Exemplo usando ffprobe para obter metadados do artista:

ffprobe -v error -select_streams a:0 -show_entries tags=artist -of default=nw=1:nk=1 input.mp3
Bob Wills And His Texas Playboys

(Des) Felizmente, eu não sei escrever nada no Windows, mas aqui está uma solução Bash simples, se alguém mais estiver interessado em fazer o mesmo:

#!/bin/bash

# Usage: ./drawmeta input.mp3
# Will output a PNG with same basename as the input file.

artistname=$(ffprobe -v error -select_streams a:0 -show_entries tags=artist -of default=nw=1:nk=1 "$1")

ffmpeg -y -f lavfi -i "color=c=white:s=720x480" -i "$1" -filter_complex "drawtext=fontfile=/path/to/font.ttf:fontcolor=black:x=10:y=10:fontsize=10:text='Artist\: $artistname'" -frames:v 1 "${1%.*}.png"
    
por 27.02.2016 / 21:44