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等就是音频编码格式.字幕文件只是其中附带部分. 把视频编码和音频编码打包成一个完整的多媒体文件,可以 ...
随机推荐
- “玲珑杯”ACM比赛 Round #13 题解&源码
A 题目链接:http://www.ifrog.cc/acm/problem/1111 分析:容易发现本题就是排序不等式, 将A数组与B数组分别排序之后, 答案即N∑i=1Ai×Bi 此题有坑,反正据 ...
- AtCoder Beginner Contest 069【A,水,B,水,C,数学,D,暴力】
A - K-City Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement In K-city, ...
- 创建jedis对象
1.先在taotao-parent的pom.xml中复制 以下内容到rest的pom.xml中 <!-- Redis客户端 --> <dependency> <group ...
- [国嵌笔记][011][Linux密码破解]
破解步骤 1.在系统启动时进入grub选项菜单 2.在grub选项菜单中按e进入编辑模式 3.编辑kernel行,添加 /init 1 (表示进入单用户启动模式,在单用户启动模式中不会要求输入密码) ...
- [国嵌攻略][071][Coredump故障分析]
Core Dump定义 Core Dump又叫核心转存.当程序在运行过程中发生异常,Linux系统可以把程序出错时的内存内容存储在一个core文件中,这个过程叫Core Dump. Core Dump ...
- 98、vue.js简单入门
本篇导航: 介绍与安装 vue常用指令 一.介绍与安装 vue是一套构建用户界面的JAVASCRIPT框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层, ...
- solr单机版安装与基本部署
安装solr准备工作: linux/tomcat/jdk solr单机版的安装 1.解压缩tomcat安装包 tar -zxf tomcat-xxx.tar.gz 2.创建文件夹:mkdir /usr ...
- 学而精计算机公共基础学习之路TEST2(程序设计基础)
程序设计基础 程序设计方法与风格 1.程序设计方法 程序设计: 指设计.编制.调试程序的方法和过程. 程序设计方法是研究问题求解如何进行系统构造的软件方法学.常用的程序设计方法有:结构化程序设计方法. ...
- laravel中数据库在哪个文件中配置
我们使用 mysql 数据库,修改 .env: DB_HOST=localhost DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD= 在mysql中创 ...
- js立体旋转展示效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...