Перейти к содержимому


Фотография

Кодеки(Rtsp, Rtmp, Rtmpe, Flv И Другие) :протоколы И Контейнеры Которые Не Может Читать Dune.


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 677

#161 micha86

micha86

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 992 сообщений
  • Gender:Male
  • Interests:Бывший пользователь

Отправлено 13 September 2013 - 03:46

a kak ссылки брал?Через php скрипт?

Только не пинай :rolleyes: я учусь.
Не думал по тойже методике что и с httpd через .sh.
.sh в index.php прописал ,я не знаю php server их по стандарту поддерживает?

#162 andrej456

andrej456

    Опытный комментатор

  • Пользователи
  • PipPipPipPipPip
  • 255 сообщений
  • Gender:Male

Отправлено 13 September 2013 - 03:55

Только не пинай :rolleyes: я учусь.
Не думал по тойже методике что и с httpd через .sh.
.sh в index.php прописал ,я не знаю php server их по стандарту поддерживает?

passthru и т.п.
http://de1.php.net/m...on.passthru.php

#163 micha86

micha86

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 992 сообщений
  • Gender:Male
  • Interests:Бывший пользователь

Отправлено 13 September 2013 - 04:11

passthru и т.п.
http://de1.php.net/m...on.passthru.php

Ок. Это отдача выполнения команды.
Без примера не разберусь.
Пойду наверное парту давить по php.
Как далеко вообще можно разогнаться с этим видом сервера в сторону flv и rtmp,rtsp и т.п?

#164 andrej456

andrej456

    Опытный комментатор

  • Пользователи
  • PipPipPipPipPip
  • 255 сообщений
  • Gender:Male

Отправлено 13 September 2013 - 04:38

Ок. Это отдача выполнения команды.
Без примера не разберусь.
Пойду наверное парту давить по php.
Как далеко вообще можно разогнаться с этим видом сервера в сторону flv и rtmp,rtsp и т.п?

возможностей больше,надо потестить,ну а там посмотрим.

#165 micha86

micha86

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 992 сообщений
  • Gender:Male
  • Interests:Бывший пользователь

Отправлено 13 September 2013 - 13:00

возможностей больше,надо потестить,ну а там посмотрим.

<?php
 header("Content-type: video/mpegts");
 $cmd = "";
foreach ($_GET as $key => $value){
   $cmd .= ' --'.$key.' "'.$value.'"';
}
 $url = '/persistfs/codecpack/bin/rtmpdump --quiet --live --buffer 4000 -o- | /persistfs/codecpack/bin/ffmpeg -i pipe:0 -y -vcodec copy -vbsf h264_mp4toannexb -acodec copy -f mpegts - 2>/dev/null'.$cmd;
 passthru($url);
?>
как туда это интегрировать?
export LD_LIBRARY_PATH=/persistfs/codecpack/lib:$LD_LIBRARY_PATH

#166 andrej456

andrej456

    Опытный комментатор

  • Пользователи
  • PipPipPipPipPip
  • 255 сообщений
  • Gender:Male

Отправлено 16 September 2013 - 00:15

<?php
 header("Content-type: video/mpegts");
 $cmd = "";
foreach ($_GET as $key => $value){
   $cmd .= ' --'.$key.' "'.$value.'"';
}
 $url = '/persistfs/codecpack/bin/rtmpdump --quiet --live --buffer 4000 -o- | /persistfs/codecpack/bin/ffmpeg -i pipe:0 -y -vcodec copy -vbsf h264_mp4toannexb -acodec copy -f mpegts - 2>/dev/null'.$cmd;
 passthru($url);
?>
как туда это интегрировать?
export LD_LIBRARY_PATH=/persistfs/codecpack/lib:$LD_LIBRARY_PATH

getenv
http://www.php.net/m...tion.getenv.php
и
putenv
http://www.php.net/m...tion.putenv.php
пример
$ldlibpath = getenv("LD_LIBRARY_PATH");
$ffmpeglibpath = "/D/lib";
$ffmpeglibpath .= ":$ldlibpath"; 
putenv("LD_LIBRARY_PATH=$ffmpeglibpath");

ну или через system ,exec и т.п
export LD_LIBRARY_PATH=/persistfs/codecpack/lib:$LD_LIBRARY_PATH

#167 micha86

micha86

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 992 сообщений
  • Gender:Male
  • Interests:Бывший пользователь

