О нас Продукты Поддержка ЧаВо Блог

Как редактировать фрагментированные потоки MP4 HLS (M3U8) с помощью SDK для редактирования видео

image

 

   Автор: Ольга Кровякова - изменена 2 октября 2023 г., создана 1 апреля 2019 г.

В недавно выпущенной версии 4.2 SDK для редактирования видео Solveig Multimedia расширяет поддерживаемые форматы.
Текущая версия, как правило, ориентирована на форматы онлайн-потоков.

Video Editing SDK v.4.2 поддерживает следующие форматы:

  • Фрагментированные потоки MP4 HLS
  • Файлы MP4, размещенные по протоколу HTTP
  • Интернет-видео на YouTube

В этой статье вы найдете демонстрацию поддержки фрагментированных потоков MP4 HLS.

 

ПОПРОБУЙТЕ SDK для редактирования видео БЕСПЛАТНО

 

Поддержка фрагментированных потоков MP4 HLS

SDK для редактирования видео версии 4.2 поддерживает следующие функции для фрагментированных потоков MP4 HLS:

Воспроизведение.

Вы можете легко открыть фрагментированный поток MP4 HLS M3U8 и работать с ним так же, как с локальными файлами. Вы можете перемещаться по файлу, а также воспроизводить его. На ваш компьютер будут загружены только части, необходимые для предварительного просмотра потока.

Чтобы просмотреть фрагментированный поток MP4 HLS, вы можете построить следующий график:

Graph to preview the fragmented MP4 HLS stream

График содержит источник SolveigMM HLS в качестве фильтра источника и видеодекодер Elecard AVC в качестве фильтра видеодекодера. Оба фильтра поставляются вместе с SDK.

Используйте пример приложения SMM Trim C++, чтобы проверить поддержку воспроизведения и обрезки фрагментированных потоков MP4 HLS.
В следующем видео показано, что можно делать с фрагментированными потоками MP4 HLS с помощью Video Editing SDK v.4.2:

button

Редактирование.

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 );

ВАРИАНТ var_res = {0};
hr = m_pModuleCfgEditObj->CommitChanges(&var_res);

Вы начинаете процесс обрезки, вызывая метод ITrimmerObjControl::Start() :

hr = m_pITrimmerObjControl->Start();

А во время процесса обрезки вы можете запросить у механизма редактирования значение прогресса:

ВАРИАНТ var = {0};
hr = m_pModuleCfgEditObj->GetValue( &SMAT_Progress, &var );

Когда обработка завершена, механизм редактирования вызывает ITrimmerObjControlCB::OnStop() из обратного вызова.

Ниже вы можете увидеть пример XTL-задания, который содержит задачу обрезки:

<версия графика = "2">
 <лента новостей>
  <групповой вывод = "C:hlsoutput.m3u8">
   <трек видео="1" аудио="1" текст="1" flags="">
    <clip src="http://smarteditingonline.solveigmm.com/files/test_multibitrate.m3u8"
                    start="160413589" stop="229542097" timeFormat="100ns_units">
    <clip src="http://smarteditingonline.solveigmm.com/files/test_multibitrate.m3u8"
                    start="469719350" stop="572525849" timeFormat="100ns_units">
   </отслеживать>
  </группа>
 </лента новостей>
</сроки>

Исходным файлом в этом XTL является фрагментированный файл MP4 HLS, размещенный на http://smarteditingonline.solveigmm.com. Два интервала (представленные тегами «clip») будут сохранены из исходного файла в выходной файл:

  • 160413589 – 229542097 ЕДИНИЦ (или 16,041 – 22,954 секунды) и
  • 469719350 – 572525849 ЕДИНИЦ (или 46,971 – 57,252 сек)

Если исходный файл содержит несколько потоков (например, для разных значений битрейта), исходная структура будет воссоздана.
Тестовый файл http://smarteditingonline.solveigmm.com/files/test_multibitrate.m3u8 содержит 2 разных потока с разными значениями битрейта (см. картинку ниже).

image

После обрезки выходная папка (C:hls) будет содержать 2 подпапки с обоими потоками и файл списка воспроизведения M3U8 (output.m3u8) с описанием конфигураций потоков. На следующем рисунке показана структура обрезанного HLS:

image

Структура выходного файла 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,CLOSED-CAPTIONS =НЕТ
500К/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,CLOSED-CAPTIONS =НЕТ
1000К/prog_index.m3u8

Обрезанный файл можно найти по следующей ссылке:
http://smarteditingonline.solveigmm.com/sdkdemo/hls/output.m3u8

Подробное описание настройки и запуска механизма редактирования видео для выполнения операции обрезки см. в исходных кодах примера приложения SMM Trim C++.

 

