首页
学习
活动
专区
圈层
工具
发布

解析 MP4 文件读取信息

认识 MP4 视频(下) 接下来我们就要去手动解析 MP4 文件,注意这可不是用 FFmpeg 来解封装,而是从 MP4 文件中一个一个字节读取信息并解析它的含义获得想要的内容。...平常一看到后缀是 .mp4 的文件,脑海里一想到的就是视频,但其实不管后缀如何,它也还是一个二进制文件,可以按照二进制的方式进行读取和写入。...解析 MP4 文件获取信息 举个例子,在 Mac 上用 010 Editor 软件去查看一个 MP4 文件,以 16 进制显示,效果如下: 从图中箭头指示处可以看到 ftyp 和 mvhd 两个 Box...在 mvhd Box中存储着视频文件的时长信息,想要获取到这个信息,直接从 Box 中读取就好,至于为什么会这样,见下图: 上图展示了 mvhd Box 的数据结构,它继承自 FullBox,在读取时先读取...以上只是个简单例子,说明完全可以去手动解析 MP4 文件获取它的格式信息。

1.9K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    流媒体技术基础

    /publish.x.com/live/stream # -re 控制输入包的读取速度 # -f lavfi 从虚拟输入设备读取 # -i testsrc=s=1280x720:r=25 # s...# ffprobe 分析音视频 ffprobe 是 FFmpeg 提供的一个工具,能用来分析音视频容器格式、音视频流信息、音视频包以及音视频帧等信息。...ffprobe -show_streams -i 信息内容 index 流索引 codec_name 流的编码名 codec_long_name 流编码详细描述 profile 编码器配置文件...查看模块的所有帮助信息 [type]=[name] 查看指定模块的帮助信息 如 ffmpeg -h muxer=mp4 查看 mp4 封装的帮助信息 如 ffmpeg -h encoder=libx264...查看 libx264 编码器的帮助信息 # FFmpeg 公共基础参数 公共操作部分 -report:输出日志 -v:设置日志级别 quiet:不输出任何日志 panic:输出错误日志 fatal

    2.6K10

    Mybatis【3】-- Mybatis使用工具类读取配置文件以及从属性读取DB信息

    1.使用工具类获取sqlSession实例对象 在上一个demo中,处理了多个namespace的问题,那么我们可以看到代码还是会有一定的冗余,比如下面这段代码中我们每一个增删改查操作都需要读取一遍配置文件...=null){ sqlSession.close(); } } } } 我们的思路应该是写一个工具类来替我们获取配置文件的信息...} return null; } } 使用的时候只需要获取即可 sqlSession=MyBatisUtils.getSqlSession(); 2.DB配置改造成读取配置文件...现在我们需要将DB使用配置文件读取,不是用xml配置,很多人会问,为什么这样做,有人可能会回答是因为改动的时候容易改,但是xml改动的时候不是挺容易改么?

    1.1K00

    FFmpeg从入门到精通(一)

    FFmpeg的多媒体设备交互 AVDevice 使用这个库能够读取电脑(或者其它设备上)的多媒体设备的数据,或者输出数据到指定的多媒体设备上。...FFmpeg的视频图像转换计算模块 swscale swscale模块提供了高级别的图像转换API,例如它允许进行图像缩放和像素格式转换,常见于将图像从1080p转换成720p或者480p等的缩放,或者将图像数据从...中,这条命令主要做了如下工作: 1)获得输入源input.mp4 2)转码 3)输出文件output.avi 看似简单的两步主要的工作,其实远远不止是从后缀名为MP4的文件输出成后缀名为AVI的文件...ffprode是一个非常强大的多媒体分析工具,可以从媒体文件或者媒体流中获得你想要了解的媒体信息,比如音频的参数、视频的参数、媒体容器的参数信息等。.../ffprobe -show_streams input.mp4 根据输出内容,可以看到MP4文件内容中的流信息。

    1.7K20

    FFmpeg使用手册 - FFmpeg 的基本组成

    1.5 FFmpeg 的音频转换计算模块libresample FFmpeg 的libresample 模块提供了高级别的音频重采样API接口。...输出文件output.avi 看似简单的两步主要的工作,其实远远不止是从后缀名为mp4的文件输出后缀名为avi的文件,因为在ffmpeg中,mp4与avi是两种流媒体格式,并不是后缀名所可以决定的,例如上面上的命令行同样可以这样写...1.8 FFmpeg的多媒体分析器ffprobe FFmpeg项目中的ffprobe是一个非常强大的多媒体分析工具,可以从媒体文件或者媒体流中获得到你想要了解到的媒体信息,比如音频的参数,视频的参数,...根据图中可以看到,使用ffprobe能够查看到mp4文件容器中的流的信息,包含了一个视频流,由于该文件中只有视频流,流相关的信息通过[STREAM][/STREAM]的方式展现出来,在[STREAM]与...[/STREAM]之间的信息为该mp4文件的视频流信息。

    3.4K30

    JavaCV推流实战(MP4文件)

    如下图所示: 这里简单解释一下上图的功能: 部署开源流媒体服务器SRS 开发名为PushMp4的java应用,该应用会读取本机磁盘上的Mp4文件,读取每一帧,推送到SRS上 每个想看视频的人,就在自己电脑上用流媒体播放软件...(例如VLC)连接SRS,播放PushMp4推上来的视频 今天咱们就来完成上图中的实战,整个过程分为以下步骤: 环境信息 准备MP4文件 用docker部署SRS java应用开发和运行 VLC播放 环境信息...本次实战,我这边涉及的环境信息如下,供您参考: 操作系统:macOS Monterey JDK:1.8.0_211 JavaCV:1.5.6 SRS:3 准备MP4文件 准备一个普通的MP4视频文件即可...,会取得MP4文件的相关信息 recorder.record(frame)方法执行的时候,会将帧推送到SRS服务器 编码完成后运行此类,控制台日志如下所示,可见成功的取到了MP4文件的帧率、时长、解码器...,除了代码中的知识,还有以下几个隐藏的知识点也值得关注 设置ffmpeg日志级别的代码是avutil.av_log_set_level(avutil.AV_LOG_ERROR),把参数改为avutil.AV_LOG_INFO

    2K20

    RTMP服务器搭建(crtmpserver和nginx)简介

    install wget cmake apt-get install libssl-dev crtmapserver编译 获取代码 可以从github上获取crtmapserver wget https...} location /stat.xsl { root /usr/local/nginx/nginx-rtmp-module/; } 打开网页就可以看到正在推流的信息..., 一般后面加copy表示拷贝 -vcodec:视频选项,一般后面加copy表示拷贝 -re ffmpeg读取文件有两种方式:一种是直接读取,文件被迅速读完;一种是按时间戳读取。...一般都是按时间戳读取文件, 格式: h264: 表示输出的是h264的视频裸流 mp4: 表示输出的是mp4的视频 mpegts: 表示ts视频流 命令行加入-re,表示按时间戳读取文件 示例 H264...视频转mp4 ffmpeg -i test.h264 -vcodec copy -f mp4 test.mp4 重新调整视频尺寸大小(仅限Linux平台) ffmpeg -vcodec mpeg4 -b

    3.8K20

    如何使用FFmpeg将AVI转换为MP4(有损转换和无损转换)

    ▲扫描图中二维码或点击阅读原文▲ 了解音视频技术大会更多信息 FFmpeg Easy-Tech #021# 在本篇文章中,我们将学习如何使用FFmpeg把视频从AVI格式转换为MP4格式(在重新/...的文件名 让FFmpeg直接将视频和音频(命令为:-c:v copy -c:a copy)从AVI容器格式复制到MP4容器格式。...这要看你是想直接复制视频并只改变容器格式(从AVI转换为MP4)还是确实想要重新编码视频并更改视频质量、大小等。 如果我不重新编码(从AVI到MP4的无损转换)会发生什么?...确定输出的MP4的文件名 告知FFmpeg直接将视频和音频(命令为:-c:v copy -c:a copy )从AVI容器格式转到MP4容器格式。...这是因为FFmpeg只是复制AVI文件中的视频和音频,并未重新编码,并将它们放入MP4容器。 因为视频并没有重新编码,所以你可以认为这种从AVI到MP4的转换是无损转换。

    11.3K50

    从“只能处理 MP4”到兼容 MKV:我们如何用 LibAV.js、WebCodecs 和 FFmpeg.wasm 重构浏览器视频编辑器

    标题从“只能处理MP4”到兼容MKV:我们如何用LibAV.js、WebCodecs和FFmpeg.wasm重构浏览器视频编辑器开源项目实践:TimelineStudio:https://github.com...只有以下情况才会进入兼容处理:文件扩展名是MKV或MKA;浏览器读取metadata失败;原生播放器无法正确解析素材;需要读取浏览器不支持的音频编码。...因此,LibAV.js运行在独立Worker中:展开代码语言:TXTAI代码解释React主线程↓postMessage(file)LibAVWorker├─打开媒体容器├─读取流信息├─读取时间基├─...当前兼容导入流程大致是:展开代码语言:TXTAI代码解释上传MKV↓LibAV.js读取容器和流信息↓判断视频、音频分别可以走哪种后端↓LibAV.js解码AC3↓FFmpeg.wasm将素材归一化为浏览器可编辑格式...九、功能越多,导出界面不一定越好早期版本曾经加入大量导出选项:帧率;质量级别;渲染管线;关键帧间隔;字幕交付方式;导出范围;预设管理;导出队列;导出历史;批量报告。

    21710

    手把手帮你视频转文本(1-视频转音频)

    转换结果示例 我们这里实现的是将 《托马斯和他的朋友们第18季》20集MP4视频,最终转换为一个word故事文档: 下面是第一集具体对话文本表格: 视频转音频 视频转音频基于ffmpeg库来实现。...and video) ffmpeg主要是以命令行模式来实现音视频转换和处理,我们这里实现的功能有: 将mp4文件中片头和片尾音乐剔除,截取中间片段。...截取mp4文件中间片段的命令基本格式为: ffmpeg -ss [start] -i [input] -t [duration] -c copy [output] ffmpeg -ss [start]...-i [input] -to [end] -c copy [output] ​ # 例如,以下是将t1801.mp4文件,截取从第30秒开始,截止到524秒,并保存为c1-1801.mp4文件: ffmpeg... 4.2.2-1.5.3 以下是基于isoparser,读取MP4文件的总时长(秒数): public

    3.3K00

    使用PHP结合Ffmpeg快速搭建流媒体服务实践

    为了解决这个问题,便想着搭建一套流媒体服务,这样手机就可以边看边下载,查询了一些资料了了解到需要先将视频分成一小片来传输,比如将MP4转码为M3U8格式,查询了相关转码方法,比较主流的方式是使用ffmpeg...命令执行过程中将会从远处下载镜像,这个时间由当前的网络带宽所决定,当下载完成之后,可以看到如下参考信息 Using default tag: latest latest: Pulling from jrottenberg...、编写展示视频列表、视频自动解码三个部分 4.1 创建虚拟主机 首先笔者需要借助nginx搭建一个web服务,这时便需要修改配置文件,但并不记得nginx配置文件存放位置,此时可以借助如下命令 sudo...vim /usr/local/etc/nginx/nginx.conf 然后在配置文件中加入如下参考配置信息 server { listen 8089;...> 在代码中,首先通过scandir读取文件夹下所有文件,然后进行foreach循环,通过后缀名来判断是否为视频文件,如果是视频文件,则输出一个链接地址方便用户选择。

    2.9K40
    领券