Повторная передача потока MPEG2 TS PAL с помощью crtmpserver - PullRequest
2 голосов
/ 02 октября 2011

Я хочу создать какую-нибудь потоковую оболочку:

У меня есть старый Dreambox PAL Sat Reciever с сетевым подключением. Этот поток я хочу перекодировать в более низкое разрешение, перезапустить его.

Моя цель состоит в том, чтобы иметь простой веб-сайт, где этот поток встроен через rtmp.

Я думаю, что crtmpserver должен быть подходящим программным обеспечением. На данный момент у меня работает сайт и я могу воспроизводить локальные файлы через jwplayer / crtmpserver.

Я ищу решение для этого:

httpUrl -> ffmpeg -> crtmpserver

Это возможно? Могу ли я перенаправить вывод ffmpeg в полевой канал, и crtmpserver может его получить? Или пойти с UDP?

Любые намеки приветствуются !!! Спасибо!!

1 Ответ

4 голосов
/ 03 октября 2011

Это просто:

  1. Запустить сервер (в режиме консоли для отладки) Вы должны увидеть что-то вроде этого:

    | ТСР | 0.0.0.0 | 9999 | inboundTcpTs | FLVPlayback |

По сути, это tcp-акцептор для потоков mpegts

  1. Используйте ffmpeg для создания потока:

    ffmpeg -i

Пример: * * один тысяча двадцать-одна

ffmpeg -i /tmp/aaa.flv -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f mpegts "tcp://127.0.0.1:9999"
  1. Вернитесь на сервер и посмотрите консоль. Вы должны увидеть что-то вроде этого:

    Поток INTS (6) с именем ts_13_257_256 зарегистрирован в приложении flvplayback из протокола ITS (13)

ts_13_257_256 - имя потока. Теперь вы можете использовать jwplayer или подобный плеер и указать его на этот поток

Если вы хотите использовать UDP, вам нужно остановить сервер и изменить файл конфигурации, чтобы вместо

protocol="inboundTcpTs"

у вас должно быть

protocol="inboundUdpTs"

Можно даже скопировать весь раздел и изменить номер порта, чтобы иметь оба. Кроме того, вы должны изменить ffmpeg, чтобы вместо tcp: //127.0.0.1: 9999 вы могли иметь udp: //127.0.0.1: 9999

Теперь, если вам также нужно имя потока, а не имя ts_13_257_256 (что, кстати, ts_protocolId_AudioPID_VideoPID), вы можете использовать LiveFLV аналогичным образом:

ffmpeg -i /tmp/aaa.flv -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f flv -metadata streamName=myStreamName "tcp://127.0.0.1:6666"

И сервер должен показывать:

Stream INLFLV(1) with name `myStreamName` registered to application `flvplayback` from protocol ILFL(3)

Итак, теперь у вас есть «вычисленное» имя потока, которое называется myStreamName

Последнее замечание. Пожалуйста, задавайте подобные вопросы в списке рассылки crtmpserver. Вы будете лучше услышаны. Вы можете найти ресурсы здесь: http://www.rtmpd.com/resources/ Найдите группу google под

Ура, Андрей

...