Потокове передавання mp4 за допомогою ffmpeg


16

Мені потрібно створити канал, який має два потоки - webm та mp4 - щоб він міг бути сумісним для всіх відеоплеєрів HTML5. Веб-потік працює чудово. Однак, намагаючись отримати доступ до потоку mp4, сервер видає таку помилку:

Sat Mar  9 23:21:54 2013 muxer does not support non seekable output

Ось частина файлу ffserver.conf, яка стосується потоку mp4:

<Stream channel1.mp4>       # Output stream URL definition
   Feed feed1.ffm              # Feed from which to receive video
   Format mp4

   # Audio settings
   AudioCodec libmp3lame
   AudioBitRate 64             # Audio bitrate

   # Video settings
   VideoCodec libx264
   VideoSize 560x320           # Video resolution
   VideoFrameRate 25           # Video FPS
   AVOptionVideo flags +global_header  # Parameters passed to encoder
                                       # (same as ffmpeg command-line parameters)
   AVOptionVideo cpu-used 0
   AVOptionVideo qmin 10
   AVOptionVideo qmax 42
   AVOptionVideo quality good
   AVOptionAudio flags +global_header
   PreRoll 15
   StartSendOnKey
   VideoBitRate 400            # Video bitrate
</Stream>

З того, що я можу знайти, деякі люди кажуть, що mp4 просто не може бути потоково передано. Я не маю прихильності до mp4, за винятком того факту, що я мав враження, що вам потрібно mp4 для передачі відео на iPhone за допомогою відеоплеєра HTML5. Якщо це не так, дайте мені знати, і я з радістю перейду до чогось, що приємніше грає при ffmpeg потоці.


3
Вам не потрібно передавати MP4. Для відео HTML5 H.264 / MP4 повинно бути достатньо для кодування відеофайлу -movflags faststartабо оброблення ним qt-faststart, а потім вказати на файл MP4 у <video>тезі. Тоді ваш сервер потребує потокового модуля H.264, щоб клієнт міг шукати. Або у вас є прямий вклад?
slhck

Мій клієнт вимагає, щоб це було потоково - він хоче відключити пошук клієнта повністю. Він передається з файлу (файл на сервері у форматі webm, якщо це має значення). Я не можу просто приховати елементи керування, оскільки iPhones змушує показувати елементи керування.
Fibericon

@slhck: Я передаю прямий вхід веб-камери з mp4, але не можу цього зробити. Він працює, коли я використовую flv. Чи можливо використовувати mp4 для прямої трансляції?
Джон Кваліс

@JohnQualis Не впевнений, чи це можливо з ffserver. Але контейнер не повинен мати значення - кодеки однакові з FLV та MP4 (H.264 і AAC).
slhck

@sklhck: я змусив його працювати з flv за допомогою ffserver, але не з mp4. Більшість веб-браузерів підтримують mp4. Мені потрібно щось, що працює з iphone, android та та всіма відомими веб-браузерами, і це його h264 :) І я трансляцію веб-камери в прямому ефірі
Джон Qualis

Відповіді:


6

У статті HTML 5 та відео, сприятливому для iPad, із вашого власного веб-сайту , востаннє оновленого 12 листопада 2014 року, є така інформація:

зображення

У статті рекомендується використовувати MP4 як хороше рішення з досить недавньою версією ffmpeg, використовуючи кодування H.264 за допомогою AAC.

Я пропоную прочитати статтю з урахуванням деталей: вона містить приклад HTML-файлу, який буде працювати у всіх основних браузерах, а також приклад команди FFmpeg, яка використовується для перетворення відео в .mp4-файли, щоб вони витікали правильно.


це про "живу" трансляцію?
Маркус Сібенейхер

@MarkusSiebeneicher: Так, здебільшого.
harrymc

У мене все ще виникають проблеми з "поточною" трансляцією mp4 з ffmpeg, як це здається не "піддається пошуку". Я передаю вихід ffmpeg безпосередньо до браузера, а webm працює з коробки. Використовуючи mp4 формат, він каже, що його не можна побачити ... Тож мені дуже цікаво, що робити, щоб mp4 "вживати" в потоковому режимі, де жодне відео не зберігається як файл безпосередньо (що зробить його пошуковим).
Маркус Сібенейхер

@MarkusSiebeneicher: Я пропоную задати це питання в новій публікації з деталями.
harrymc

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.