Отправлено 16 September 2013 - 01:29

опять я. Где я сделал ошибку?
<?php
header("Content-type: video/mpegts");
$ldlibpath = getenv("LD_LIBRARY_PATH");
$ffmpeglibpath = " /persistfs/codecpack /lib";
$ffmpeglibpath .= ":$ldlibpath"; 
putenv("LD_LIBRARY_PATH=$ffmpeglibpath");
$cmd = "";
foreach ($_GET as $key => $value){
   $cmd .= ' --'.$key.' "'.$value.'"';
}
$url = '/persistfs/codecpack/bin/rtmpdump -r'.$cmd '--quiet --live --buffer 4000 -o- | /persistfs/codecpack/bin/ffmpeg -i pipe:0 -y -vcodec copy -vbsf h264_mp4toannexb -acodec copy -f mpegts - 2>/dev/null';
passthru($url);
?>


#168 andrej456

andrej456

    Опытный комментатор

  • Пользователи
  • PipPipPipPipPip
  • 255 сообщений
  • Gender:Male

Отправлено 16 September 2013 - 01:39

опять я. Где я сделал ошибку?

<?php
header("Content-type: video/mpegts");
$ldlibpath = getenv("LD_LIBRARY_PATH");
$ffmpeglibpath = " /persistfs/codecpack /lib";
$ffmpeglibpath .= ":$ldlibpath"; 
putenv("LD_LIBRARY_PATH=$ffmpeglibpath");
$cmd = "";
foreach ($_GET as $key => $value){
   $cmd .= ' --'.$key.' "'.$value.'"';
}
$url = '/persistfs/codecpack/bin/rtmpdump -r'.$cmd '--quiet --live --buffer 4000 -o- | /persistfs/codecpack/bin/ffmpeg -i pipe:0 -y -vcodec copy -vbsf h264_mp4toannexb -acodec copy -f mpegts - 2>/dev/null';
passthru($url);
?>

на первый взгляд здесь
$ffmpeglibpath = " /persistfs/codecpack /lib";
надо
$ffmpeglibpath = " /persistfs/codecpack/lib";

#169 micha86

micha86

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 992 сообщений
  • Gender:Male
  • Interests:Бывший пользователь

Отправлено 16 September 2013 - 01:52

на сервере выдает синтакс ошибку в 11 линии с запятыми.не пойму как запутался с простым кодом и переменной $cmd. :(

#170 andrej456

andrej456

    Опытный комментатор

  • Пользователи
  • PipPipPipPipPip
  • 255 сообщений
  • Gender:Male

Отправлено 16 September 2013 - 01:55

на сервере выдает синтакс ошибку в 11 линии с запятыми.не пойму как запутался с простым кодом и переменной $cmd. :(

$url = '/persistfs/codecpack/bin/rtmpdump -r '.$cmd. ' --quiet --live --buffer 4000 -o- | /persistfs/codecpack/bin/ffmpeg -i pipe:0 -y -vcodec copy -vbsf h264_mp4toannexb -acodec copy -f mpegts - 2>/dev/null';

#171 micha86

micha86

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 992 сообщений
  • Gender:Male
  • Interests:Бывший пользователь

Отправлено 16 September 2013 - 02:19

Ссылку отдает но играть не хочет.
[Mon Sep 16 04:22:30 2013] 127.0.0.1:46223 [200]: /rtmp.php?rtmp://213.186.127.42:1935/live/%20--playpath=rus1.stream%20--swfUrl=http://kaban.tv/uppod.swf%20live=1%20--pageUrl=http://kaban.tv
Идеи? :)
Так учусь и ещё раз учусь. :)
Как лучше будет сделать переменную $cmd чтобы она подходила и к flv и к rtmp ссылкам и заменить "%20" на " " ?
<?php
header("Content-type: video/mpegts");
$ldlibpath = getenv("LD_LIBRARY_PATH");
$ffmpeglibpath = "/persistfs/codecpack/lib";
$ffmpeglibpath .= ":$ldlibpath"; 
putenv("LD_LIBRARY_PATH=$ffmpeglibpath");
$cmd = "";
foreach ($_GET as $key => $value){
   $cmd .= ' --'.$key.' "'.$value.'"';
   $cmd = str_replace("%20", "+", $cmd);
}
$url = '/persistfs/codecpack/bin/rtmpdump -r '.$cmd. ' --live --buffer 4000 -o- | /persistfs/codecpack/bin/ffmpeg -i pipe:0 -y -vcodec copy -vbsf h264_mp4toannexb -acodec copy -f mpegts - 2>/dev/null';
passthru($url);
?>
как сделать подмену?

