Потоковые изображения с кодировкой h.264 - PullRequest
0 голосов
/ 11 февраля 2020

Я извлекаю кадры из камеры и выполняю обработку извлеченного кадра. Как только обработка завершена, я хочу передать эти кадры с кодированием h.264 в другую систему. Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Как правило, вы захотите поместить H.264 в видеоконтейнер, такой как MP4 или AVI.

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

  • битовый массив необработанных пикселей
  • кодированный необработанный пиксель (кодированный egh264)
  • кодированный видеопоток, упакованный в контейнер с аудиопотоками, субтитрами и т. Д. c (например, контейнер mp4)
  • контейнер разбит на «куски» или сегменты для потоковой передачи (на iOS с использованием формата потоковой передачи HLS).

Еще один распространенный подход - камера направляет контент на выделенный потоковый сервер и затем на сервер предоставлять потоки конечным устройствам, используя потоковый протокол, такой как HLS или MPEG DA SH. Пример (на момент написания, и он, кажется, постоянно обновляется), показывающий поток с камеры, использующей RTSP на сервер, а затем HLS или MPEG DA SH с сервера, приведен здесь:

Если ваш вариант использования прост, вы, возможно, не захотите использовать потоковый протокол сегментированной ABR, такой как HLS или MPEG-DA SH, поэтому вы можете просто потоковая передача файла mp4 с обычного HTTP-сервера.

Один из подходов к этому, который позволит вам опираться на примеры других, - это использовать openCV в Python - вы можете увидеть пример в этом вопросе и ответы на него. видеокадры в контейнер AVI или MP4: Запись видео в формате mp4 с использованием python opencv

После создания файла MP4 вы можете поместить его в папку и использовать обычный HTTP-сервер для сделайте его доступным для загрузки или потоковой передачи пользователями.

Обратите внимание, что если вы хотите передавать кадры в потоковом режиме, то есть когда вы создаете их один за другим, это сложнее, так как вы не У mply есть полный файл MP4 для потоковой передачи. Если вы действительно хотите это сделать, то лучше начать с использования существующей реализации - этот пример является примером прямого эфира на основе веб-сокета, и я использую открытый исходный код и Python на основе:

0 голосов
/ 20 февраля 2020

, если вы хотите передавать данные через сокет UDP - используйте протокол RTP для потоковой передачи.

Пожалуйста, go через спецификацию rf c RF C 6184

Media Pieline для обработки данных камеры:

Данные RAW камеры (RGB / YUV / NV12) -> Кодер H.264 -> Пакеты NALU Пакетизация RTP-> Связь через сокет.

Вы можете использовать интерфейс ffmpeg python для достижения этой цели.

...