2016-08-18 23 views
-1

ストーリー短編:HLSは通常のMP4ファイルを1つずつ再生することができないのはなぜですか?メディアファイルを.tsセグメントに分割する必要があるのはなぜですか?HLS MP4独立したセグメント

詳細:

私たちは、ミニMP4セグメント(ないTS)、テスト用各1約30秒にセグメント化されたMP4ファイルをしました。どんなHLSプレーヤーでも再生されず、すべてのセグメントファイルをロードするだけで何も起こりません。

例MP4セグメント情報:

Format      : MPEG-4 
Format profile    : Base Media 
Codec ID     : isom 
File size     : 1.44 MiB 
Duration     : 32s 950ms 
Overall bit rate   : 366 Kbps 
Writing application   : Lavf56.25.101 

Video 
ID       : 1 
Format      : AVC 
Format/Info     : Advanced Video Codec 
Format profile    : [email protected] 
Format settings, CABAC  : Yes 
Format settings, ReFrames : 6 frames 
Codec ID     : avc1 
Codec ID/Info    : Advanced Video Coding 
Duration     : 32s 950ms 
Bit rate     : 230 Kbps 
Width      : 426 pixels 
Height      : 240 pixels 
Display aspect ratio  : 16:9 
Original display aspect rat : 16:9 
Frame rate mode    : Constant 
Frame rate     : 23.976 fps 
Color space     : YUV 
Chroma subsampling   : 4:2:0 
Bit depth     : 8 bits 
Scan type     : Progressive 
Bits/(Pixel*Frame)   : 0.094 
Stream size     : 925 KiB (63%) 
Writing library    : x264 core 142 r2495 6a301b6 

Audio 
ID       : 2 
Format      : AAC 
Format/Info     : Advanced Audio Codec 
Format profile    : LC 
Codec ID     : 40 
Duration     : 32s 896ms 
Bit rate mode    : Constant 
Bit rate     : 129 Kbps 
Channel(s)     : 2 channels 
Channel(s)_Original   : 6 channels 
Channel positions   : Front: L C R, Side: L R, LFE 
Sampling rate    : 48.0 KHz 
Compression mode   : Lossy 
Stream size     : 517 KiB (35%) 

マスターM3U8:

#EXTM3U 
#EXT-X-VERSION:7 
#EXT-X-INDEPENDENT-SEGMENTS 

#EXT-X-STREAM-INF:RESOLUTION=426x240,BANDWIDTH=370000,CODECS="avc1.640015,mp4a.40.2" 
240p.m3u8 

#EXT-X-STREAM-INF:RESOLUTION=640x360,BANDWIDTH=580000,CODECS="avc1.640015,mp4a.40.2" 
360p.m3u8 

#EXT-X-STREAM-INF:RESOLUTION=896x504,BANDWIDTH=900000,CODECS="avc1.640015,mp4a.40.2" 
480p.m3u8 

#EXT-X-STREAM-INF:RESOLUTION=1280x720,BANDWIDTH=1500000,CODECS="avc1.640015,mp4a.40.2" 
720p.m3u8 

240p.m3u8

#EXTM3U 
#EXT-X-VERSION:7 
#EXT-X-MEDIA-SEQUENCE:0 
#EXT-X-PLAYLIST-TYPE:VOD 
#EXT-X-TARGETDURATION:34 

#EXTINF:33.033033, 
240p000.mp4 
#EXTINF:33.533534, 
240p001.mp4 
#EXTINF:24.941608, 
240p002.mp4 
#EXTINF:28.611945, 
240p003.mp4 
#EXT-X-ENDLIST 

はHLS.jsで試験した場合、このエラーを与える:

Parsing Error:no demux matching with content found,cannot recover, last media error recovery failed ...

Bitmovinプレーヤー:すべてのバリアントのすべてのセグメントをロードし、決してそれらのいずれかを果たしています。ただ停止する。

Chromeでテスト済み& Firefox Windows、Safari、Mac、Android、およびiPadブラウザ。それらのいずれにも決して働かない。私たちは何か間違っているのですか?

+0

なぜ質問は意見に基づいています。 Appleは、フォーマットのためにtsと(ios10で断片化したmp4を選んだ)あなたは彼らがなぜそれを選んだのか尋ねる必要があります。ここに誰も答えられることはできません。だから私はあなたの答えは、 "それはサポートされていないので"だと思います – szatmary

+0

@szatmaryそれは意見に基づいていません。私はそれが可能かどうか尋ねているだけです。各ビデオファイル(ソースMP4 + TSセグメント)の二重スペースを避けるための方法や解決策はありますか? – Mido

+0

あなたが尋ねた質問は、「なぜHLSは通常のMP4ファイルを1つずつ再生できないのですか?"それは意見に基づいています。" HLSは通常のMP4ファイルを再生できますか?それは意見に基づくものではありません。答えは「いいえ」ですが、iOS10からは断片化したmp4ファイルが再生されます – szatmary

答えて

0

Why HLS can't just play normal MP4 files together one after one? Why need to segment media file into .ts segments?

MP4ファイルには、本当に欲しくないまたは必要としないコンテナがあります。各セグメントには、理論上、独自のフォーマット、フレームレート、サンプルレートなどのオーディオトラックとビデオトラックが含まれている場合があります。そのすべてを必要とせず、ビデオセグメントをきれいにまとめる必要があります。したがって、まずセグメントをきれいにエンコードする必要があります。

+0

だから、各ビデオのスペース(ソースMP4 + TSセグメント)MP4ファイルを解析し、要求されたフラグメントをリエンコードせずにリアルタイムで応答する方法はありますか? – Mido

+0

#EXT-X-BYTERANGEを試しましたが、機能しませんでしたまた、メディアフォーマットの制限がありますか? – Mido

+0

FFmpegを使用して、ファイルを再多重化(トランスコードしない)します。これはオーバーヘッドがほとんどなく、実際のメディアデータはまったく変更しません。 – Brad

0

トランスポートストリームセグメントは自己初期化中ですが、これは通常/ fMP4セグメントの場合にはあまりありません。したがって、デコーダを初期化するために必要な初期化セグメントをマニフェストファイルに追加する必要があります。これは#EXT-X-MAPを使用して行うことができます:URIタグthis blog postの画像で、以下の例のように:

#EXTM3U 
#EXT-X-TARGETDURATION:4 
#EXT-X-VERSION:7 
#EXT-X-MEDIA-SEQUENCE:1 
#EXT-X-PLAYLIST-TYPE:VOD 
#EXT-X-INDEPENDENT-SEGMENTS 
#EXT-X-MAP:URI="init.mp4" 

#EXTINF:4.0 
segment_0.m4s 
#EXTINF:4.0 
segment_1.m4s 
... 
#EXT-X-ENDLIST 

私はHLS.jsについてはよく分からないが、これはで動作するはずです少なくともBitmovin Playerのために。そうでない場合は、Bitmovinのサポートを使用することをお勧めします。

アップルはtest page with fMP4 HLSを提供しています(ブラウザでSafariなどのネイティブHLSサポートが必要です)、Bitmovinはdemo page with fMP4 HLSです。

+0

fmp4のHLSは実際にはかなり有用で、すでにiOS10、macOS、tvOSで動作しています。ここでは、fmp4 HLSコンテンツと再生を作成するためのエンドツーエンドのチュートリアルもあります:https://bitmovin.com/halve-encoding-packaging-storage-costs-hls-断片化されたmp4 / –

関連する問題