問題タブ [shaka]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2594 参照

ffmpeg - ffmpeg ダッシュ セグメント オフセット

「plex」や「emby」などのライブ トランスコーディングをアプリケーションに統合しようとしています。

shaka-player または dash.js にダッシュ コンテンツを提供できますが、「ライブ モード」でのみです。しかし、プレーヤーを介してシークできるようにしたいです。

私はプレックスを見て、これを有効にするために、プレーヤーが完全なシークバーを持つように、持続時間のある独自の mpd ファイルを作成します。

ただし、プレーヤーをシークするときに、たとえば 449 などのセグメント番号を要求します。ffmpeg を停止して offset(-ss <<segment * sgement_length>>)で再起動する必要がありますが、ffmpeg は最初のセグメントでセグメント 0 からトランスコード セッションを再起動するだけです。

私が欲しいのは、シークポイントで開始するが、セグメント番号からのみ出力するようにffmpegに指示することです。

hls と mpegts で遊んでいるとき、特定のセグメントで出力するように ffmpeg に指示できます : オプションを使用します-segment_start_numberが、これはダッシュでは使用できません。プレックスは、オプションを使用してffmpegに基づく独自のトランスコーダーを使用します-skip_to_segment

シークポイントdash.jsの後に「想定される」右セグメントを提供し、shaka-playerがストリームを回復できない場合でも、Webサーバーに手動オフセットを保持することで「ハック」しようとしました.. VLCの他のhabdは、セグメントのエラーに対して(おそらくより寛容に)できます。

ダッシュ (最初のセグメントを含む) でシークした後の想定される右側のセグメントか、セグメントのみか。

ffmpeg は想定されるセグメントとしてダッシュのセグメント化を開始できますか (シークと再開用)

同じ手法が、強制キー フレームとカスタム m3u8 (すべての「予測」セグメントを含む) を使用する hls で機能しますが、適切なセグメント長と適切な帯域幅を計算するのははるかに難しく、ハック的であり、dash は変動に対してより寛容です。

ライブ トランスコーディング ビデオをシークできるようにしたいと思っています。

参考までに、「シーク」を有効にするために提供するカスタム mpd ファイルを次に示します。

そして、これを引き出すためのffmpegコマンドは次のとおりです。

これmedia_seg_nameは、カスタムの seek_point を先頭に追加する場所です。たとえば、セグメント 1233 をシークしたいとします。テンプレートは次のようになります。

セグメントは 1233_1 1233_2 1233_* となり、シーク後に正しいセグメントを提供できます。しかし、プレーヤーは回復せず、引き続き後続のセグメントをダウンロードします。新しい初期セグメントが生成され、シーク後に連続再生するためのヘッダーを何らかの形で見逃していると思いますが、おそらく間違っています。

ご協力いただきありがとうございます

0 投票する
1 に答える
970 参照

ios - AVPlayer が HLS ビデオ ストリームでオーディオを再生しない

shaka packager を使用して、HLS マニフェストと断片化された mp4 セグメントを作成しました。マニフェストは、iOS および Web Safari ブラウザーでネイティブに正常に再生されます。ただし、AVPlayer にフィードすると、オーディオではなくビデオのみが再生されます。

mediastreamvalidator ツールはストリームを検証し、エラーは表示されませんでした。

hls_manifest.m3u8

hls_manifest_a.m3u8

hls_manifest_v.m3u8

私は何が欠けていますか?