Покажите вывод ffmpeg -i файл
Да, похоже нет файла.
Добавьте проверку:
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')});
Я вас понял. Сам с этого начинал. Изобрел разные паттерны, а потом, по прошествии времени узнал их названия. Сложилось бы наоборот, возможно да, лепил бы их к месту и не месту.
Ваша правда. На Yii не пишу и не отстаиваю. Но не раз видел как на коленке, очень быстро, на нем собирали, можно сказать говнокодили сайты. И часто это было экономически оправданно. А рынок довольно таки инертен. Понаписали много, а поддерживать то нужно.
А вот про запад я и забыл. Как правило все новые технологии оттуда приходят. Сам "подсел" на изоморфные веб-приложения. Сначала понадобилось для проекта, а теперь PHP просто не интересен стал.
По поводу Zend - для расширения кругозора конечно же вы правы. Много знаний не бывает.
Jaf4, Не успел уйти, как вы настрочили ответ. Слово "извольте" там уместно, с долей юмора. Повторюсь, у вас похоже с ним(юмором) проблемы. Ох как прав я оказался по поводу ошейника.
А по поводу оскорбления - земля круглая.
Все, можете продолжать брызгать слюной, оскорблять дальше. Людей с манией величия лучше лишний раз не трогать. Больно уж вони много. Дальше действительно лучше воздержусь от диалога. Это смахивает на провокацию ради "посраться". Я же царь, рейтинг у меня большой, жалуйся, чЁ ты мне сделаешь.
Да не нужно мне это. Я сюда пришел знаний почерпнуть, своими поделиться.
Судя по реакции и попытках учить жизни совершенно незнакомых людей, мне собаку вашу жалко, если она есть у вас конечно.
Мой вопрос был риторическим.
И мы на ты не переходили. Так что извольте откланяться, дальше вести беседу с вами не намерен.
Хамить не надо если с юмором проблемы. Значит на собаку такое одевать это нормально? А пошутить про соседей аморально? Смотрю вы выше этот ошейник тоже посоветовали, на себя оденьте, советчик и нажимайте кнопку когда вас другие люди раздражают.
Это курилка, хочу пишу, хочу не пишу. Или у вас разрешения нужно спрашивать?
P.S. В ваших социалках не сижу, "гражданин начальник".
Жесть, кнопка mute для собаки:) Может лучше на соседей их одеть?😂