无需软件,使用copy命令合并FLV文件

来源:互联网 发布:环境监测数据空虚作假 编辑:程序博客网 时间:2024/06/09 15:40
 

(友情提示:那什么月亮FLV合并器、急速FLV合并器之类的软件,不仅不好用,还捆绑了一批恶意插件,慎下!再说搞不好那些臃肿的外壳下面除了广告和恶意插件,也就这几个字符了。)

等了几年了都没等到一款好用的合并器,还是手工来吧。古老的DOS命令太强大了,华丽的图形界面解决不了的,去CMD下试试,或许会有意想不到的收获。

copy是dos下的复制命令,/b表示是以二进制复制。

格式:

copy /b 1.flv+2.flv+3.flv new.flv

or copy 1.flv/b+2.flv/b+3.flv/b new.flv

示例1:

E:\>copy /b 法拉利的精神领袖车168试驾法拉利458Italia1.mp4+法拉利的精神领袖车168 试驾法拉利458Italia2.mp4 new.mp4

法拉利的精神领袖车168试驾法拉利458Italia1.MP4

法拉利的精神领袖车168试驾法拉利458Italia2.MP4

已复制         1 个文件。

示例2:

E:\>copy /b 不倒?!四川1.flv+不倒?!四川2.flv+不倒?!四川3.flv+不倒?!四川4.flv+不倒?!四川5.flv test.flv

这个出来的结果不太令人满意,后面的部分很多是花屏,不知道是因为太大了(五个FLV共231M)还是因为编码的问题。

有些经合并后虽然能播放但是时间轴不对,不能自由调节进度。这个估计要用编辑器以二进制来编辑了。。

附相关技术文档:

  FLV是一个二进制文件,由文件头(FLV header)和很多tag组成。tag又可以分成三类:audio,video,script,分别代表音频流,视频流,脚本流(关键字或者文件信息之类)。

FLV Header

  一般比较简单,包括文件类型之类的全局信息

  文件类型 3bytes 总是FLV(0x46 0x4C 0x56),否则...

  版本 1byte 一般是0x01,表示FLV version 1

  流信息 1byte 倒数第一bit是1表示有视频,倒数第三bit是1表示有音频,其他都应该是0(有些软件如flvtool2可能造成倒数第四bit是1,不过也没发现有什么不对)

  header长度 4bytes 整个文件头的长度,一般是9(3+1+1+4),有时候后面还有些别的信息,就不是9了

FLV Body

  FLV body就是由很多tag组成的,一个tag包括下列信息:

  previoustagsize 4bytes 前一个tag的长度,第一个tag就是0

  tag类型 1byte

  三类:

  * 8 -- 音频tag

  * 9 -- 视频tag

  * 18 -- 脚本tag

  数据区长度 3bytes 时间戳 3bytes 单位毫秒,如果是脚本tag就是0

  扩展时间戳 1byte 作为时间戳的高位

  streamsID 3bytes 总是0(不知道干啥用)

  数据区

  根据不同的tag类型就有不同的数据区

  Audio tag 数据区

  audio信息 1byte  

FLV

前四位bits表示音频格式:

  * 0 -- 未压缩

  * 1 -- ADPCM

  * 2 -- MP3

  * 5 -- Nellymoser 8kHz momo

  * 6 -- Nellymoser

  下面两位bits表示samplerate:

  * 0 -- 5.5kHz

  * 1 -- 11kHz

  * 2 -- 22kHz

  * 3 -- 44kHz

  下面一位bit表示每个采样的长度:

  * 0 -- snd8Bit

  * 1 -- snd16Bit

  下面一位bit表示类型:

  * 0 -- sndMomo

  * 1 -- sndStereo

  audio数据区

  不定

  video tag 数据区

  video信息 1byte

  前四位bits表示类型:

  * 1 -- keyframe

  * 2 -- inner frame

  * 3 -- disposable inner frame (H.263 only)

  后四位bits表示编码器id:

  * 2 -- Seronson H.263

  * 3 -- Screen video

  * 4 -- On2 VP6

  * 5 -- On2 VP6 without channel

  * 6 -- Screen video version 2

  video数据区

  不定

  script tag 数据区

  略n字...