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

  1. e:\flv
  2. $ ll
  3. total
  4. drwxr-xr-x Administrator 七月 : ./
  5. drwxr-xr-x Administrator 七月 : ../
  6. -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的时间戳。

  1. e:\flv
  2. $ flvtool2.exe -P --17.52.30.193.flv
  3. ---
  4. e:/flv/--17.52.30.193.flv:
  5. audiodatarate:
  6. framerate:
  7. service: SRS/2.0.(ZhouGuowen)
  8. videocodecid:
  9. audiosamplerate:
  10. height:
  11. filesize:
  12. duration: 2103.602
  13. audiocodecid:
  14. width:
  15. ...

很明显duration: 2103.602 这个字段对应的是35分钟是错误的。
既然用到了flvtool2 那么就展示一下本次使用的工具。

  1. e:\flv
  2. $ flv
  3. flvmdi.exe flvmeta.exe flvtool2.exe

1. 测试flvmdi

  1. e:\flv
  2. $ cp --17.52.30.193.flv test01.flv
  3.  
  4. e:\flv
  5. $ flvmdi.exe /v
  6.  
  7. Manitu Group FLV MetaData Injector 2.96
  8. Copyright (c) - Manitu Group. http://www.buraks.com/flvmdi
  9.  
  10. usage: flvmdi inFile [outFile] [/v] [/s] [/x] [/k] [/l] [/eExtraData] [/p]
  11.  
  12. e:\flv
  13. $ flvmdi.exe test01.flv testflvmdi.flv
  14.  
  15. Manitu Group FLV MetaData Injector 2.96
  16. Copyright (c) - Manitu Group. http://www.buraks.com/flvmdi
  17.  
  18. Completed.
  19.  
  20. e:\flv
  21. $ flvmdi.exe /k test01.flv testkflvmdi.flv
  22.  
  23. Manitu Group FLV MetaData Injector 2.96
  24. Copyright (c) - Manitu Group. http://www.buraks.com/flvmdi
  25.  
  26. Completed.
  27.  
  28. e:\flv
  29. $ flvmdi.exe test01.flv
  30.  
  31. Manitu Group FLV MetaData Injector 2.96
  32. Copyright (c) - Manitu Group. http://www.buraks.com/flvmdi
  33.  
  34. Completed.
  35.  
  36. e:\flv
  37. $ ll
  38. total
  39. drwxr-xr-x Administrator 七月 : ./
  40. drwxr-xr-x Administrator 七月 : ../
  41. -rw-r--r-- Administrator 七月 : --17.52.30.193.flv
  42. -rw-r--r-- Administrator 七月 : testkflvmdi.flv
  43. -rw-r--r-- Administrator 七月 : test01.flv
  44. -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

  1. e:\flv
  2. $ ffmpeg -i test04.flv -acodec copy -vcodec copy -f flv testffmpeg.flv
  3.  
  4. e:\flv
  5. $ ffmpeg -i test04.flv -acodec copy -vcodec copy -f mp4 testffmpeg.mp4
  6.  
  7. e:\flv
  8. $ ll
  9. total
  10. drwxr-xr-x Administrator 七月 : ./
  11. drwxr-xr-x Administrator 七月 : ../
  12. -rw-r--r-- Administrator 七月 : --17.52.30.193.flv
  13. -rw-r--r-- Administrator 七月 : flvmdi.flv
  14. -rw-r--r-- Administrator 七月 : test01.flv
  15. -rw-r--r-- Administrator 七月 : test02.flv
  16. -rw-r--r-- Administrator 七月 : test03.flv
  17. -rw-r--r-- Administrator 七月 : test04.flv
  18. -rw-r--r-- Administrator 七月 : testfflvmeta.flv
  19. -rw-r--r-- Administrator 七月 : testffmpeg.flv
  20. -rw-r--r-- Administrator 七月 : testffmpeg.mp4
  21. -rw-r--r-- Administrator 七月 : testflvmdi.flv
  22. -rw-r--r-- Administrator 七月 : testflvtool.flv
  23. -rw-r--r-- Administrator 七月 : testtflvmeta.flv
  24. -rw-r--r-- Administrator 七月 : testUflvmeta.flv

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

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

还有一个工具yamdi 未测试。

