Мне кажется вы путаете - "я и так вроде его запускаю после создания". 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:
danforth: На самом деле наоборот: ты можешь конструировать авто и не знать названий запчастей, ты должен делать механизмы, знать как запчасть работает, уметь конструировать запчасть, а после прочтения, узнать её название. Немного утрировано, конечно.
Я вас понял. Сам с этого начинал. Изобрел разные паттерны, а потом, по прошествии времени узнал их названия. Сложилось бы наоборот, возможно да, лепил бы их к месту и не месту.
danforth: Популярность Yii обусловлена низким порогом вхождения, и тем, что одна из первых документаций на русском, а т.к. наши разработчики именуют переменные $summa = $tovar['cena'] - $skidka; то Yii им как бальзам на душу, можно и поговнокодить. Yii остался только у нас, если зайдете на odesk/upwork там все пишут либо на laravel, либо на symfony.
Ваша правда. На Yii не пишу и не отстаиваю. Но не раз видел как на коленке, очень быстро, на нем собирали, можно сказать говнокодили сайты. И часто это было экономически оправданно. А рынок довольно таки инертен. Понаписали много, а поддерживать то нужно.
А вот про запад я и забыл. Как правило все новые технологии оттуда приходят. Сам "подсел" на изоморфные веб-приложения. Сначала понадобилось для проекта, а теперь PHP просто не интересен стал.
По поводу Zend - для расширения кругозора конечно же вы правы. Много знаний не бывает.
Jaf4, Не успел уйти, как вы настрочили ответ. Слово "извольте" там уместно, с долей юмора. Повторюсь, у вас похоже с ним(юмором) проблемы. Ох как прав я оказался по поводу ошейника.
А по поводу оскорбления - земля круглая.
Все, можете продолжать брызгать слюной, оскорблять дальше. Людей с манией величия лучше лишний раз не трогать. Больно уж вони много. Дальше действительно лучше воздержусь от диалога. Это смахивает на провокацию ради "посраться". Я же царь, рейтинг у меня большой, жалуйся, чЁ ты мне сделаешь.
Jaf4: жесть, это когда заходишь на форум, а тут очередной скучающий пишет "лучше на соседей их одеть". Ну одень, раз такой умный. :o С вконтактиком серч не перепутал? А?
Хамить не надо если с юмором проблемы. Значит на собаку такое одевать это нормально? А пошутить про соседей аморально? Смотрю вы выше этот ошейник тоже посоветовали, на себя оденьте, советчик и нажимайте кнопку когда вас другие люди раздражают.
Это курилка, хочу пишу, хочу не пишу. Или у вас разрешения нужно спрашивать?
P.S. В ваших социалках не сижу, "гражданин начальник".
zhitov: MIKLFIRM, так есть же ошейники с электрошоком для собак. Реагируют на лай. Сила воздействия регулируется. Правда, будет ли после него лаять днем - вопрос.
Вот, и вот с пультом
Жесть, кнопка mute для собаки:) Может лучше на соседей их одеть?😂
Покажите вывод ffmpeg -i файл
Когда я пробовал из консоли запускать такую же ошибку давал, видимо тут еще как-то не так генерируется 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):
Обратите внимание что 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')
});
На самом деле наоборот: ты можешь конструировать авто и не знать названий запчастей, ты должен делать механизмы, знать как запчасть работает, уметь конструировать запчасть, а после прочтения, узнать её название. Немного утрировано, конечно.
Я вас понял. Сам с этого начинал. Изобрел разные паттерны, а потом, по прошествии времени узнал их названия. Сложилось бы наоборот, возможно да, лепил бы их к месту и не месту.
Популярность Yii обусловлена низким порогом вхождения, и тем, что одна из первых документаций на русском, а т.к. наши разработчики именуют переменные $summa = $tovar['cena'] - $skidka; то Yii им как бальзам на душу, можно и поговнокодить.
Yii остался только у нас, если зайдете на odesk/upwork там все пишут либо на laravel, либо на symfony.
Ваша правда. На Yii не пишу и не отстаиваю. Но не раз видел как на коленке, очень быстро, на нем собирали, можно сказать говнокодили сайты. И часто это было экономически оправданно. А рынок довольно таки инертен. Понаписали много, а поддерживать то нужно.
А вот про запад я и забыл. Как правило все новые технологии оттуда приходят. Сам "подсел" на изоморфные веб-приложения. Сначала понадобилось для проекта, а теперь PHP просто не интересен стал.
По поводу Zend - для расширения кругозора конечно же вы правы. Много знаний не бывает.
Jaf4, Не успел уйти, как вы настрочили ответ. Слово "извольте" там уместно, с долей юмора. Повторюсь, у вас похоже с ним(юмором) проблемы. Ох как прав я оказался по поводу ошейника.
А по поводу оскорбления - земля круглая.
Все, можете продолжать брызгать слюной, оскорблять дальше. Людей с манией величия лучше лишний раз не трогать. Больно уж вони много. Дальше действительно лучше воздержусь от диалога. Это смахивает на провокацию ради "посраться". Я же царь, рейтинг у меня большой, жалуйся, чЁ ты мне сделаешь.
нахамили? Кнопочку видишь "пожаловаться"? Дави.
Да не нужно мне это. Я сюда пришел знаний почерпнуть, своими поделиться.
Судя по реакции и попытках учить жизни совершенно незнакомых людей, мне собаку вашу жалко, если она есть у вас конечно.
Хочешь пиши.. кто-то запрещает?
Мой вопрос был риторическим.
И мы на ты не переходили. Так что извольте откланяться, дальше вести беседу с вами не намерен.
жесть, это когда заходишь на форум, а тут очередной скучающий пишет "лучше на соседей их одеть". Ну одень, раз такой умный. :o С вконтактиком серч не перепутал? А?
Хамить не надо если с юмором проблемы. Значит на собаку такое одевать это нормально? А пошутить про соседей аморально? Смотрю вы выше этот ошейник тоже посоветовали, на себя оденьте, советчик и нажимайте кнопку когда вас другие люди раздражают.
Это курилка, хочу пишу, хочу не пишу. Или у вас разрешения нужно спрашивать?
P.S. В ваших социалках не сижу, "гражданин начальник".
MIKLFIRM, так есть же ошейники с электрошоком для собак. Реагируют на лай. Сила воздействия регулируется. Правда, будет ли после него лаять днем - вопрос.
Вот, и вот с пультом
Жесть, кнопка mute для собаки:) Может лучше на соседей их одеть?😂