问答贴: https://125.confly.eu.org/thread-14749691-1-1.html
论坛中只有MP4的时长获取
也有通过读取前几百个字节 再使用ffmpeg来获取时长 虽然也能达到目的 但还需要带个ffmpeg 就很不方便
遂通过解析flv协yi 了解组成部分后成功获取时长 下面分享一下过程
网上有很多关于flv格式解析的博客 可自行翻阅 下面列出本贴需要的部分
onMetaData中包含了音视频相关的元数据,封装在Script Data Tag中,它包含了两个AMF。
第一个AMF:
第二个AMF:
更多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://125.confly.eu.org/forum.php?mod=redirect&goto=findpost&ptid=14699389&pid=22022452
解析部分参考博客: https://www.cnblogs.com/chyingp/p/flv-getting-started.html
源码很简单 大佬勿喷 调用了精易模块 自行引用即可 希望本贴能帮助到你们
xiazai520 发表于 2022-10-13 14:03
m3u8时长能获取网络视频时长吗?
番茄吧 发表于 2022-10-13 15:24
m3u8 里面都是明文啊,里面有时长
#EXTINF: 把所有的这个标签加起来就是总时长了 ...
欢迎光临 精易论坛 (https://125.confly.eu.org/) | Powered by Discuz! X3.4 |