ПОПРОБУЙТЕ SDK для редактирования видео БЕСПЛАТНО

 

Часто задаваемые вопросы

 

Что такое фрагментированный поток MP4 HLS (M3U8)?

Фрагментированный поток MP4 HLS — это популярный формат потокового видео, который использует фрагментированные файлы MP4 и список воспроизведения M3U8 для доставки видеоконтента через Интернет. Разделяя видео на более мелкие сегменты и предоставляя возможности адаптивной потоковой передачи, HLS обеспечивает плавное воспроизведение и совместимость на широком спектре устройств и платформ.

Итак, почему файл MP4 должен быть фрагментирован? Если вы хотите использовать HEVC/H.265 или AVC/H.264, вы должны использовать его в соответствии со стандартами кодирования видео Apple, указанными в их авторской спецификации HLS. Фрагментированные файлы MP4 также совместимы с MPEG-DASH, альтернативой HLS, поэтому вы можете использовать те же файлы; единственная разница — это файл манифеста (список воспроизведения). Это приводит к меньшим требованиям к кодированию и хранению, что должно сократить расходы.

 

Могу ли я редактировать фрагментированные потоки MP4 HLS с помощью традиционного программного обеспечения для редактирования видео?

Редактирование фрагментированных потоков MP4 HLS с помощью традиционного программного обеспечения для редактирования видео может оказаться сложной задачей из-за сегментированной природы формата. Традиционное программное обеспечение предназначено для работы с полными видеофайлами, а не с отдельными сегментами. Для редактирования потоков HLS рекомендуется преобразовать их в один видеофайл с помощью специализированных инструментов перед импортом в традиционное программное обеспечение для редактирования. Этот этап преобразования может привести к потере функций адаптивной потоковой передачи и метаданных, связанных с исходным потоком.

Таким образом, редактирование фрагментированных потоков MP4 HLS с помощью традиционного программного обеспечения для редактирования видео обычно включает преобразование сегментов в полный видеофайл перед редактированием. Этот процесс упрощает совместимость, но может привести к потере некоторых функций, специфичных для HLS.

 

Доступны ли другие функции редактирования для фрагментированных потоков HLS MP4, помимо обрезки?

Следующие возможности доступны для фрагментированных потоков MP4 HLS в Video Editing SDK v.4.2:
  • Воспроизведение. Доступ к фрагментированному потоку MP4 HLS M3U8 так же прост, как и к локальным файлам. Файл можно воспроизводить и просматривать. Ваш компьютер загрузит только те разделы потока, которые необходимы для предварительного просмотра.
  • Редактирование. Фрагментированные потоки MP4 HLS можно редактировать с помощью пакета разработки программного обеспечения для редактирования видео. Ядром системы является механизм редактирования видео. После настройки механизма редактирования видео и предоставления XTL, описывающего текущую задачу, вы можете запустить программу и дождаться ее завершения.

Информацию о том, как настроить и запустить механизм редактирования видео для обрезки, см. в исходных кодах примера приложения SMM Trim C++.

 

Какие платформы поддерживаются SDK?

SDK для редактирования видео доступен на платформах Windows, Linux, macOS, Android.

 

Существуют ли какие-либо конкретные рекомендации по обработке титров или субтитров во фрагментированном потоке MP4 HLS?

При обработке титров или субтитров во фрагментированном потоке MP4 HLS важно использовать поддерживаемый формат титров (например, WebVTT или TTML), обеспечить согласованность с сегментами видео, включить отдельный список воспроизведения мультимедиа с субтитрами, рассмотреть возможность синхронизации между различными потоками и тщательно тест на отображение и доступность.

 

Могу ли я монетизировать или вставлять рекламу во фрагментированный поток MP4 HLS?

Да, можно монетизировать или вставлять рекламу во фрагментированный поток MP4 HLS. HLS поддерживает различные методы вставки и монетизации рекламы. Самый распространенный подход — использование рекламных маркеров в потоке, указывающих, где следует вставлять рекламу. Вставка рекламы может выполняться как на стороне сервера, так и на стороне клиента.

 

 Об авторе

imageОльга Кровякова - менеджер технической поддержки в комании Solveig Multimedia с 2010 года.

Она является автором многих текстовых и видео инструкций по программным продуктам компании: Video Splitter, HyperCam, WMP Trimmer Plugin, AVI Trimmer+ и TriMP4.

Посколько она работает с программами каждый день, то хорошо знает как они работают. Свяжитесь с Ольгой по почте support@solveigmm.com, если у вас возникнут вопросы и она с радостью вам поможет!