Лучший способ создать поток FLV из скриншотов - PullRequest
1 голос
/ 21 января 2010

Я хочу создать поток FLV, сгенерированный из изображений, взятых из моего приложения DirectX, чтобы в конечном итоге попасть на веб-страницу.

Мой текущий план - (были) отправлять скриншоты в формате JPG: s из приложения dx клиенту, работающему в Linux. Этот клиент преобразует JPG: s в поток MJPEG. И ffmpeg преобразует поток MJPEG в FLV - в браузере Flash Player попадает в него.

Что-то вроде;

  1. Запустите приложение dx на машине с Windows, оно прослушивает соединение, чтобы отправить скриншот JPG: s на
  2. на машине linux; ./jpg_to_mjpeg_client | ffmpeg -f mjpeg -i - output.flv

Я думал, что план хорош, но сейчас я застрял. ffmpeg, похоже, неправильно обрабатывает поток MJPEG, исходящий от клиента. Я использовал некоторый код, найденный в сети, для создания потока MJPEG из JPG: s, и я понимаю, что нет реальной спецификации для формата MJPEG, поэтому, возможно, они не используют тот же формат MJPEG или что-то в этом роде.

Прямо сейчас я отправляю [размер буфера JPG], [буфер JPG] для каждого кадра из приложения dx. Полагаю, я мог бы как-то там тоже закодировать некоторый поток, но, с другой стороны, я не хочу тратить слишком много ЦП на компьютер для рендеринга.

Как бы вы это сделали? Любые советы высоко ценятся! Библиотеки / API, которые нужно использовать, другие решения ... У меня совсем нет опыта кодирования видео, но я хорошо знаю свои способы "общего программирования".

C или C ++ предпочтительнее, но Java или Python тоже могут быть в порядке. Я хочу это довольно быстро, хотя - он должен быть создан в реальном времени, один кадр из приложения dx должен появиться в браузере как можно скорее: -)

О, и в будущем план должен быть интерактивным, чтобы я мог общаться с DX-приложением и управлять им из веб-приложения в браузере. Может быть, будет полезно добавить и эту информацию. Вроде как веб-видеомагнитофон, и фильм воспроизводится в режиме реального времени из приложения DX.

Спасибо

1 Ответ

0 голосов
/ 20 апреля 2011

Используйте gstreamer в Linux. Вы можете соединить практически любую комбинацию входов и выходов, используя любые кодеки, которые вам нравятся. Учиться немного хлопотно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...