#172 andy555

andy555

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 671 сообщений
  • Gender:Male
  • Location:интернет

Отправлено 16 September 2013 - 21:56

<?php
header("Content-type: video/mpegts");
$ldlibpath = getenv("LD_LIBRARY_PATH");
$ffmpeglibpath = "/persistfs/codecpack/lib";
$ffmpeglibpath .= ":$ldlibpath"; 
putenv("LD_LIBRARY_PATH=$ffmpeglibpath");
$cmd = "";
foreach ($_GET as $key => $value){
   $cmd .= ' --'.$key.' "'.$value.'"';
}
$cmd = rawurlencode($cmd);
$url = 'сдесь параметры для flv';
If (preg_match("/rtmp/i", $cmd)) 
$url = '/persistfs/codecpack/bin/rtmpdump -r '.$cmd. ' --live --buffer 4000 -o- | /persistfs/codecpack/bin/ffmpeg -i pipe:0 -y -vcodec copy -vbsf h264_mp4toannexb -acodec copy -f mpegts - 2>/dev/null';

passthru($url);
?>
Если я правильно понял тебя. ...

Или когда отдаёт урль он его кодирует, и меняет пробелы на % 20

на глав.тв делает так:

<?php
header("Content-type: video/x-flv");
$cmd = "";
foreach ($_GET as $key => $value){
   $cmd .= ' --'.$key.' "'.$value.'"';
}
$url = '/tmp/app/www/modules/GlavTV/tools/rtmpdump --quiet --live --flv -'.$cmd;
passthru($url);
?>

и плейлист к нему
#EXTINF:-1,MTV HD
http://127.0.0.1:8002/modules/GlavTV/rtmp.php?rtmp=rtmp%3A%2F%2Fs7.webport.tv%2Flive%2Fz010001.stream&swfUrl=
http%3A%2F%2Fwww.tvsector.com%2Fmediaplayer%2Fplayer.swf&pageUrl=http%3A%2F%2Fwww.tvsector.com%2F

то есть ссылка кодируется перед этим
$cmd = rawurlencode($cmd);

см. ввыше в коде, я изменил
ну и ссылка должна быть рабочей

dune 101 + системная флешка
 


#173 micha86

micha86

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 992 сообщений
  • Gender:Male
  • Interests:Бывший пользователь

Отправлено 17 September 2013 - 01:34

Спасибо. Попробовал так тоже не меняет. Уже такое ощущение что сылка меняется в bash(терминале). Тогда надо как то это интегрировать `echo "$QUERY_STRING" | sed "s/%20/ /g"` sed это едитор для подмены в bash

#174 andrej456

andrej456

    Опытный комментатор

  • Пользователи
  • PipPipPipPipPip
  • 255 сообщений
  • Gender:Male

Отправлено 17 September 2013 - 02:47

Спасибо.
Попробовал так тоже не меняет. Уже такое ощущение что сылка меняется в bash(терминале).
Тогда надо как то это интегрировать
`echo "$QUERY_STRING" | sed "s/%20/ /g"`
sed это едитор для подмены в bash

urldecode
http://www.php.net/m...n.urldecode.php


str_replace на крайний случай
http://www.php.net/m...str-replace.php


P.S. Посмотри в личку надо одну вещь проверить.

#175 andrej456

andrej456

    Опытный комментатор

  • Пользователи
  • PipPipPipPipPip
  • 255 сообщений
  • Gender:Male

Отправлено 17 September 2013 - 19:27

с rtsp дело продвинулось.на дюне заработало. но пока надо тестить. т.к. нагрузка на процессор от 12% до 40% в зависимости от стрима(со звуком проблемы,в скрипте ffmpeg кодирует в mp2 или ac3, поэтому и средняя нагрузка на процессор). включил на дюне.уже минут 20 стрим идет,проблем не было. принцип такой через ffmpeg rtsp->flv->mpegts(звук в mp2 или ac3).

#176 andy555

andy555

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 671 сообщений
  • Gender:Male
  • Location:интернет

Отправлено 17 September 2013 - 19:42

с rtsp дело продвинулось.на дюне заработало.
но пока надо тестить.


