博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
srs2录制flv文件metadata不准确
阅读量:4515 次
发布时间:2019-06-08

本文共 5548 字,大约阅读时间需要 18 分钟。

测试环境:

server:srs2
client:librestreaming / yasea
srs 配置 dvr
录制24分钟flv文件。

e:\flv$ lltotal 518312drwxr-xr-x 1 Administrator 197121         0 七月 24 11:55 ./drwxr-xr-x 1 Administrator 197121         0 七月 24 11:55 ../-rw-r--r-- 1 Administrator 197121 530743006 七月 22 18:17 07-22-17.52.30.193.flv

pc上使用最新版本vlc、potplayer播放,均显示35分钟;使用mpc-be播放,显示24分钟。

而使用mediainfo查看显示24分钟,实际上确实是24分钟。
和srs群好友们讨论了一下,是srs写flv文件时metadata的问题。可以通过添加配置time_jitter  full;修复metadata的时间戳。

e:\flv$ flvtool2.exe -P 07-22-17.52.30.193.flv---e:/flv/07-22-17.52.30.193.flv:  audiodatarate: 64  framerate: 25  service: SRS/2.0.223(ZhouGuowen)  videocodecid: 7  audiosamplerate: 44100  height: 720  filesize: 530743006  duration: 2103.602  audiocodecid: 10  width: 1280...

很明显duration: 2103.602 这个字段对应的是35分钟是错误的。

既然用到了flvtool2 那么就展示一下本次使用的工具。

e:\flv$ flvflvmdi.exe    flvmeta.exe   flvtool2.exe

1. 测试flvmdi

e:\flv$ cp 07-22-17.52.30.193.flv test01.flve:\flv$ flvmdi.exe /vManitu Group FLV MetaData Injector 2.96Copyright (c) 2004-2010 Manitu Group. http://www.buraks.com/flvmdi usage: flvmdi inFile [outFile] [/v] [/s] [/x] [/k] [/l] [/eExtraData] [/p]e:\flv$ flvmdi.exe test01.flv testflvmdi.flvManitu Group FLV MetaData Injector 2.96Copyright (c) 2004-2010 Manitu Group. http://www.buraks.com/flvmdiCompleted.e:\flv$ flvmdi.exe /k test01.flv testkflvmdi.flvManitu Group FLV MetaData Injector 2.96Copyright (c) 2004-2010 Manitu Group. http://www.buraks.com/flvmdiCompleted.e:\flv$ flvmdi.exe test01.flvManitu Group FLV MetaData Injector 2.96Copyright (c) 2004-2010 Manitu Group. http://www.buraks.com/flvmdiCompleted.e:\flv$ lltotal 2073252drwxr-xr-x 1 Administrator 197121         0 七月 24 13:44 ./drwxr-xr-x 1 Administrator 197121         0 七月 24 11:55 ../-rw-r--r-- 1 Administrator 197121 530743006 七月 22 18:17 07-22-17.52.30.193.flv-rw-r--r-- 1 Administrator 197121 530764769 七月 24 13:39 testkflvmdi.flv-rw-r--r-- 1 Administrator 197121 530743230 七月 24 13:48 test01.flv-rw-r--r-- 1 Administrator 197121 530743230 七月 24 13:38 testflvmdi.flv

/k是把keyframes写入metadata,所以生成的文件比其他两个命令生成的文件大。

三个命令均耗时13s,均完成修复。播放器均可以识别正确的时长。

2. 测试flvmeta

e:\flv

$ cp 07-22-17.52.30.193.flv test02.flv

e:\flv

$ flvmeta.exe -V
flvmeta 1.2.1

Copyright (C) 2007-2016 Marc Noirot <marc.noirot AT gmail.com>

This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

e:\flv

$ flvmeta.exe -f test02.flv testfflvmeta.flv
e:\flv
$ flvmeta.exe -t test02.flv testtflvmeta.flv
e:\flv
$ flvmeta.exe -U test02.flv testUflvmeta.flv
e:\flv
$ flvmeta.exe -U test02.flv

e:\flv

$ ll
total 4146564
drwxr-xr-x 1 Administrator 197121 0 七月 24 13:57 ./
drwxr-xr-x 1 Administrator 197121 0 七月 24 11:55 ../
-rw-r--r-- 1 Administrator 197121 530743006 七月 22 18:17 07-22-17.52.30.193.flv
-rw-r--r-- 1 Administrator 197121 530764769 七月 24 13:39 flvmdi.flv
-rw-r--r-- 1 Administrator 197121 530743230 七月 24 13:48 test01.flv
-rw-r--r-- 1 Administrator 197121 530764891 七月 24 13:59 test02.flv
-rw-r--r-- 1 Administrator 197121 530764891 七月 24 13:55 testfflvmeta.flv
-rw-r--r-- 1 Administrator 197121 530743230 七月 24 13:38 testflvmdi.flv
-rw-r--r-- 1 Administrator 197121 530764891 七月 24 13:56 testtflvmeta.flv
-rw-r--r-- 1 Administrator 197121 530764891 七月 24 13:57 testUflvmeta.flv

