2017-02-14 34 views
0

У меня есть следующий случай использования:Nginx-RTMP + FFmpeg Moov двигаться MP4, чтобы направиться на лету

1) Алиса публиковать поток в Nginx-RTMP сервер

2) Сервер преобразовать поток в mp4 (по умолчанию FLV, если я правильно понимаю, и нужен кодек преобразования)

3) Боб должен быть в состоянии сделать запрос диапазона к этому mp4 файл, а Алиса еще печатал

Однако, кажется, команда FFmpeg для преобразование flv в mp4 может быть выполнено когда файл mp4 будет полностью сгенерирован, а затем ffmpeg выполнит второй проход и переместит «moov» в его новый файл.

Наш прецедент предназначен для того, чтобы позволить Бобу использовать запрос диапазона для извлечения файла mp4, пока Алиса все еще публикует (т.е. посмотреть видео Алисы как можно скорее) со времени 0 (т. е. со второй Алисы начали публиковать). Таким образом, с moov mp4 в голове, это просто сделать запросы диапазона и реализовать функциональность. Raw RTMP, похоже, не решает нашу проблему, так как мы не можем позволить Бобу смотреть со времени 0 записи Алисы.

Вопрос: 1) Можно ли это сделать, пока flv еще не полностью сгенерирован? 2) Любая другая идея, как использовать nginx-rtmp/ffmpeg для достижения желаемой функциональности?

Благодаря куча

ответ

2

Нет, это не возможно (если вы не построить полностью настраиваемый игрок, в таком случае, почему использование MP4 на всех). Вам нужен потоковый или фрагментированный формат, такой как HLS или CMAF.

+0

Есть ли способ «подавать» байты кадра h.264 или даже некоторый аудиокадр mpeg динамически в декодер браузера HTML5? Это то, что связано с медиаресурсами (MSE)? Позволяет ли настраивать конфигурацию и настройку AVC декодера и аудиоспециализацию (PPS и SPS)? Я не понимаю, почему FLV, содержащий только MPEG-данные, не воспроизводится в браузере (так как теперь это в основном вариант формата mp4). –

+0

@ VC.One Просто попробовал, что flv DOES работают в этом сценарии. т. е. мне просто нужно указать HTTP-сервер на записанный FLV, и все необходимые требования выполнены. –

+0

FLV, безусловно, НЕ является вариацией на MP4. MSE использует CMAF, поэтому я сказал это в своем ответе. (Или вы имеете в виду f4v, потому что это вариант на MP4, но это всего лишь adobe, пытающийся запутать вас. Не позволяйте им) – szatmary