ビデオ編集 SDK を使用して断片化された MP4 HLS ストリーム (M3U8) を編集する方法
Olga Krovyakova著 - 2023 年 10 月 2 日に修正、2019 年 4 月 1 日に作成
新しくリリースされたバージョン 4.2 では、Solveig Multimedia のビデオ編集 SDK はサポートされる形式を拡張しました。
現在のバージョンは通常、オンラインベースのストリーム形式に重点を置いています。
ビデオ編集 SDK v.4.2 は次の形式をサポートしています。
- 断片化された MP4 HLS ストリーム
- HTTP でホストされる MP4 ファイル
- YouTube オンラインビデオ
この記事では、断片化された MP4 HLS ストリームのサポートのデモを紹介します。
断片化された MP4 HLS ストリームのサポート
ビデオ編集 SDK v.4.2 は、断片化された MP4 HLS ストリームの次の機能をサポートしています。
再生。
断片化された MP4 HLS M3U8 ストリームを簡単に開き、ローカル ファイルと同じように操作できます。ファイル内を移動したり、再生したりできます。ストリームのプレビューに必要な部分のみが PC にダウンロードされます。
断片化された MP4 HLS ストリームをプレビューするには、次のグラフを作成できます。
グラフには、ソース フィルターとして SolveigMM HLS Source が含まれ、ビデオ デコーダー フィルターとして Elecard AVC Video Decoder が含まれています。どちらのフィルターも SDK に同梱されています。
SMM Trim C++ サンプル アプリケーションを使用して、断片化された MP4 HLS ストリームの再生とトリミングのサポートをテストします。
次のビデオは、Video Editing SDK v.4.2 を使用して断片化された MP4 HLS ストリームで何ができるかを示しています。
編集。
ビデオ編集 SDK は、断片化された MP4 HLS ストリームをトリミングできるようになりました。ビデオ編集エンジンが担当する主要なコンポーネントです。必要なことは、ビデオ編集エンジンを構成し、現在のタスクを説明する XTL を指定して、それを実行して完了を待つことです。
ビデオ編集エンジンは COM コンポーネントであり、 ITrimmerObjControl を使用し、次のように作成します。
hr = ::CoCreateInstance( CLSID_TrimmerObjControl, NULL, CLSCTX_INPROC, IID_ITrimmerObjControl, (void**)&m_pITrimmerObjControl ); |
編集エンジンを設定するには、 IModuleConfig インターフェース:
hr = m_pITrimmerObjControl->QueryInterface(IID_IModuleConfig, (void **)&m_pModuleCfgEditObj); |
取得したインターフェイスを使用して、トリミング タスクを含む XTL 文字列を設定し、オプションで操作の進行状況を追跡するコールバックを指定する必要があります。
バリアント var1 = {0}、var2 = {0}; var1.vt = VT_BSTR; var1.bstrVal = ...; //XTL形式のタスク文字列 hr = m_pModuleCfgEditObj->SetValue( &SMAT_XTLString, &var1 ); var2.vt = VT_BYREF|VT_UI1; var2.pbVal = (BYTE*) &m_xCTrimmerObjControlCB; //コールバッククラスへのポインタ hr = m_pModuleCfgEditObj->SetValue( &SMAT_Callback, &var2 ); VARIANT var_res = {0}; hr = m_pModuleCfgEditObj->CommitChanges(&var_res); |
トリミングプロセスを開始するには、 ITrimmerObjControl::Start() 方法:
hr = m_pITrimmerObjControl->Start(); |
また、トリミング プロセス中に、編集エンジンに進行状況の値を要求できます。
バリアント変数 = {0}; hr = m_pModuleCfgEditObj->GetValue( &SMAT_Progress, &var ); |
処理が完了すると、編集エンジンは ITrimmerObjControlCB::OnStop() コールバックから。
以下に、トリミング タスクを含む XTL スティングの例を示します。
<タイムライン バージョン="2"> |
この XTL のソース ファイルは、断片化された MP4 HLS ファイルであり、 http://smarteditingonline.solveigmm.com 。 2 つの間隔 (「クリップ」タグで表される) がソース ファイルから出力ファイルに保存されます。
- 160413589 ~ 229542097 単位 (または 16.041 ~ 22.954 秒) および
- 469719350 ~ 572525849 単位 (または 46.971 ~ 57.252 秒)
ソース ファイルに複数のストリームが含まれている場合 (たとえば、異なるビットレート値の場合)、ソース構造が再作成されます。
テスト ファイル http://smarteditingonline.solveigmm.com/files/test_multibitrate.m3u8 には、異なるビットレート値を持つ 2 つの異なるストリームが含まれています (下の図を参照)。
トリミング後、出力フォルダー (C:\hls) には、両方のストリームを含む 2 つのサブフォルダーと、ストリーム構成の説明を含む M3U8 プレイリスト ファイル (output.m3u8) が含まれます。次の図は、トリミングされた HLS の構造を示しています。
出力される M3U8 ファイルの構造は次のとおりです。
#EXTM3U #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1007161,BANDWIDTH=1275068,VIDEO-RANGE=SDR,CODECS="mp4a.40.2, avc1.42c01f",RESOLUTION=1280x720,FRAME-RATE=24.000,クローズドキャプション=なし 500K/prog_index.m3u8 #EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1564155,BANDWIDTH=2042932,VIDEO-RANGE=SDR,CODECS="mp4a.40.2, avc1.42c01f",RESOLUTION=1280x720,FRAME-RATE=24.000,クローズドキャプション=なし 1000K/prog_index.m3u8 |
トリミングされたファイルは、次のリンクから見つけることができます。
http://smarteditingonline.solveigmm.com/sdkdemo/hls/output.m3u8
ビデオ編集エンジンを構成して実行してトリミング操作を実行する方法の詳細については、SMM Trim C++ サンプル アプリケーションのソース コードを参照してください。
よくある質問
断片化された MP4 HLS ストリーム (M3U8) とは何ですか?
では、なぜ MP4 ファイルを断片化する必要があるのでしょうか? HEVC/H.265 または AVC/H.264 を使用する場合は、Apple の HLS オーサリング仕様にあるビデオ エンコード標準に従って使用する必要があります。断片化された MP4 ファイルは、HLS の代替となる MPEG-DASH とも互換性があるため、同じファイルを利用できます。唯一の違いはマニフェスト ファイル (プレイリスト) です。これにより、エンコードとストレージの要件が減り、出費が節約されます。
断片化された MP4 HLS ストリームを従来のビデオ編集ソフトウェアで編集できますか?
要約すると、従来のビデオ編集ソフトウェアで断片化された MP4 HLS ストリームを編集するには、通常、編集前にセグメントを完全なビデオ ファイルに変換する必要があります。このプロセスにより互換性が簡素化されますが、特定の HLS 固有の機能が失われる可能性があります。
断片化された HLS MP4 ストリームに対して、トリミング以外の編集機能は利用できますか?
- 再生。断片化された MP4 HLS M3U8 ストリームは、ローカル ファイルと同じくらい簡単にアクセスして操作できます。ファイルは再生および閲覧できます。コンピュータは、プレビューの再生に必要なストリームのセクションのみをダウンロードします。
- 編集中。断片化された MP4 HLS ストリームは、ビデオ編集ソフトウェア開発キットを使用して編集できます。システムの中核となるのはビデオ編集エンジンです。ビデオ編集エンジンをセットアップし、現在のタスクを説明する XTL を提供した後、プログラムを開始して終了するのを待ちます。
トリミング用にビデオ編集エンジンをセットアップして実行する方法については、SMM Trim C++ サンプル アプリケーションのソース コードを参照してください。
SDK ではどのようなプラットフォームがサポートされていますか?
断片化された MP4 HLS ストリーム内のキャプションまたは字幕を処理するための特定のガイドラインはありますか?
断片化された MP4 HLS ストリームに広告を挿入したり収益化することはできますか?
Olga Krovyakova は、2010 年から Solveig Multimedia のテクニカル サポート マネージャーを務めています。
彼女は、ビデオ スプリッター、HyperCam、WMP トリマー プラグイン、AVI Trimmer+、TriMP4 などの会社製品に関する多くのテキストおよびビデオ ガイドラインの著者です。
彼女は毎日プログラムを使って作業しているため、プログラムがどのように機能するかをよく知っています。 ご質問がある場合は、 support@solveigmm.com経由で Olga までお問い合わせください。彼女は喜んでお手伝いします!