MP4在FFmpeg中的Muxer
faststart参数使用案例
1.默认情况下ffmpeg生成moov是在mdat写完成之后再写入
ffmpeg -i 222.flv 333.mp4
2.将moov容器移动至mdat的前面
ffmpeg -i 222.flv -movflags faststart 333.mp4
dash参数使用案例
ffmpeg -i 222.flv -movflags dash 333.mp4
DASH格式的MP4文件存储主要以三种容器为主:sidx、moof、mdat。
isml参数使用案例
流媒体格式发布
ffmpeg -re -i 222.mp4 -c copy -movflags isml+frag_keyframe -f ismv Stream
�ftypisml � piff �8uuidピ�0?�莺/ 歠 <?xml version="1.0" encoding="utf-8"?>
<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
<head>
<meta name="creator" content="Lavf58.20.100" />
</head>
<body>
<switch>
<video systemBitrate="261371">
<param name="systemBitrate" value="261371" valuetype="data"/>
<param name="trackID" value="1" valuetype="data"/>
<param name="systemLanguage" value="und" valuetype="data"/>
<param name="trackName" value="video_und" valuetype="data"/>
<param name="CodecPrivateData" value="000000016764000DACD941E1BBFF0010000F1000000300100000030320F14299600000000168EBE3CB22C0" valuetype="data"/>
<param name="FourCC" value="H264" valuetype="data"/>
<param name="MaxWidth" value="480" valuetype="data"/>
<param name="MaxHeight" value="208" valuetype="data"/>
<param name="DisplayWidth" value="480" valuetype="data"/>
<param name="DisplayHeight" value="208" valuetype="data"/>
</video>
<audio systemBitrate="128042">
<param name="systemBitrate" value="128042" valuetype="data"/>
<param name="trackID" value="2" valuetype="data"/>
<param name="systemLanguage" value="und" valuetype="data"/>
<param name="trackName" value="audio_und" valuetype="data"/>
<param name="FourCC" value="AACL" valuetype="data"/>
<param name="CodecPrivateData" value="1210" valuetype="data"/>
<param name="AudioTag" value="255" valuetype="data"/>
<param name="Channels" value="2" valuetype="data"/>
<param name="SamplingRate" value="44100" valuetype="data"/>
<param name="BitsPerSample" value="16" valuetype="data"/>
<param name="PacketSize" value="4" valuetype="data"/>
</audio>
</switch>
</body>
</smil>
原理与HLS类似,通过XML格式进行索引,刷新切片内容进行直播。