前段时间分析mp4格式和gstreamer框架,不才,结果只是略懂皮毛。就把那点皮毛存在硬盘上了,一不小心格的什么都没了,现在连皮毛都忘完了...
这次写一个mp4封装换ts封装的批处理程序,搞了一天,前面写过一次批处理程序,笔记没了,这次只能重新学习
写一个批处理程序,首先调用MP4box抽出视频和音频轨(MP4文件是转好码的,视频和音频格式固定),然后调用tsMuxeR,对视频和音频进行封装(当然,tsMuxeR支持直接输入mp4重新封装为ts,这里只
是实验)
实现单独mp4输入的转码和目录下所有mp4文件的转码,以及输入文件列表,读取列表内容进行转码。
调用mp4box 抽取视频和音频轨比较简单,用start /wait MP4Box filename -raw 1 -out outfilename,要在调用中,不弹出新的cmd框,可以在start后面加 /B。tsMuxeR不能直接在cmd下调用,要用
tsMuxeR进行批出里,首先需要生成.meta文件,meta文件的内容可以打开tsMuxerGUI生成后,用UE打开查看,如:
MUXOPT --no-pcr-on-video-pid --new-audio-pes --vbr --vbv-len=500
V_MPEG4/ISO/AVC, "zzz.H264", fps=25, insertSEI, contSPS
A_AAC, "zzz.aac"
在处理中,先生成.meta文件,然后调用tsMuxeR zzz.meta进行封装
在读取输入时,路径可能有空格,在读取中用"delims="来取消空格的分隔作用,在传递路径参数时,含有空格的路径参数可以加""传递,也可以将路径转换为短路径传递
对于输入的目录路径,用for语句来查找目录下所用的mp4文件。
在判断输入的类型时,首先获取输入路径的文件扩展名,在比较文件扩展名时,在if 后加/i来忽略大小写。
对于列表文件中的列表文件,用递归来分析实现。
批处理命令参考:
独钓寒江的BLOG