AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 508194
Accepted
confetti
confetti
Asked: 2019-03-24 08:56:19 +0800 CST2019-03-24 08:56:19 +0800 CST 2019-03-24 08:56:19 +0800 CST

Como incorporar a hora atual com o ffmpeg?

  • 772

Estou usando ffmpegcombinado com teee mplayerpara ter uma transmissão ao vivo de vídeo simples e um gravador sobre SSH. Agora, eu adoraria incorporar a hora atual (do servidor) no fluxo. O formato não importa muito, o ideal seria YYYY-MM-DD HH:MM:SS.

Eu encontrei este tutorial sugerindo o seguinte comando:

ffmpeg -f video4linux2 -input_format mjpeg -s 1280x720 -i /dev/video0 \
-vf "drawtext=fontfile=/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf: \
text='%{localtime\:%T}': [email protected]: x=7: y=700" -vcodec libx264 \
-preset veryfast -f mp4 -pix_fmt yuv420p -y output.mp4

Mas usar a -vfparte disso resulta no seguinte erro para mim:

[NULL @ 0x55e4ef96b2a0] Unable to find a suitable output format for 'text=%{localtime:%T}:'
text=%{localtime:%T}:: Invalid argument

Eu também tentei este comando (o terceiro bloco de código no Q), apenas para testá-lo, mas também falhou:

[Parsed_drawtext_0 @ 0x55fb2862a940] Both text and text file provided. Please provide only one
[AVFilterGraph @ 0x55fb28629fc0] Error initializing filter 'drawtext' with args 'text=%{pts:hms:1553359336.166336638}'

Por fim, também encontrei esta pergunta e tentei, ligeiramente modificada assim (isso está mostrando meu comando completo, apenas ajustei as -vfopções nos dois exemplos anteriores):

ffmpeg  -r 20 -s 640x480 -f video4linux2 -i /dev/video0 -vf "drawtext=fontsize=90:fontcolor=white: fontfile=/usr/share/fonts/TTF/DejaVuSans.ttf: text='%{localtime\:%X}'" -f avi -

Isso me apresenta o seguinte erro:

[NULL @ 0x55ae61d051a0] Unable to find a suitable output format for 'fontfile=/usr/share/fonts/TTF/DejaVuSans.ttf:'
fontfile=/usr/share/fonts/TTF/DejaVuSans.ttf:: Invalid argument

Modificando um pouco o que encontrei aqui para:

-vf drawtext="fontfile='/usr/share/fonts/cantarell/Cantarell-Light.otf':fontsize=14:fontcolor=white:shadowcolor=black:shadowx=2:shadowy=1:text='%H-%M-%S':x=8:y=8"

Me presenteia com:

[Parsed_drawtext_0 @ 0x55e36db2aa40] Stray % near 'H-%M-%S'

Observe que usar este comentário apenas com texto (por exemplo text='test', ) funciona bem.
Adicionar 1-4 \ s na frente dos %s não mostra nenhuma alteração no erro ou efeito.

Minha ffmpegversão: ffmpeg version 3.2.12-1~deb9u1em uma máquina debian.
Foi compilado com a biblioteca drawtext e está presente em ffmpeg -filters.

video ffmpeg
  • 2 2 respostas
  • 2890 Views

2 respostas

  • Voted
  1. Best Answer
    confetti
    2019-03-24T09:22:43+08:002019-03-24T09:22:43+08:00

    Ok, encontrei a solução na documentação do filtro FFmpeg .

    10.52.2 Expansão de texto

    Se a expansão estiver definida como strftime, o filtro reconhecerá as sequências strftime() no texto fornecido e as expandirá de acordo. Verifique a documentação de strftime(). Este recurso está obsoleto.

    Embora diga This feature is deprecated., isso funciona muito bem para mim. Aqui está o meu final -vf:

    -vf drawtext="expansion=strftime:fontfile='/usr/share/fonts/cantarell/Cantarell-Light.otf':fontsize=14:fontcolor=white:shadowcolor=black:shadowx=2:shadowy=1:text='%Y-%m-%d\ %H\\\\:%M\\\\:%S':x=8:y=8"
    

    Por favor, note que, de qualquer forma, os quatro \\\\são necessários para escapar :. Para escapar do espaço, um único \é suficiente. O resultado ficará assim:

    exemplo

    • 3
  2. user488990
    2021-08-30T05:45:35+08:002021-08-30T05:45:35+08:00

    A primeira opção, text='%{localtime\\:T}'funciona bem. O OP tinha suas citações no lugar errado, ele tinha 'text=...'. Você notará que nos exemplos subsequentes, ele tem as aspas simples no lugar certo.

    • 1

relate perguntas

  • H.264/MPEG-4 de quadros PNG: como fazer e como ajustar a compressão

  • O comando ffmpeg falha silenciosamente dentro do script, mas funciona quando executado diretamente

  • Converta áudio dentro de MKV para AC3 ou DTS preservando 6.1 canais

  • ffmpeg: 'Protocolo não encontrado' para nome de arquivo normal

  • Gire a webcam e a tela (modo retrato)

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve