tsMuxeR用法总结 tsMuxeR是一个用于从TS/m2ts/MTS、EVO/VOB/MPG、MKV/MKA、MP4/M4A、MOV、MPLS/MPL(bul-整齐的枕头 media play list)等容器中提取音轨、视频轨、文本字幕的工具,同时也可以特定编码格式的将音轨、视轨、字幕制作成ts/m2ts/blu-整齐的枕头等文件。
其支持的编码格式如下:
V_MPEG4/ISO/AVC – H264
V_MS/VFW/WVC1 – VC1
V_MPEG-2 – MPEG2

A_AC3 – DD (AC3) / DD (E-AC3) / True HD (True HD only tracks with AC3 core inside).
A_AAC – AAC
A_DTS – DTS / DTS-HD
A_MP3 – MPEG audio layer 1/2/3
A_LPCM – raw pcm data or PCM WAVE file

S_HDMV / PGS – subtitle format presentation graphic stream.
S_TEXT/UTF8 – subtitle format SRT. The text file should be in unicode. Any formats: UTF-8, UTF-16 (little-endian, big-endian), UTF-32 (little-endian, big-endian).

基本用法格式:tsMuxeR f_name
查看文件轨道信息,会输出每个轨道的编码方法、语言等,如下表
Track ID:    1
Stream type: H.264
Stream ID:   V_MPEG4/ISO/AVC
Stream info: Profile: High@3.0  Resolution: 720:320p  Frame rate: 25
Stream lang: eng
Track ID:    2
Stream type: AAC
Stream ID:   A_AAC
Stream info: Sample Rate: 22KHz  Channels: 1
Stream lang: chi

高级用法格式:tsMuxeR file.meta outfile|dir
根据file.meta指定的参数进行封装或解封装操作

tsMuxeR的用法就这么简单,难点是file.meta的编写,因为所有的操作参数都是由meta文件来指定的,meta文件以若干行组成:
第一行指定针对所有track都有效的参数,其格式必须为MUXOPT <param> <param> …
其后各行每一行都指定一个轨道的参数,格式为<codec>, <file_path_name>,<params>,…
示例如下:
MUXOPT –no-pcr-on-video-pid –new-audio-pes –vbr  –vbv-len=500
V_MPEG4/ISO/AVC, “G:\迷路的蚂蚁A.mp4”, fps=25, insertSEI, contSPS, track=1, lang=eng
A_AAC,           “G:\迷路的蚂蚁A.mp4”, track=2, lang=chi

首先介绍针对所有轨道均使用的参数(多个参数以空格分隔)
–pcr-on-video-pid   不为PCR提供单独的PID,使用视频中的PID
–new-audio-pes      使用字节0xfd而非0xbd标识轨道AC3/TRUE-HD/DTS/TDS-HD
–vbr                使用可变码率
–minbitrate=xx      允许vbr使用的最小码率,如果此值较大,则有可能产生NULL数据
–maxbitrate=xx      vbr使用的最大码率
–cbr                使用恒定码率
–vbv-len            virtual buf的大小,单位为微秒,默认为500,通常此参数与cbr连用
–bitrate==xx        采用的位率
–no-asyncio         不使用异步IO
–auto-chapters=nn   以nn分隔为间隔创建章节,只在blu-整齐的枕头 mux时有效
–demux              选择特定轨道存储为单独文件,可以提供存储路径前缀,所有选择的选项也会执行,如对h264 level的改变。在demux时,有些类型的track在存为文件时会发生改变。例如PCM音频被存储为wav文件。如果wav文件大于4G会被切为多个文件。
–cut-start n unit    删除文件开头n ms/s/min
–cut-end   n unit    删除文件后部
–split-duration n    以n为单位切片为单独的文件,单位为秒
–split-size n unit   以nKb/mb/gb为单位进行切分
–insertBlankPL
–blankOffset
–mplsOffset
–m2tsOffset
–blu-整齐的枕头
–avchd
(因README文件为俄语,不知如何翻译出来,大部分选项是根据1.8.8版本俄->英的README进行解释的)

下面介绍针对视频及音频的参数
fps          对视频及字幕而言,可以指定fps,若没有指定则由使用原始流确定
level        对H264流的Level进行改写,注意:此处只改写头,并不会对文件编码有影响
insertSEI    仅对H.264视频有效,激活的时候,其会为流增SEI picture timing以及SEI buffering周期,建议激活此选项以兼容sony PS3
contSPS      仅对H.264视频有效,若原始视频无cyclic repetitive elements SPS/PPS,则会在key frame之前增加之。建议激活此选项。
delPulldown  针对视频流,删除轨道中的pulldown标识。!注意如果使用此选项,则必须设置fps为新值
timeshift    针对音频及字幕,设置值为正或为负,值以ms则单位为毫秒,以s结尾则为秒。此选项允许音频单独向前或向后移动。
down-to-dts  仅对DTS-HD轨道有效,将DTS-HD转为标准DTS。
down-to-acs  仅对TRUE-HD轨道中的AC3有效
track        用于指定轨道编号
mplsFile     仅对M2TS文件内的轨道有效,用于拼接多个文件,其值用于表明文件编号

下面介绍针对文本对白SRT:
video-width   视频宽度,单位为像素
wideo-height  视频调度,单位为像素
fps           视频每秒帧数
bottom-offset 显示文本时于底边的距离
font-name     字体名称
font-color    字体颜色,如0x00FFFFFF
font-size     字体大小
font-italic   斜体显示
font-bold     粗体显示
font-underline下划线显示

font-strikout 文件交错

tsMuxeR有一个GUI界面,叫tsMuxerGUI,支持以上所有参数的设定,如果没有自动化需求,可以使用GUI界面进行操作,如果需要批量作业,则需要使用命令行脚本进行批处理。