11

明らかに、AVFoundation(およびQuicktime X)は、適切にエンコードされ.tsたコンテナーをデマックスして再生できます。これは、.tsコンテナーがHTTPSライブストリーミングの下にあるためです。

.m3u8および関連ファイルを提供するためのローカルWebサービスを設定する以外に、ローカルファイルURIをHTTPURIであるかのように説得および/または受け入れる.tsことができるようにしたいと考えています。ライブストリーミングフープを飛び越えずに一連のファイルをロードして再生するために使用します。AVURLAssetURLAssetWithURL.m3u8AVQueuePlayer.ts

これを実行したい理由は、映画アセットをオンザフライでやや断片的にローカルで生成する必要があるためです。アセット全体が一度に利用可能になることはありませんが、時間が経つにつれて生成されます。明らかに、これは役に立ちますAVQueuePlayerが、さまざまな理由で、私のアセットフラグメントは.tsコンテナにパッケージ化されています。これはすべて、「ローカル」ライブストリーミングに最適のようです。

渡さURLAssetWithURLれた文字列の修飾を行ってから、ライブストリーミングソースを参照していることを通知するプロパティを設定し、フォーム内のトラックを期待するように指示しAVPlayerます。おそらくHTTPを見て、これがライブストリーミングであると判断します。AVQueuePlayer.ts

だから私の質問は、 AVFoundationを「だまして」.m3u8、リモートファイルとまったく同じようにローカルファイルを処理する方法を教えてください。

そして、ボーナスの質問は次のとおりです。アセットがアセットのトラックのステータスを返すように(再生の準備をする)、誰かがファイルAVAssetからを作成できましたか(もしそうならどのように)?.ts

TIA!

4

2 に答える 2

9

この問題は私たちにとっても長い間迷惑でした。ついに、tsのリストをmp4ファイルに変換するツールを作成することにしました。これは、TSDemuxを使用してビデオ/オーディオをデマックスおよび連結し、GPACでmp4ファイルを生成することで構成されています。

それは本当にあなたの質問に答えますが、それはあなたがやりたいことをする方法かもしれません。このツールはGithubにあります。お気軽に試してください:https ://github.com/Keemotion/TS2MP4

于 2014-02-28T16:13:20.967 に答える
0

実際には、基礎となるtsファイルから直接AVURLAssetsを作成し、movまたはmp4ファイルを再生するのと非常によく似た方法でこれらを直接再生できます。

各tsファイルにはいくらかのオーバーヘッドがあるため、最善の策は、ファイルを1つの大きなtsファイル(m3u8の内容に基づく)に単純にキャットし、その大きなファイルを再生することです。

いくつかの落とし穴があります。tsファイルベースのAVAssetsを使用して構築されたAVCompositionsはメモリを大量に消費するため、小さなファイル以外のAVCompositionsは避けてください。参照ムービーでtsファイルベースのAVAssetsを使用することはできません。

于 2017-04-06T01:34:32.300 に答える