热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何以编程方式生成碎片mp4文件-Howtogeneratefragmentedmp4filesprogrammatically

Ihaveamedia.h264livestreamingserver,andwanttomux.h264framestofragmentedmp4files.I

I have a media .h264 live streaming server, and want to mux .h264 frames to fragmented mp4 files. I am wondering does any library could support this?

我有一个媒体.h264直播服务器,并希望mux .h264帧到碎片mp4文件。我想知道任何图书馆都可以支持吗?

As far as I know, ffmpeg.exe and Bento4 could support this, but I want to use a library to do that in my code, not executing another process.

据我所知,ffmpeg.exe和Bento4可以支持这个,但是我想用一个库在我的代码中执行它,而不是执行另一个进程。

To specify my point, I want to generate fragmented mp4 files, which could be achieved by executing ffmpeg.exe like below,

要指定我的观点,我想生成碎片化的mp4文件,这可以通过执行ffmpeg.exe来实现,如下所示,

ffmpeg -i xx.h264 
        -vcodec copy -an -f mp4 -reset_timestamps 0 
        -movflags empty_moov+default_base_moof+frag_keyframe -loglevel quiet 
        xxx.mp4"

I want to mux mp4 files in my code, not create another process to do it.

我想在我的代码中复用mp4文件,而不是创建另一个进程来执行它。

Thanks.

2 个解决方案

#1


2  

libavformat and libavcodec are the underlying libraries of ffmpeg. You probably can accomplish everything you need with libavformat. The documentation on these libraries is sparse, but as I recall, most understanding can be gleamed from the header files.

libavformat和libavcodec是ffmpeg的底层库。您可能可以使用libavformat完成所需的一切。关于这些库的文档很少,但我记得,大多数理解都可以从头文件中找到。

#2


4  

More detailed:

AVDictionary* opts = NULL;
av_dict_set(&opts, "movflags", "frag_keyframe+empty_moov", 0);

and then later:

然后:

//init muxer, write output file header
avformat_write_header(formatContext, &opts);

where formatContext is pointer of AVFormatContext obtained when output file is opened using: avformat_alloc_output_context2 and avio_open functions.

其中formatContext是使用以下命令打开输出文件时获得的AVFormatContext指针:avformat_alloc_output_context2和avio_open函数。


推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • 利用决策树预测NBA比赛胜负的Python数据挖掘实践
    本文通过使用2013-14赛季NBA赛程与结果数据集以及2013年NBA排名数据,结合《Python数据挖掘入门与实践》一书中的方法,展示如何应用决策树算法进行比赛胜负预测。我们将详细讲解数据预处理、特征工程及模型评估等关键步骤。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 本文探讨了如何通过预处理器开关选择不同的类实现,并解决在特定情况下遇到的链接器错误。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 精通C++并非易事,为何它比其他语言更难掌握?这主要归因于C++的设计理念,即不强迫用户接受特定的编程风格或限制创新思维。本文探讨了如何有效学习C++,并介绍了几本权威的学习资源。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 本文详细介绍了如何在BackTrack 5中配置和启动SSH服务,确保其正常运行,并通过Windows系统成功连接。涵盖了必要的密钥生成步骤及常见问题解决方法。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 作为一名跨专业考生,最近在备战研究生入学考试的计算机编程部分。虽然没有编程基础,但通过九度在线教育平台的机试教程逐步学习,进展顺利。直到遇到贪心算法相关的题目,特别是浙江大学2012年的一道机试题——《加油还是不加油》,才遇到了挑战。本文将分享我在解决这一问题过程中的思考与学习体会。 ... [详细]
author-avatar
爱她一生2502876055
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有