ffmpeg中stream_loop参数不生效原因分析

问题

使用ffmpeg把一个视频文件发布成一个rtmp流,并设置成循环推流,此时需要使用参数stream_loop,命令如下:

ffmpeg.exe -stream_loop -1 -re -i D:\tools\ffmpeg-5.1.2\bin\sei.h264 -c copy -f flv -safe 0 rtmp://localhost:1935/live/test

但是发现一个问题,stream_loop参数没有生效,循环推流失败,报错如下:

[flv @ 0000024c65c266c0] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
Seek to start failed.=-1.0 size=   21954kB time=00:00:46.38 bitrate=3877.7kbits/s speed=   1x
D:\tools\ffmpeg-5.1.2-full_build\bin\sei.h264: Operation not permitted
[flv @ 0000024c65c266c0] Failed to update header with correct duration.
[flv @ 0000024c65c266c0] Failed to update header with correct filesize.
frame= 1116 fps= 24 q=-1.0 Lsize=   21954kB time=00:00:46.50 bitrate=3867.3kbits/s speed=0.999x
video:21932kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.100925%

截图:

解决

通过分析日志可以发现,报错前出现了一个报警信息:Seek to start failed. 个人猜测循环推流没有成功就是因为Seek操作失败了,首先看一下ffmpeg源码:

    if (ret < 0 && ifile->loop) {AVCodecContext *avctx;for (i = 0; i < ifile->nb_streams; i++) {ist = input_streams[ifile->ist_index + i];avctx = ist->dec_ctx;if (ist->processing_needed) {ret = process_input_packet(ist, NULL, 1);if (ret>0)return 0;if (ist->decoding_needed)avcodec_flush_buffers(avctx);}}
#if HAVE_THREADSfree_input_thread(file_index);
#endifret = seek_to_start(ifile, is);
#if HAVE_THREADSthread_ret = init_input_thread(file_index);if (thread_ret < 0)return thread_ret;
#endifif (ret < 0)av_log(NULL, AV_LOG_WARNING, "Seek to start failed.\n");elseret = get_input_packet(ifile, &pkt);if (ret == AVERROR(EAGAIN)) {ifile->eagain = 1;return ret;}}

报警是seek_too_start方法触发的,传入的参数是文件名,同时,接下来的报错又是文件读取没有权限:Operation not permitted。所以自己大胆猜测可能是文件格式不支持。

于是,自己又将sei.h264封装成mp4,命令如下:

ffmpeg.exe -i sei.h264 -c copy sei.mp4

然后再次执行本文开头的推流命令,发现循环推流成功了。

最后,发现循环推流两个多小时,没有任何问题。之后手动停止推流,截图如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/4269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ESP32的wifi---一些误区

该芯片包含热点AP模式和客户端STA模式 热点AP模式&#xff1a;是指电脑或手机直接连接ESP32发出的热点实现连接&#xff0c;如果电脑连接模块AP热点&#xff0c;这样电脑就不能上网。 因此再使用电脑端和模块进行网络通信时&#xff0c;一般情况下都是使用STA模式。也就是电脑…

视频号小店要交多少保证金?这里面的秘密,全网无人敢说!

大家好&#xff0c;我是电商糖果 关于视频号小店的保证金的问题&#xff0c;有不少人询问过糖果。 这毕竟是个新平台&#xff0c;很多人对于它的收费标准不太清楚。 糖果做视频号小店一年多了&#xff0c;也开了多家小店。 下面就来给大家详细的说一下。 首先&#xff0c;我…

鸿蒙官网学习3

鸿蒙官网学习3 每日小提示项目的模块类型跨设备预览调试阶段应用的替换方式有两种 打开老的demo工程报错UIAbility 每日小提示 项目的模块类型 moduleType分为三种&#xff0c;只有1&#xff0c;2的模块支持直接调试和运行 entryfeaturehar 跨设备预览 需要手动在config.j…

Java微服务架构之Spring Boot —上篇

SpringBoot 概述 SpringBoot提供了一种快速使用Spring的方式&#xff0c;基于约定优于配置的思想&#xff0c;可以让开发人员不必在配置与逻辑业务之间进行思维的切换&#xff0c;全身心的投入到逻辑业务的代码编写中&#xff0c;从而大大提高了开发的效率&#xff0c;一定程度…

Swift - 基础语法

文章目录 Swift - 基础语法1. 常量1.1 只能赋值1次1.2 它的值不要求在编译时期确定&#xff0c;但使用之前必须赋值1次1.3 常量、变量在初始化之前&#xff0c;都不能使用 2. 标识符3. 常用数据类型4. 字面量4.1 布尔4.2 字符串4.3 整数4.4 浮点数4.5 数组4.6 字典 5. 类型转换…

【MySQL关系型数据库】基本命令、配置、连接池

目录 MySQL数据库 第一章 1、什么是数据库 2、数据库分类 3、不同数据库的特点 4、MySQL常见命令&#xff1a; 5、MySQL基本语法 第二章 1、MySQL的常见数据类型 1、数值类型 2、字符类型 3、时间日期类型 2、SQL语句分类 1、DDL&#xff08;数据定义语言&#x…

Rust 实战练习 - 11. Rust异步的基石 tokio

前言 Tokio是一个异步运行时。同时支持embedded devices. 对异步代码的多线程运行时对标准库的异步实现 (这个可以省很多事情)生态系统丰富&#xff0c;非常多的工具库实现 Tokio不是万能的&#xff0c;部分场景不建议&#xff0c;可以考虑使用其他的&#xff1a; 多CPU计算…

怎么理解React Router

React Router就是实现不用刷新的条件下切换不同页面。路由的本质是页面URL发生改变,页面的显示结果也发生改变,但是页面不会刷新。 React Router分为几个部分: React-Router:实现了路由核心部分功能;React-Router-dom:基于react-router,加入了在浏览器运行环境下的一些…

Qt设置可执行程序图标,并打包发布

一、设置图标 图标png转ico: https://www.toolhelper.cn/Image/ImageToIco设置可执行程序图标 修改可执行程序图标 添加一个rc文件,操作如下,记得后缀改为rc 打开logo.rc文件添加代码IDI_ICON1 ICON DISCARDABLE "logo.ico"在项目pro后缀名的文件中添加代码 RC_…

一套Java语言开发的(药物不良反应智能监测ADR成品源码)B/S架构:用于监测和收集药品在使用过程中发生的不良反应的系统

药品不良反应监测工作弥补了药品上市前研究的局限性&#xff0c;可以最大程度上降低药品不良反应的重复发生&#xff0c;提高合理用药水平&#xff0c;同时也为监管、遴选、调整基本药物提供了数据支持。 所谓“是药三分毒”&#xff0c;药品是把双刃剑&#xff0c;具有两面性…

基于springboot+vue+Mysql的CSGO赛事管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

Docker容器部署overleaf

overleaf在线版限制很多&#xff0c;好在开源&#xff0c;准备在本地Docker部署&#xff0c;网上翻了翻&#xff0c;似乎本地部署并非易事&#xff0c;我也尝试了一下&#xff0c;发现直接使用docker-compose拉官方最新镜像部署的确问题很多&#xff0c;不过最终还是完美解决。…

【ARMv9 DSU-120 系列 4.2 -- Utility Bus 访问的 memory-mapped 寄存器详细介绍】

请阅读【Arm DynamIQ™ Shared Unit-120 专栏 】 文章目录 External registers关于Cluster系统控制寄存器的关键点摘要表概述Cluster registers summaryExternal registers ARMv9架构中的DSU-120(DynamIQ™ Shared Unit-120)提供了一组Cluster系统控制寄存器,这些寄存器可以…

36 ajax的相关属性和api

如果是get方式&#xff0c;请求参数携带在url中 url?key1value1&key2value2..... 如果是post方式&#xff0c;请求参数携带在send中&#xff0c;key1value&key2value..... 异步 readyState是xhr对象不同步骤的状态码 0 new了一个XMLHttpRequest对象 1 调用了open…

Git 流程和命令

Git 流程和命令 1.clone 远程项目 git clone [url] // 将存储库克隆到本地 2.复制代码到新clone的目录 &#xff1a;将目录所有文档添加到暂存区 git add . // 添加当前目录下所有文件至暂存区 3.将文件添加到暂存区&#xff0c;再添加到本地仓库&#xff0c;并记录下备注&…

vs2019 - warning LNK4098 : 默认库“msvcrt.lib”与其他库的使用冲突

文章目录 vs2019 - warning LNK4098 : 默认库“msvcrt.lib”与其他库的使用冲突概述笔记实验 - 编译静态库实验 - 编译主工程&#xff0c;包含静态库实验主工程和静态库编译设置不同时的编译报错和警告备注备注 - 判断/Mdd, /MdEND vs2019 - warning LNK4098 : 默认库“msvcrt.…

OpenHarmony实战开发-动画概述

UI&#xff08;用户界面&#xff09;中包含开发者与设备进行交互时所看到的各种组件&#xff08;如时间、壁纸等&#xff09;。属性作为接口&#xff0c;用于控制组件的行为。例如&#xff0c;开发者可通过位置属性调整组件在屏幕上的位置。 属性值的变化&#xff0c;通常会引…

NetSuite如何迁移Workbook

截止到24.1&#xff0c; Workbook的迁移仍然是个难题。Bundle和Copy To Account都不支持Workbook的迁移&#xff0c;只剩下SDF的办法了。所以&#xff0c;今朝我们就介绍一下SDF迁移Workbook的方法。 1. 迁移准备 基本上&#xff0c;Workbook的迁移涉及4类对象&#xff1a; …

VMWARE安装xpsp3时无法从光盘启动安装显示dhcp转圈圈

VMWARE安装xpsp3时无法从光盘启动安装显示dhcp转圈圈。之前都安装过无数次了。这次被卡住了。 原来是这里原因 不成功是因为启动时连接没打钩。默认是打钩的。不知道怎么的我把勾去掉了。我还跑去设置bios。都没有用。

paddle ocr模型量化实践

参考&#xff1a;https://github.com/PaddlePaddle/PaddleOCR/blob/main/deploy/slim/quantization/README.md https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7.1/doc/doc_ch/FAQ.md 蒸馏 剪枝 量化 参考&#xff1a;https://blog.csdn.net/mddCSDN/article/de…