解决ffmpeg - Create MPEG-DASH Initialization segment
系统环境为CentOS 6.2 64位? 一，准备工作 DSS主页： http://dss.macosforge.org/ 下载安装包：wget? http://dss.macosforge.org/downloads/DarwinStreamingSrvr
I am looking to convert between HLS and MPEG Dash. I do not access to the original fully concatenated video file, only the individual HLS segments.
In doing this transformation to MPEG Dash I need to supply an initialziation segment for the Dash manifest .mpd file.
My questions are:
- What is the structure of a Dash video initialization segment?
- How can I generate/create one without the need for the original full file?
Perhaps a solution would involve getting
MP4Box to convert the '.ts' HLS segments to Dash '.m4s' segments which are self initializing, but I am unsure how to go about this this?
Any ideas are much appreciated.
UPDATE: Snippet to stream using original hls segments. Video plays all the way through but is just black.
ffmpeg hls mpeg-dash adaptive-bitrate mp4box
<Representation width="426" height="238" frameRate="25" id="238p 400kbps" bandwidth="400000"> <SegmentList timescale="25000" duration="112500"> <SegmentURL media="video_0_400000/hls/segment_0.ts"/> <SegmentURL media="video_0_400000/hls/segment_1.ts"/> <SegmentURL media="video_0_400000/hls/segment_2.ts"/> </SegmentList> </Representation> </AdaptationSet>
edited Jan 5 '16 at 9:30 asked Jan 4 '16 at 16:01 Mahout 289 1 10
What is the structure of a Dash video initialization segment?
The initialization segment contains information required to initialize the video decoder. The initialization segment is optional (refer to ISO/IEC 23009-1).
For ISO BMFF (commonly known as mp4) this includes the
moov box (specified in ISO/IEC 14496-12). For MPEG-TS usually there is no initialization segment. When present it contains several packets that carry the initialization data in a PES.
How can I generate/create one without the need for the original full file?
MPEG-DASH is trivial if your target player supports the required features. First you need a player that supports MPEG-TS. Then you don't actually need an initialization segment because the initialization data is contained inside each HLS segment. To convert and HLS playlist to a MPEG-DASH mpd you have to create a
segment list or a
segment template. Here is an example:
#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:10 #EXTINF:10.0, stream0.ts #EXTINF:10.0, stream1.ts #EXTINF:10.0, stream2.ts
... <SegmentList duration="10"> <SegmentURL media="stream0.ts"/> <SegmentURL media="stream1.ts"/> <SegmentURL media="stream2.ts"/> </SegmentList> ...
If your target player does not support MPEG-TS or
SegmentList then you have to convert the HLS stream to MPEG-DASH by the use of some external tool like
answered Jan 5 '16 at 8:06 Svetlin Mladenov 2,458 12 23 Many thanks, this is really insightful. I don't believe I have a player which will support these HLS segments. Could you point me in the right direction for the mp4box command that will do this conversion? – Mahout Jan 5 '16 at 8:57 Sorry, I haven't had much experience with mp4box. I've tried it a couple of times but I don't remember the exact commands. I suggest you examine the documentation. – Svetlin Mladenov Jan 5 '16 at 9:03 Using the SegmentList method above, I can play the video but the video is black all the way through. I have added the snippet at the end of the original post. – Mahout Jan 5 '16 at 9:28
- 1[置顶] [总结]FFMPEG视音频编解码零基础学习方法
- 2FFmpeg 基本知识