srs2录制flv文件metadata不准确
测试环境:
server:srs2
client:librestreaming / yasea
srs 配置 dvr
录制24分钟flv文件。
e:\flv
$ ll
total
drwxr-xr-x Administrator 七月 : ./
drwxr-xr-x Administrator 七月 : ../
-rw-r--r-- Administrator 七月 : --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 --17.52.30.193.flv
---
e:/flv/--17.52.30.193.flv:
audiodatarate:
framerate:
service: SRS/2.0.(ZhouGuowen)
videocodecid:
audiosamplerate:
height:
filesize:
duration: 2103.602
audiocodecid:
width:
...
很明显duration: 2103.602 这个字段对应的是35分钟是错误的。
既然用到了flvtool2 那么就展示一下本次使用的工具。
e:\flv
$ flv
flvmdi.exe flvmeta.exe flvtool2.exe
1. 测试flvmdi
e:\flv
$ cp --17.52.30.193.flv test01.flv e:\flv
$ flvmdi.exe /v Manitu Group FLV MetaData Injector 2.96
Copyright (c) - 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.flv Manitu Group FLV MetaData Injector 2.96
Copyright (c) - Manitu Group. http://www.buraks.com/flvmdi Completed. e:\flv
$ flvmdi.exe /k test01.flv testkflvmdi.flv Manitu Group FLV MetaData Injector 2.96
Copyright (c) - Manitu Group. http://www.buraks.com/flvmdi Completed. e:\flv
$ flvmdi.exe test01.flv Manitu Group FLV MetaData Injector 2.96
Copyright (c) - Manitu Group. http://www.buraks.com/flvmdi Completed. e:\flv
$ ll
total
drwxr-xr-x Administrator 七月 : ./
drwxr-xr-x Administrator 七月 : ../
-rw-r--r-- Administrator 七月 : --17.52.30.193.flv
-rw-r--r-- Administrator 七月 : testkflvmdi.flv
-rw-r--r-- Administrator 七月 : test01.flv
-rw-r--r-- Administrator 七月 : 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.flv e:\flv
$ ffmpeg -i test04.flv -acodec copy -vcodec copy -f mp4 testffmpeg.mp4 e:\flv
$ ll
total
drwxr-xr-x Administrator 七月 : ./
drwxr-xr-x Administrator 七月 : ../
-rw-r--r-- Administrator 七月 : --17.52.30.193.flv
-rw-r--r-- Administrator 七月 : flvmdi.flv
-rw-r--r-- Administrator 七月 : test01.flv
-rw-r--r-- Administrator 七月 : test02.flv
-rw-r--r-- Administrator 七月 : test03.flv
-rw-r--r-- Administrator 七月 : test04.flv
-rw-r--r-- Administrator 七月 : testfflvmeta.flv
-rw-r--r-- Administrator 七月 : testffmpeg.flv
-rw-r--r-- Administrator 七月 : testffmpeg.mp4
-rw-r--r-- Administrator 七月 : testflvmdi.flv
-rw-r--r-- Administrator 七月 : testflvtool.flv
-rw-r--r-- Administrator 七月 : testtflvmeta.flv
-rw-r--r-- Administrator 七月 : testUflvmeta.flv
ffmpeg两条命令均耗时3s 播放器均可以识别正确的时长。发现生成mp4文件大小比原文件还小一些。
另外,在一些metadata错误信息存在的情况下,使用ffmpeg比其他几个修复的更好。
还有一个工具yamdi 未测试。
srs2录制flv文件metadata不准确的更多相关文章
- 【转】打包AAC码流到FLV文件
AAC编码后数据打包到FLV很简单.1. FLV音频Tag格式 字节位置 意义0x08, ...
- (转)rtmp协议简单解析以及用其发送h264的flv文件
Adobe公司太坑人了,官方文档公布的信息根本就不全,如果只按照他上面的写的话,是没法用的.按照文档上面的流程,server和client连接之后首先要进行握手,握手成功之后进行一些交互,其实就是交互 ...
- C# 版 flvmerge:快速合并多个flv文件
网上的视频很多都是分片的flv文件,怎么把他们合为一体呢?GUI工具就不考虑了,不适合批量执行,不适合在后台运行.有没有命令行工具或库可以实现呢? ffmpeg 提供了一个方法: (1)先把flv文件 ...
- (原)从mp4,flv文件中解析出h264和aac,送解码器解码失败
转载请注明出处:http://www.cnblogs.com/lihaiping/p/5285166.html 今天在做本地文件解码测试,发现从mp4,flv文件中读出来的帧数据,h264和aac帧直 ...
- librtmp将本地FLV文件发布到RTMP流媒体服务器
没有用到ffmpeg库 可以将本地FLV文件发布到RTMP流媒体服务器 使用librtmp发布RTMP流可以使用两种API:RTMP_SendPacket()和RTMP_Write(). 使用RTMP ...
- 打包AAC码流到FLV文件
AAC编码后数据打包到FLV很简单. 1. FLV音频Tag格式 字节位置 意义0x08, ...
- 使用ffmpeg批量合并flv文件
title: 使用ffmpeg批量合并flv文件 toc: false date: 2018-10-14 16:08:19 categories: methods tags: ffmpeg flv 使 ...
- flv文件解析(纯c解析代码)
参考链接: 1. FLV科普12 FLV脚本数据解析-Metadata Tag解析 https://blog.csdn.net/cabbage2008/article/details/50500021 ...
- h264 封装 RTMP中FLV数据的解析 rtmp协议简单解析以及用其发送h264的flv文件
一个完整的多媒体文件是由音频和视频2部分组成的.H264.Xvid等就是视频编码格式,MP3.AAC等就是音频编码格式.字幕文件只是其中附带部分. 把视频编码和音频编码打包成一个完整的多媒体文件,可以 ...
随机推荐
- jsp的内置对象
JSP内置对象即无需声明就可以直接使用的对象实例,在实际的开发过程中,比较常用的JSP对象有request,response,session,out和application等,笔者在本文章中将简单介绍 ...
- Git服务搭建及github使用教程
.pos { position: fixed; top: 35%; left: 90% } .pos a { border: 2px solid white; background: #99CCFF; ...
- 分布式监控系统--zabbix
1Zabbix简介 Zabbix 是一个企业级的分布式开源监控方案. 2.监控系统架构 C/S架构 客户端/服务器端,这种架构适合规模较小,处于同一地域的环境 C/P/S 客户端/代理端/服务器端/, ...
- 【老司机经验】CC2530&STM8S105二合一嵌入式学习板设计思路与经验分享
CC2530&STM8S105二合一嵌入式学习板设计思路与经验分享 1.缘起 这些年来一直在其他公司的实验箱和别人的开发板上进行教学与开发工作,总是觉得功能设计不那么合意.心里突然冒出个 ...
- [国嵌攻略][151][nandflash驱动程序设计]
初始化 打开/drivers/mtd/nand/s3c2410.c找到nand flash驱动程序代码,找到模块初始化函数s3c_nand_init,找到platform_driver中的probe函 ...
- xshell连接虚拟机Ubuntu问题
近期为了学习数据库的操作,准备在虚拟机中搭建环境以便操作(为什么在虚拟机搭建学习环境?),系统刚装好第一步就被阻止了. 总是会提示Could not connect to.原因是虚拟机没有安装ssh服 ...
- Tomcat服务器的下载及安装
Tomcat服务器的下载及安装 1)到apache官网.www.apache.org http://jakarta.apache.org(产品的主页) 2) 安装版:window (exe.m ...
- WPF DataTrigger数据触发器
1.通过绑定的属性值变化,动态改变界面的显示,比如绑定了IsExpanded,当为true,grid高度变成600,反之,grid高度变成320. <Grid.Style> <Sty ...
- 怎么去掉织梦网站首页带的index.html/index.php
方法1. 1)在空间面板里面找到默认首页设置: 我们是需要去掉index.html,这时我们只需要把index.html这个把它移到最顶级去就行,然后点击确定,在打开网站刷新下,就基本可以解决了! 其 ...
- dede文章插入分页符不起作用,编辑器中出现分页符,导致文章显示不全
文章来源:小灰博客| 时间:2013-10-30 13:40:21| 作者:Leo | 1 条评论 文章分类:IT技术分享.PHP 标签: dedecms 今天偶尔发现给一篇dede下的长文章 ...