srs2录制flv文件metadata不准确的更多相关文章

  1. 【转】打包AAC码流到FLV文件

    AAC编码后数据打包到FLV很简单.1. FLV音频Tag格式                              字节位置    意义0x08,                         ...

  2. (转)rtmp协议简单解析以及用其发送h264的flv文件

    Adobe公司太坑人了,官方文档公布的信息根本就不全,如果只按照他上面的写的话,是没法用的.按照文档上面的流程,server和client连接之后首先要进行握手,握手成功之后进行一些交互,其实就是交互 ...

  3. C# 版 flvmerge:快速合并多个flv文件

    网上的视频很多都是分片的flv文件,怎么把他们合为一体呢?GUI工具就不考虑了,不适合批量执行,不适合在后台运行.有没有命令行工具或库可以实现呢? ffmpeg 提供了一个方法: (1)先把flv文件 ...

  4. (原)从mp4,flv文件中解析出h264和aac,送解码器解码失败

    转载请注明出处:http://www.cnblogs.com/lihaiping/p/5285166.html 今天在做本地文件解码测试,发现从mp4,flv文件中读出来的帧数据,h264和aac帧直 ...

  5. librtmp将本地FLV文件发布到RTMP流媒体服务器

    没有用到ffmpeg库 可以将本地FLV文件发布到RTMP流媒体服务器 使用librtmp发布RTMP流可以使用两种API:RTMP_SendPacket()和RTMP_Write(). 使用RTMP ...

  6. 打包AAC码流到FLV文件

    AAC编码后数据打包到FLV很简单. 1. FLV音频Tag格式                              字节位置    意义0x08,                       ...

  7. 使用ffmpeg批量合并flv文件

    title: 使用ffmpeg批量合并flv文件 toc: false date: 2018-10-14 16:08:19 categories: methods tags: ffmpeg flv 使 ...

  8. flv文件解析(纯c解析代码)

    参考链接: 1. FLV科普12 FLV脚本数据解析-Metadata Tag解析 https://blog.csdn.net/cabbage2008/article/details/50500021 ...

  9. h264 封装 RTMP中FLV数据的解析 rtmp协议简单解析以及用其发送h264的flv文件

    一个完整的多媒体文件是由音频和视频2部分组成的.H264.Xvid等就是视频编码格式,MP3.AAC等就是音频编码格式.字幕文件只是其中附带部分. 把视频编码和音频编码打包成一个完整的多媒体文件,可以 ...

随机推荐

  1. “玲珑杯”ACM比赛 Round #13 题解&源码

    A 题目链接:http://www.ifrog.cc/acm/problem/1111 分析:容易发现本题就是排序不等式, 将A数组与B数组分别排序之后, 答案即N∑i=1Ai×Bi 此题有坑,反正据 ...

  2. 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, ...

  3. 创建jedis对象

    1.先在taotao-parent的pom.xml中复制 以下内容到rest的pom.xml中 <!-- Redis客户端 --> <dependency> <group ...

  4. [国嵌笔记][011][Linux密码破解]

    破解步骤 1.在系统启动时进入grub选项菜单 2.在grub选项菜单中按e进入编辑模式 3.编辑kernel行,添加 /init 1 (表示进入单用户启动模式,在单用户启动模式中不会要求输入密码) ...

  5. [国嵌攻略][071][Coredump故障分析]

    Core Dump定义 Core Dump又叫核心转存.当程序在运行过程中发生异常,Linux系统可以把程序出错时的内存内容存储在一个core文件中,这个过程叫Core Dump. Core Dump ...

  6. 98、vue.js简单入门

    本篇导航: 介绍与安装 vue常用指令 一.介绍与安装 vue是一套构建用户界面的JAVASCRIPT框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层, ...

  7. solr单机版安装与基本部署

    安装solr准备工作: linux/tomcat/jdk solr单机版的安装 1.解压缩tomcat安装包 tar -zxf tomcat-xxx.tar.gz 2.创建文件夹:mkdir /usr ...

  8. 学而精计算机公共基础学习之路TEST2(程序设计基础)

    程序设计基础 程序设计方法与风格 1.程序设计方法 程序设计: 指设计.编制.调试程序的方法和过程. 程序设计方法是研究问题求解如何进行系统构造的软件方法学.常用的程序设计方法有:结构化程序设计方法. ...

  9. laravel中数据库在哪个文件中配置

    我们使用 mysql 数据库,修改 .env: DB_HOST=localhost DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD= 在mysql中创 ...

  10. js立体旋转展示效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...