т.к. нагрузка на процессор от 12% до 40% в зависимости от стрима(со звуком проблемы,в скрипте ffmpeg кодирует в mp2 или ac3, поэтому и средняя нагрузка на процессор).
включил на дюне.уже минут 20 стрим идет,проблем не было.
принцип такой через ffmpeg
rtsp->flv->mpegts(звук в mp2 или ac3).

Это хорошо, а пример поточнее можно?

$url=...........?????

dune 101 + системная флешка
 


#177 andrej456

andrej456

    Опытный комментатор

  • Пользователи
  • PipPipPipPipPip
  • 255 сообщений
  • Gender:Male

Отправлено 17 September 2013 - 20:03

Это хорошо, а пример поточнее можно?

$url=...........?????

http://forum.hdtv.ru...1...st&p=186947
примерно так но чуть потделано.

#178 micha86

micha86

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 992 сообщений
  • Gender:Male
  • Interests:Бывший пользователь

Отправлено 19 September 2013 - 01:32

Как Андрей уже писал у него получилось воспроизвести на дюне rtsp протокол.
Так вот после небольшого теста и оптимизации выкладываю скрипт для теста.
Пока прописывать надо ручками через телнет.
Сразу предупреждаю я и Андрей не несем ответственности.
Ставить на свой страх и риск так как является тестом. Надо наблюдать за температурой процессора в зависимости от стрима нагрузка может менятся от18% до 40%.
Скрипт для усб
https://www.dropbox....rl5wnl6/rtsp.sh
Ставим в папку /D/WWW/cgi-bin/
И даем права через телнет
chmod +x /D/WWW/cgi-bin/rtsp.sh
Если у кого на системном то качаем
https://www.dropbox....hdty9cp/rtsp.sh
Копируем cp /D/rtsp.sh /persistfs/codecpack/WWW/cgi-bin
chmod +x /persistfs/codecpack/WWW/cgi-bin/rtsp.sh
Пока все.тестируем. :)

#179 motra82

motra82

    Опытный комментатор

  • Пользователи
  • PipPipPipPipPip
  • 216 сообщений

Отправлено 19 September 2013 - 11:33

Привет Миша 1. вопрос а что происходит если для показа flv установить рмтп скрипт и для внешнего усб и для системного диска. после перестановки прошивки у меня что то не идёт flv. так как системный усб в дунке 53д лите подключен, я понимаю то что надо для системного накопителя просто дсф кинуть из шапки по второму варианту для системного накопителя или ешё какието кодеки? Надо ли уберать Цодец для внешнего усб, мешают они друг другу? 2.вопрос что даст rtsp->flv->mpegts ? перемотка flv стрима ? Вопрос за вопросом? :-) Спасибо за проделаную Работу вам всем.

#180 micha86

micha86

    Маэстро комментариев

  • Пользователи
  • PipPipPipPipPipPipPip
  • 992 сообщений
  • Gender:Male
  • Interests:Бывший пользователь

Отправлено 19 September 2013 - 12:02

Привет Миша
1. вопрос
а что происходит если для показа flv установить рмтп скрипт и для внешнего усб и для системного диска.
после перестановки прошивки у меня что то не идёт flv.
так как системный усб в дунке 53д лите подключен, я понимаю то что надо для системного накопителя просто дсф кинуть из шапки по второму варианту для системного накопителя или ешё какието кодеки?
Надо ли уберать Цодец для внешнего усб, мешают они друг другу?
2.вопрос
что даст rtsp->flv->mpegts ?
перемотка flv стрима ?
Вопрос за вопросом? :-)
Спасибо за проделаную Работу вам всем.

Привет Артём
1. кодеки одни и теже это вариантность установки образовалась со временем, для упрощения установки.
то есть если ты установил 2 вариант то по нему и удаляй.
самый простой вариант установки это первый(новый).
2. rtsp это протокол вещания
вид как он воспроизводится на дюне связан с тем что не получется сразу перейти в mpegts потому в два подхода.
сначала в flv потом в mpegts, перемотки нет так как это поток.
после установки скрипта приведённого выше можно проигрывать плейлист такого вида:
#EXTINF:0,Russia Today
http://ts://127.0.0.1:81/cgi-bin/rtsp.sh?rtsp://fms5.visionip.tv:1935/live/rt-global-live-HD

если что не ясно спрашивай. :)