您可以使用 ffmpeg 流实时插入文件中的文本吗?

2024-01-05

我有这个代码,用于流式传输文件,并将视频某个时间的视频节目名称( name_of_show )放置在屏幕顶部,屏幕底部则显示节目名称来自 video_title.txt 并将其放置在屏幕底部。

我想要做的是找到一种方法,每隔 1 或 2 分钟,提取 video_title.txt 当前的任何文本并将其放置在视频中几秒钟。

我会从另一个 python 程序更新 video_title.txt 。下面是我当前的代码。

           command = [
        "ffmpeg" , "-re" , "-i" , video[0] ,
        "-vf" ,  "[in]drawtext=fontsize=40:fontcolor=white:box=1:[email protected] /cdn-cgi/l/email-protection:boxborderw=5:fontfile=/home/fonts/timeless.ttf: text='" + name_of_show + "':x='W-(W+tw)*mod(t\,10)/10':y='H/20':enable='between(t,50,70)',drawtext=fontsize=20:fontfile=/home/fonts/timeless.ttf:textfile=/video_title.txt:fontcolor=white:box=1:[email protected] /cdn-cgi/l/email-protection:boxborderw=5:x=W-w+5:y=h-th-50:enable='1'[out]"
        "-vcodec" , "libx264", "-pix_fmt", "yuv420p",
        "-preset" , "medium" , "-r" , "30" , "-g" , "48" , "-b:v" , "2500k" ,
        "-acodec" , "libmp3lame" , "-ar" , "44100", "-threads" , "6" ,
        "-q:a" , "3" , "-b:a" , "712000" ,"-bufsize", "512k" , "-f" ,
        "flv" , STREAM_URL,

最终,我想要实现的效果是在 twitch/youtube 上播放 1 小时的长流,其中有人可以发送短信,并且该消息会出现在流中。


Use the reload=1 and textfile绘图文本中的选项。来自绘图文本过滤器文档 https://ffmpeg.org/ffmpeg-filters.html#drawtext:

reload
如果设置为 1,文本文件将在每次之前重新加载 框架。确保以原子方式更新它,否则可能会部分读取, 甚至失败。

textfile
包含要绘制的文本的文本文件。文本必须是 UTF-8 编码字符序列。
如果该参数没有指定文本字符串,则该参数为必填项text.
如果两者都text and textfile已指定,则会发生错误。

Example:

ffmpeg -i input.mp4 -vf "drawtext=texfile=mytext.txt:reload=1:fontsize=22:fontcolor=white" output.mp4

要自动更新,您可以使用mv或同等学历:

mv temp.txt mytext.txt
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

您可以使用 ffmpeg 流实时插入文件中的文本吗? 的相关文章

随机推荐

  • 我应该使用哪一个? “docker Kill”还是“docker stop”?

    Will docker stop如果容器内运行的进程无法停止 则会失败 如果我使用docker kill 容器内未保存的数据可以保留吗 Is docker stop相比之下耗时docker kill 我想关闭容器 但不会丢失任何数据 没有高
  • 在 mongodb 中创建同名数据库?

    我发现可以创建具有相同名称的数据库 因此当我需要指定要使用哪些数据库时 具有相同名称的数据库会导致问题 事情是这样发生的 我已经有一个名为 test1 的数据库 它只存储带有文档的集合 然后 我用它来使用 GridFS 存储文件 因此它包含
  • 表行上的材质波纹效果

    我正在玩谷歌材料设计引导主题菲斯瓦斯塔 https github com FezVrasta bootstrap material design 大多数组件工作并且看起来都很棒 但是表行上的连锁反应对我来说不能正常工作 Demo jsfid
  • OpenERP 服务器错误 访问被拒绝

    安装 Odoo 后 我进入了 Web 面板 它要求创建新数据库 当我输入详细信息时出现错误 我可以成功更改主密码 我已经在 putty 上创建了数据库 并且 etc 文件夹下没有 openerp server conf 文件 Odoo Op
  • Javascript 有类似 VBA 的 DoEvents 的东西吗?

    我的代码中有一个长时间运行的 for 循环 我想延迟循环来处理事件队列中的其他任务 例如按下按钮 javascript 或 JQuery 有什么可以帮助我的吗 基本上我正在尝试做一些类似于延迟循环的事情 如下所示 https support
  • 带有“悬停”触发器的 AngularStrap bs-dropdown 没有保持打开足够长的时间

    当使用带有 悬停 触发器的 bs dropdown 时 菜单保持可见的时间不够长 无法允许用户单击菜单项 http plnkr co edit Fi39BdCOqHXnPAgITD01 p preview http plnkr co edi
  • 导入 scikits.talkbox 时出错

    我想使用 scikits talkbox 但在导入 scikits talkbox 时出现以下错误 回溯 最近一次调用最后一次 文件 home seref Desktop machinelearningcodes MFCC main py
  • 两个鸡蛋掉落拼图变化:未知/无限楼层

    Preface 这个问题的灵感来自于上周 SO 上的一个类似问题 该问题在弄清楚真正的问题是什么之前就被删除了 我认为这种变化提出了一个我想分享的好问题 两个鸡蛋问题 详细的定义和解决方案可以找到here https brilliant o
  • Dotfuscator 如何工作?

    Dotfuscator 如何工作 我尝试混淆我的一些类 并将方法 类重命名为 a b c 等 但我仍然可以看到这些方法中的代码 难道是我做错了什么 有什么可以阻止完全阻止拆卸我的组件吗 代码混淆远远超出了类 成员和变量的简单重命名 尽管这是
  • 在 Coldfusion 中使用 Unicode 字符解析 XML

    我正在使用 cfhttp 连接到外部 API 返回的数据为 XML 格式 我无法控制 API 或其返回的格式 当数据返回时 我循环遍历它并执行 cfquery 插入到我自己的 MySQL 数据库中 该数据库具有 UTF8 字符集 但是 某些
  • 如何获取已注册COM接口的IID?

    我知道我可以从注册表中的 COM 类对象读取 CLSIDClasses
  • 数据绑定到嵌套属性 - 无法绑定属性或列 (Winforms)

    我们正在使用 Windows 窗体运行 NET 4 0 应用程序 该应用程序对两种不同类型的对象使用单一表单 namespace NetIssue public partial class Form1 Form B myObj public
  • PowerShell 字符串插值语法

    我总是使用以下语法来确保变量在字符串中扩展 my string with a variable 我最近遇到了以下语法 my string with a variable 它们相等吗 有什么区别吗 tl dr Inside 只需要嵌入整个表达
  • ARM 上的快速浮点到整数转换和浮点精度 (iPhone 3GS/4)

    I read http www stereopsis com FPU html http www stereopsis com FPU html 中提到 在 x86 上将 float 转换为 int 的最快方法是什么 https stack
  • 扩展Python中的内置类

    如何扩展 python 中的内置类 我想向 str 类添加一个方法 我已经做了一些搜索 但我发现的只是较旧的帖子 我希望有人知道更新的内容 只需对类型进行子类化 gt gt gt class X str def my method self
  • 为什么 iPhone 请求 .m3u8 播放列表文件 4 次?

    为什么 iPhone 请求 m3u8 播放列表文件 4 次 并且 是否可以让它仅请求一次 请求执行如下 第一个是完整的请求 第二个是字节范围请求 范围为0 1 第三个是完整文件的另一个字节范围请求 最终的请求又是一个完整的请求 注意 iPh
  • 如何查看应用程序当前使用的堆大小?

    我想我在 NetBeans 中将堆大小增加到 1 GB 因为我将配置更改为如下所示 netbeans default options J Xmx1g 重新启动 NetBeans 后 我能否确定我的应用程序现在已获得 1 GB 空间 有没有办
  • 访问应用的外部脚本中的 buildscript 块中定义的类路径依赖项

    我最初的目标是能够使用中定义的类路径依赖项buildscript in build gradle 在导入的脚本内build gradle using apply from 但是 由于无法解析类 因此外部脚本无法编译 研究这个问题后 我发现逻
  • 我的 Flex 文件输出错误

    我编写了一个 l 文件并希望输出 c17 isc 中的内容 但有一个错误我不知道为什么 我已经给出了我打算读取的文件 flex文件和执行结果 这是 c17 isc 文件 内容的意思是 number gate name gate type o
  • 您可以使用 ffmpeg 流实时插入文件中的文本吗?

    我有这个代码 用于流式传输文件 并将视频某个时间的视频节目名称 name of show 放置在屏幕顶部 屏幕底部则显示节目名称来自 video title txt 并将其放置在屏幕底部 我想要做的是找到一种方法 每隔 1 或 2 分钟 提