flvmeta 命令行耗时2s 生成的文件大小一致。

均完成修复。播放器均可以识别正确的时长。

3. 测试flvtool2

e:\flv

$ flvtool2 -V
FLVTool2 1.0.6
e:\flv
$ flvtool2.exe -U test03.flv testflvtool.flv
ERROR: undefined method `[]' for #<Object:0x23b5fcc>
ERROR: flv/stream.rb:138:in `add_meta_tag'
ERROR: flvtool2/base.rb:184:in `add_meta_data_tag'
ERROR: flvtool2/base.rb:137:in `update'
ERROR: flvtool2/base.rb:47:in `send'
ERROR: flvtool2/base.rb:47:in `execute!'
ERROR: flvtool2/base.rb:46:in `each'
ERROR: flvtool2/base.rb:46:in `execute!'
ERROR: flvtool2/base.rb:239:in `process_files'
ERROR: flvtool2/base.rb:225:in `each'
ERROR: flvtool2/base.rb:225:in `process_files'
ERROR: flvtool2/base.rb:44:in `execute!'
ERROR: flvtool2.rb:168:in `execute!'
ERROR: flvtool2.rb:228

e:\flv

$ ll testflvtool.flv
-rw-r--r-- 1 Administrator 197121 0 七月 24 14:13 testflvtool.flv

flvtool2 在执行30s以后报错,生成的文件大小为0.

我之前成功过其他文件,这个处理时间是这样的,估计我的文件错误超出了flvtool2的处理能力。

4. 对比ffmpeg

e:\flv$ ffmpeg -i test04.flv -acodec copy -vcodec copy -f flv testffmpeg.flve:\flv$ ffmpeg -i test04.flv -acodec copy -vcodec copy -f mp4 testffmpeg.mp4e:\flv$ lltotal 6219296drwxr-xr-x 1 Administrator 197121         0 七月 24 14:23 ./drwxr-xr-x 1 Administrator 197121         0 七月 24 11:55 ../-rw-r--r-- 1 Administrator 197121 530743006 七月 22 18:17 07-22-17.52.30.193.flv-rw-r--r-- 1 Administrator 197121 530764769 七月 24 13:39 flvmdi.flv-rw-r--r-- 1 Administrator 197121 530743230 七月 24 13:48 test01.flv-rw-r--r-- 1 Administrator 197121 530764891 七月 24 13:59 test02.flv-rw-r--r-- 1 Administrator 197121 530743006 七月 24 14:04 test03.flv-rw-r--r-- 1 Administrator 197121 530743006 七月 24 14:19 test04.flv-rw-r--r-- 1 Administrator 197121 530764891 七月 24 13:55 testfflvmeta.flv-rw-r--r-- 1 Administrator 197121 530743115 七月 24 14:20 testffmpeg.flv-rw-r--r-- 1 Administrator 197121 530246130 七月 24 14:23 testffmpeg.mp4-rw-r--r-- 1 Administrator 197121 530743230 七月 24 13:38 testflvmdi.flv-rw-r--r-- 1 Administrator 197121         0 七月 24 14:13 testflvtool.flv-rw-r--r-- 1 Administrator 197121 530764891 七月 24 13:56 testtflvmeta.flv-rw-r--r-- 1 Administrator 197121 530764891 七月 24 13:57 testUflvmeta.flv

ffmpeg两条命令均耗时3s 播放器均可以识别正确的时长。发现生成mp4文件大小比原文件还小一些。

另外,在一些metadata错误信息存在的情况下,使用ffmpeg比其他几个修复的更好。

还有一个工具yamdi 未测试。

转载于:https://www.cnblogs.com/zzugyl/p/7228850.html

你可能感兴趣的文章
[HDU] 1068 Girls and Boys(二分图最大匹配)
查看>>
ADO.NET类的模型关系图
查看>>
SRM 604 DIV2 250
查看>>
python中异常处理之esle,except,else
查看>>
看苹果官方API
查看>>
06-基础-系统指令-v-model-语法糖原理
查看>>
论文网站相关链接
查看>>
死锁,死锁必要条件及处理策略
查看>>
Kinect for windows
查看>>
Java EE Map
查看>>
Hadoop源代码点滴-文件系统HDFS
查看>>
单个页面Request编码方式的改变,无需改动Web.config~
查看>>
SQL Server中的窗口函数
查看>>
【Alpha】Daily Scrum Meeting第十次
查看>>
戴尔Inspiron N4120 笔记本电脑安装XP、win7双系统过程
查看>>
Android 适配知识点
查看>>
Android中常用的几种加密
查看>>
50.Android编码规范
查看>>
linux下source命令的基本功能
查看>>
linux-IO重定向-文本流重定向
查看>>