开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2778|回复: 32
收起左侧

[易源码分享] 解析FLV获取网络视频时长

[复制链接]

结帖率:100% (17/17)
发表于 2022-10-13 11:34:06 | 显示全部楼层 |阅读模式   山东省青岛市
分享源码
界面截图: -
是否带模块: -
备注说明: -
本帖最后由 TBit 于 2022-10-13 11:53 编辑

1.在问答区看到一篇帖子  获取flv网络视频时长

问答贴: https://bbs.125.la/thread-14749691-1-1.html

论坛中只有MP4的时长获取

也有通过读取前几百个字节 再使用ffmpeg来获取时长  虽然也能达到目的  但还需要带个ffmpeg 就很不方便

遂通过解析flv协yi 了解组成部分后成功获取时长 下面分享一下过程

2.flv格式解析

网上有很多关于flv格式解析的博客 可自行翻阅  下面列出本贴需要的部分

onMetaData

onMetaData中包含了音视频相关的元数据,封装在Script Data Tag中,它包含了两个AMF。

第一个AMF:

  • 第1个字节:0x02,表示字符串类型
  • 第2-3个字节:UI16类型,值为0x000A,表示字符串的长度为10(onMetaData的长度);
  • 第4-13个字节:字符串onMetaData对应的16进制数字(0x6F 0x6E 0x4D 0x65 0x74 0x61 0x44 0x61 0x74 0x61);

第二个AMF:

  • 第1个字节:0x08,表示数组类型;
  • 第2-5个字节:UI32类型,表示数组的长度,onMetaData中具体包含哪些属性是不固定的。
  • 第6个字节+:比如duration,则:
    • 第6-9个字节:0x0008,表示长度为8个字节;
    • 第10-17个字节:0x6475 7261 7469,表示 duration 这个字符串;
    • 第18个字节:0x00,表示为数值类型;
    • 第19-26个字节:0x...,表示具体的时长;

更多onMetaData字段的定义:

字段 字段类型 字段含义
duration DOUBLE 文件的时长
width DOUBLE 视频宽度(px)
height DOUBLE 视频高度(px)
videodatarate DOUBLE 视频比特率(kb/s)
framerate DOUBLE 视频帧率(帧/s)
videocodecid DOUBLE 视频编解码器ID(参考Video Tag)
audiosamplerate DOUBLE 音频采样率
audiosamplesize DOUBLE 音频采样精度(参考Audio Tag)
stereo BOOL 是否立体声
audiocodecid DOUBLE 音频编解码器ID(参考Audio Tag)
filesize DOUBLE 文件总得大小(字节)

00 08 64 75 72 61 74 69 6F 6E 00 40 A7 5D 1E B8 51 EB 85

08表示8个字节  

64 75 72 61 74 69 6F 6E 表示duration文字

上面选中部分则就是具体的时长   

由于 duration 是双浮点数据类型

所以要将这个十六进制转成双浮点即可获取正确的时长

十六进制转双浮点 参考帖子: https://bbs.125.la/forum.php?mod=redirect&goto=findpost&ptid=14699389&pid=22022452

解析部分参考博客: https://www.cnblogs.com/chyingp/p/flv-getting-started.html

源码很简单  大佬勿喷   调用了精易模块  自行引用即可   希望本贴能帮助到你们



获取网络flv时长.e (142.98 KB, 下载次数: 52)

评分

参与人数 6好评 +5 精币 +12 收起 理由
易语言资源网 + 1 + 3 开源精神必须支持~
凌哥 + 1 + 5 开源精神必须支持~
hehehero + 1 + 3 支持开源~!感谢分享
Lony + 1 支持开源~!感谢分享
铅笔刀 + 1 感谢分享,很给力!~
深田えいみ + 1 开源精神必须支持~

查看全部评分


本帖被以下淘专辑推荐:

  • · 好帖|主题: 1222, 订阅: 41

签到天数: 22 天

发表于 2023-4-13 14:50:17 | 显示全部楼层   浙江省绍兴市
能解析的方法太多了,主要是速度怎么样。
回复 支持 反对

使用道具 举报

发表于 2022-11-25 19:41:20 | 显示全部楼层   香港特别行政区*
国际偶尔几个hi计划
回复 支持 反对

使用道具 举报

发表于 2022-10-19 14:41:27 | 显示全部楼层   广东省中山市
支持大佬
回复 支持 反对

使用道具 举报

结帖率:87% (20/23)

签到天数: 1 天

发表于 2022-10-18 23:50:29 | 显示全部楼层   广东省东莞市
支持     1
回复 支持 反对

使用道具 举报

签到天数: 7 天

发表于 2022-10-17 03:37:50 | 显示全部楼层   澳大利亚
☆.。.:*(嘿´Д`嘿).。.:*☆
回复 支持 反对

使用道具 举报

结帖率:65% (36/55)

签到天数: 28 天

发表于 2022-10-16 08:16:29 | 显示全部楼层   河北省石家庄市
回复 支持 反对

使用道具 举报

签到天数: 22 天

发表于 2022-10-14 09:21:31 | 显示全部楼层   广东省广州市
开源精神必须支持~
回复 支持 反对

使用道具 举报

结帖率:67% (4/6)

签到天数: 14 天

发表于 2022-10-14 09:12:32 | 显示全部楼层   海南省海口市
番茄吧 发表于 2022-10-13 15:24
m3u8 里面都是明文啊,里面有时长

#EXTINF:   把所有的这个标签加起来就是总时长了 ...

这也太慢了  有别方法吗
回复 支持 反对

使用道具 举报

发表于 2022-10-14 04:46:43 | 显示全部楼层   广东省广州市
支持开源~!感谢分享!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表