[建议收藏]RTSP|RTMP直播流录制下来的MP4文件起播慢怎么办?

news/2024/9/20 12:52:36

MP4文件起播慢原因

我们在做录制的时候,会遇到这样的问题,有的开发者会把直播录制的mp4文件,用来做点播之用,这时候,会发现需要文件下载下来,才可以正常播放,也就我们常说的起播比较慢。

这个问题产生的原因,是因为源视频的moov(音视频数据索引)在mdat(音视频数据)之后造成的,为什么会出现这种情况呢?因为直播流,一般是最后些moov信息。

如何处理MP4文件?

可以通过转码源视频将moov移到mdat之前,以加快播放解析:

ffmpeg -i in.mp4 -movflags faststart out.mp4

如何查看moov和mdat?方便一些,可以直接用ffmpeg命令或Mp4Info类似的工具:

如果用ffmpeg查看:

用mp4info工具直接打开文件查看:

直播录制下来的文件,如果需要做这样的转换,如何处理?

以大牛直播SDK的Windows RTSP|RTMP播放器(SmartPlayer)为例,页面点击“录像”按钮后,开始录像和一个文件录制完成,我们都会有录像事件回调上来,如果需要将moov移到mdat之前,那么,可以在单个文件写入完成后,调用ffmpeg,直接从做转换,生成新的文件即可。

对应的录像状态回调事件如下:

/** SmartPlayerForm.cs* Author: daniusdk.com* WeChat: xinsheng120*/
private void RecordCallBack(UInt32 status, [MarshalAs(UnmanagedType.LPStr)] String file_name)
{byte[] utf8_bytes = Encoding.Default.GetBytes(file_name);byte[] default_bytes = Encoding.Convert(Encoding.UTF8, Encoding.Default, utf8_bytes);String recorder_file_name = Encoding.Default.GetString(default_bytes);StringBuilder sb = new StringBuilder();sb.Append("录像状态:");if (status == 1){sb.Append("new file: ");}else if(status == 2){sb.Append("finished file: ");}sb.Append(recorder_file_name);MessageBox.Show(sb.ToString());
}

总结

以上是针对直播流录制起播慢的处理,如果录制下来的文件,需要做在线点播,这块非常必要,有问题或感兴趣的开发者,可以单独跟我沟通探讨。


https://dhexx.cn/news/show-5415239.html

相关文章

Java 入门指南:Java 并发编程 —— 并发容器 TransferQueue、LinkedTransferQueue、SynchronousQueue

BlockingQueue BlockingQueue 是Java并发包(java.util.concurrent)中提供的一个阻塞队列接口,它继承自 Queue 接口。 BlockingQueue 中的元素采用 FIFO 的原则,支持多线程环境并发访问,提供了阻塞读取和写入的操作&a…

智能电气火灾监控探测器织就0.4kV配电系统防火网

在现代化城市的心脏地带,从高耸的智能楼宇到繁忙的工矿企业,电力如同血液般滋养着每一个角落,而电气安全则是这庞大体系中最不容忽视的防线。 电气火灾预防利器——ARCM剩余电流式电气火灾监控探测器,成功入驻0.4kV低压配电系统&…

【JVM】Java内存分配与回收:深入理解Java内存管理

Java内存分配与回收:深入理解Java内存管理 引言 Java虚拟机(JVM)的内存管理是确保Java应用程序性能和稳定性的关键。理解Java的内存分配方式和回收过程对于开发者来说至关重要。 基础知识 JVM内存模型:JVM内存分为堆&#xff…

文章润色太费时?试试这5款ai写作工具

你是否曾梦想拥有一个私人编辑,随时随地帮你打磨文字,让写作变得既轻松又专业? 告诉你一个好消息,现在有5款AI写作工具,它们就拥有这样的能力!这些AI助手擅长润色文章,优化语法,甚至…

分类预测|基于CNN提取特征使用支持向量机作为分类器进行分类预测CNN-SVM(SVM自动寻优c,g超参数)CNN和CNN-SVM

分类预测|基于CNN提取特征使用支持向量机作为分类器进行分类预测CNN-SVM(SVM自动寻优c,g超参数)CNN和CNN-SVM 文章目录 一、基本原理1. 卷积神经网络(CNN)简介CNN的基本结构 2. 支持向量机(SVM)…

二、基本语法配置请求

基本语法&配置&请求 WXML 模板语法数据绑定数据绑定的基本原则在 data 中定义页面的数据Mustache 语法的格式Mustache 语法的应用场景动态绑定内容动态绑定属性 事件绑定什么是事件小程序中常用的事件事件对象的属性列表target 和 currentTarget 的区别bindtap 的语法格…

python---爬取QQ音乐

如Cookie为非vip,仅能获取非vip歌曲 1.下载包 pip install jsonpath 2.代码 import os import time import requests from jsonpath import jsonpathdef search_and_download_qq_music(query_text):headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; …

13、Django Admin创建两个独立的管理站点

admin文件 from .models import Epic, Event, EventHero, EventVillain from django.contrib.admin import AdminSiteclass EventAdminSite(AdminSite):site_header "Events管理"site_title "欢迎您!"index_title "管理员"even…

STM32——看门狗(独立/窗口)

程序运行的保障措施,需要在程序中定期喂狗实现,如果某次没有喂,表示程序出现卡死或者其他状态,此时看门狗就会自动复位电路,防止程序长时间卡死。相当于自动复位电路。 独立看门狗:有单独的时钟LSI 窗口看…

导出硬盘所有文件名到txt文本文件——C#学习笔记

下面的示例演示如何使用递归遍历目录树。递归方法很简洁,但如果目录树很大且嵌套很深,则有可能会引起堆栈溢出异常。 对于所处理的特定异常以及在每个文件和文件夹上执行的特定操作,都只是作为示例提供。您应该修改此代码来满足自己特定的需…