demiux

Рейтинг
15
Регистрация
31.01.2017

Покажите вывод ffmpeg -i файл

drugoidodi:
Когда я пробовал из консоли запускать такую же ошибку давал, видимо тут еще как-то не так генерируется sdp

Да, похоже нет файла.

Добавьте проверку:

rtpEndpoint.generateOffer(function(error, offer) {

// создается файл
fs.writeFile(sdpFile, offer, function (err) {
if(err) {
console.error('SDP FILE ERROR', err);
return;
}
// запускается ffmpeg
ffmpegProc.save('rtmp://a.rtmp.youtube.com/live2/key-youtube-live');
console.log("RTP OFFER GENERATED.");
});
});

У вас очень старая версия node.js.

Замените

fs.writeFile(sdpFile, offer, (err) => {

на

fs.writeFile(sdpFile, offer, function (err) {

Мне кажется вы путаете - "я и так вроде его запускаю после создания". js язык асинхронный и в приведенном вами коде ffmpeg может запуститься раньше.

Сначала нужно инициализировать ffmpeg (перенесите этот код выше места запуска kurento):


// в linux среде, лучше '/tmp/test.sdp' или путь до каталога куда есть права на запись.
var sdpFile = 'test.sdp';
var ffmpegProc = ffmpeg(sdpFile)
.preset('flashvideo')
// setup event handlers
.on('end', function() {
console.log('done processing input stream');
})
.on('error', function(err, stdout, stderr) {
console.log('an error happened: ' + err.message);
// Здесь мы увидим подробную ошибку ffmpeg
console.log(stderr);
}) ;

Обратите внимание что ffmpegProc.save() не вызывается, иначе ffmpeg запустится, а файла test.sdp еще нет. Еще модифицировал .on('error').

Далее запускаете kurento, весь код цитировать не буду, просто замените. И в этом месте уже запускается ffmpeg:

rtpEndpoint.generateOffer(function(error, offer) {
// создается файл
fs.writeFile(sdpFile, offer, (err) => {
// запускается ffmpeg
ffmpegProc.save('rtmp://a.rtmp.youtube.com/live2/key-youtube-live');
console.log("RTP OFFER GENERATED.");
});
});

В первом примере я тоже допустил ошибку, ffmpeg надо запускать в колбэке записи файла.

Ну и не забудьте добавить проверку ошибок. Возможно файл не сможет создаться.

Можно проверить пошагово, без ffmpeg. Запустите из консоли (подразумевается что тестируете локально):

ffplay путь_до_файла_test.sdp Если все в порядке, увидите окно с трансляцией.

Еще, для упрощения тестирования, в ffmpegProc.save() можно указать файл, например test.mp4. В него запишется трансляция.

Так и открывайте test.sdp сразу в ffmpeg:

var ffmpegProc = ffmpeg('test.sdp')...

Только ffmpeg стартуйте когда файл создан:

rtpEndpoint.generateOffer(function(error, offer) { 
fs.writeFile('test.sdp',offer);
ffmpegProc.save('rtmp://a.rtmp.youtube.com/live2/key-youtube-live')
});
danforth:
На самом деле наоборот: ты можешь конструировать авто и не знать названий запчастей, ты должен делать механизмы, знать как запчасть работает, уметь конструировать запчасть, а после прочтения, узнать её название. Немного утрировано, конечно.

Я вас понял. Сам с этого начинал. Изобрел разные паттерны, а потом, по прошествии времени узнал их названия. Сложилось бы наоборот, возможно да, лепил бы их к месту и не месту.

danforth:
Популярность Yii обусловлена низким порогом вхождения, и тем, что одна из первых документаций на русском, а т.к. наши разработчики именуют переменные $summa = $tovar['cena'] - $skidka; то Yii им как бальзам на душу, можно и поговнокодить.
Yii остался только у нас, если зайдете на odesk/upwork там все пишут либо на laravel, либо на symfony.

Ваша правда. На Yii не пишу и не отстаиваю. Но не раз видел как на коленке, очень быстро, на нем собирали, можно сказать говнокодили сайты. И часто это было экономически оправданно. А рынок довольно таки инертен. Понаписали много, а поддерживать то нужно.

А вот про запад я и забыл. Как правило все новые технологии оттуда приходят. Сам "подсел" на изоморфные веб-приложения. Сначала понадобилось для проекта, а теперь PHP просто не интересен стал.

По поводу Zend - для расширения кругозора конечно же вы правы. Много знаний не бывает.

Jaf4, Не успел уйти, как вы настрочили ответ. Слово "извольте" там уместно, с долей юмора. Повторюсь, у вас похоже с ним(юмором) проблемы. Ох как прав я оказался по поводу ошейника.

А по поводу оскорбления - земля круглая.

Все, можете продолжать брызгать слюной, оскорблять дальше. Людей с манией величия лучше лишний раз не трогать. Больно уж вони много. Дальше действительно лучше воздержусь от диалога. Это смахивает на провокацию ради "посраться". Я же царь, рейтинг у меня большой, жалуйся, чЁ ты мне сделаешь.

Jaf4:
нахамили? Кнопочку видишь "пожаловаться"? Дави.

Да не нужно мне это. Я сюда пришел знаний почерпнуть, своими поделиться.

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

Jaf4:
Хочешь пиши.. кто-то запрещает?

Мой вопрос был риторическим.

И мы на ты не переходили. Так что извольте откланяться, дальше вести беседу с вами не намерен.

Jaf4:
жесть, это когда заходишь на форум, а тут очередной скучающий пишет "лучше на соседей их одеть". Ну одень, раз такой умный. :o С вконтактиком серч не перепутал? А?

Хамить не надо если с юмором проблемы. Значит на собаку такое одевать это нормально? А пошутить про соседей аморально? Смотрю вы выше этот ошейник тоже посоветовали, на себя оденьте, советчик и нажимайте кнопку когда вас другие люди раздражают.

Это курилка, хочу пишу, хочу не пишу. Или у вас разрешения нужно спрашивать?

P.S. В ваших социалках не сижу, "гражданин начальник".

zhitov:
MIKLFIRM, так есть же ошейники с электрошоком для собак. Реагируют на лай. Сила воздействия регулируется. Правда, будет ли после него лаять днем - вопрос.
Вот, и вот с пультом

Жесть, кнопка mute для собаки:) Может лучше на соседей их одеть?😂

Всего: 102