AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 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

如何用ffmpeg嵌入当前时间?

  • 772

我正在ffmpeg结合使用tee并mplayer通过 SSH 拥有一个简单的视频直播和录像机。现在,我很想在流中嵌入当前(服务器)时间。格式无关紧要,理想情况下是YYYY-MM-DD HH:MM:SS.

我发现这个方法建议使用以下命令:

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

但是使用-vf这部分会导致我出现以下错误:

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

我也试过这个命令(Q中的第三个代码块),只是为了测试它,但它也失败了:

[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}'

最后,我也找到了这个问题,试了一下,稍微修改成这样(这是显示我的完整命令,我只调整了-vf前两个例子中的选项):

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 -

这给我带来了以下错误:

[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

修改我在这里找到的内容:

-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"

向我展示:

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

请注意,仅使用文本(例如text='test')使用此注释可以正常工作。在s 前面
添加1-4 s 表明错误或效果没有变化。\%

我的ffmpeg版本:ffmpeg version 3.2.12-1~deb9u1在 debian 机器上。
它已与 drawtext 库一起编译,并且存在于ffmpeg -filters.

video ffmpeg
  • 2 2 个回答
  • 2890 Views

2 个回答

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

    好的,我在FFmpeg 过滤器文档中找到了解决方案。

    10.52.2 文本扩展

    如果将扩展设置为 strftime,则过滤器会识别提供的文本中的 strftime() 序列并相应地扩展它们。检查 strftime() 的文档。此功能已弃用。

    虽然它说This feature is deprecated.,这对我来说很好。这是我的决赛-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"
    

    请注意,无论如何,这四个\\\\是必须逃脱的:。为了逃离空间,一个\就足够了。结果将如下所示:

    例子

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

    第一个选项,text='%{localtime\\:T}'工作正常。OP 在错误的地方引用了他的引语,他有'text=...'. 您会注意到,在随后的示例中,他在正确的位置使用了单引号。

    • 1

相关问题

  • 来自 PNG 帧的 H.264/MPEG-4:如何以及如何调整压缩

  • ffmpeg 命令在脚本内静默失败,但在直接运行时有效

  • 将 MKV 内的音频转换为 AC3 或 DTS,保留 6.1 声道

  • ffmpeg:普通文件名的“找不到协议”

  • 旋转网络摄像头和屏幕(纵向模式)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

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

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve