Недавно я нашел похожий проект для node.js для выполнения транскодирования m3u8 (https://github.com/andrewschaaf/media-server), но пока не слышал ни о каком, кроме Wowza, делающем его вне модуля Origin для Apache. Поскольку полезные нагрузки почти идентичны, вам лучше В поисках хорошего решения для сегментирования mp4 (в большом количестве), чем в сегментации f4m. Проблема в том, что атомы moov, особенно на больших видео mp4, сложны в управлении и помещаются в их правильное начальное (в начале файла) местоположение. Даже при использовании оптимального ffmpeg настройками и 'qtfaststart' вы получите заметно более медленный поиск, неэффективное использование полосы пропускания (обычно жадное) и несколько незначительных головных болей, связанных с очисткой / временем, которое вы не получаете при воспроизведении flv / f4v.
В моем плеере я имею или намереваюсь переключаться между HTTP Dynamic Streaming (HDS) и MP4 в зависимости от загрузки и анализа журнала в реальном времени Apache, используя awk / cron вместо лицензирования продукта Adobe Access для защиты потоков ... оба имеют уникальные «onmetadata» обработчики .. но в конце я получаю последовательные хэты времени / байта, практически эквивалентные. Просто MP4 медленнее. Таким образом, mod_origin - это просто маршрутизатор синхронизатора / запроса для клиентов Flash (через http). Я все еще ищу способы ускорить воспроизведение на основе mp4-контейнера. Одно невероятное решение, которое я недавно прочитал, было весьма удивительно http://zehfernando.com/2011/flash-video-frame-time-woes/, когда видеоредактор (парень) и разработчик флэш-памяти придумали свое собственное решение для тайм-кодирования mp4, которое буквально добавило (через скрипт Adobe Premiere) около 50 пикселей к нижняя часть каждого видеокадра с визуальным «двоичным» штампом, таким как штриховой код кадра ... и эти двоичные значения преобразуются в высокоточные значения временного кода. Таким образом, Flash может анализировать видеокадры в том виде, в каком они были нарисованы (в режиме реального времени), и точно определять, где находится проигрыватель и какие байты необходимы для любого вида веб-сервера, поддерживающего сегментирование mp4. Дело в том (и, возможно, я ошибаюсь), Flash, кажется, произвольно выбирает, когда добирается до данных moov, особенно для больших видеофайлов (0,5-1,5 гига). Даже если вы убедитесь, что ваш mp4 запускается через MP4Box (т.е. MP4Box -frag 10000 -inter 0 movie.mp4), я думаю, это была проблема, OSMF и HDS работали довольно хорошо
Теперь, хотя это раздражает, что вам нужен Apache и проприетарный модуль с закрытым исходным кодом, чтобы использовать его imo. Вероятно, это всего лишь вопрос времени, когда появятся реализации с открытым исходным кодом, так как HDS всего 1-2 года, и ему просто нужно немного реверс-инжиниринга, как тот парень Эндрю Чааф с потоковой передачей node.js + mpegts (живой или нет).
В конце концов, я могу просто использовать OSMF исключительно под своим пользовательским интерфейсом, поскольку он, похоже, имеет те же достоинства, что и HDS, если не больше, например, Strobe, если вам нужна больная расширяемая платформа HDS или MP4 с открытым плеером, чтобы взломать ее, чтобы реализовать свой собственный проигрыватель.