
Recherche avancée
Médias (91)
-
#3 The Safest Place
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#4 Emo Creates
15 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#2 Typewriter Dance
15 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#1 The Wires
11 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
ED-ME-5 1-DVD
11 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Audio
-
Revolution of Open-source and film making towards open film making
6 octobre 2011, par
Mis à jour : Juillet 2013
Langue : English
Type : Texte
Autres articles (73)
-
Gestion des droits de création et d’édition des objets
8 février 2011, parPar défaut, beaucoup de fonctionnalités sont limitées aux administrateurs mais restent configurables indépendamment pour modifier leur statut minimal d’utilisation notamment : la rédaction de contenus sur le site modifiables dans la gestion des templates de formulaires ; l’ajout de notes aux articles ; l’ajout de légendes et d’annotations sur les images ;
-
Dépôt de média et thèmes par FTP
31 mai 2013, parL’outil MédiaSPIP traite aussi les média transférés par la voie FTP. Si vous préférez déposer par cette voie, récupérez les identifiants d’accès vers votre site MédiaSPIP et utilisez votre client FTP favori.
Vous trouverez dès le départ les dossiers suivants dans votre espace FTP : config/ : dossier de configuration du site IMG/ : dossier des média déjà traités et en ligne sur le site local/ : répertoire cache du site web themes/ : les thèmes ou les feuilles de style personnalisées tmp/ : dossier de travail (...) -
Keeping control of your media in your hands
13 avril 2011, parThe vocabulary used on this site and around MediaSPIP in general, aims to avoid reference to Web 2.0 and the companies that profit from media-sharing.
While using MediaSPIP, you are invited to avoid using words like "Brand", "Cloud" and "Market".
MediaSPIP is designed to facilitate the sharing of creative media online, while allowing authors to retain complete control of their work.
MediaSPIP aims to be accessible to as many people as possible and development is based on expanding the (...)
Sur d’autres sites (6168)
-
How to create a video file webm from chunks by media recorder api using ffmpeg
17 octobre 2020, par Caio NakaiI'm trying to create a webm video file from blobs generated by MediaRecorderAPI in a NodeJS server using FFMPEG. I'm able to create the .webm file but it's not playable, I ran this command
$ ffmpeg.exe -v error -i lel.webm -f null - >error.log 2>&1
to generate an error log, the error log file contains this :



[null @ 000002ce7501de40] Application provided invalid, non monotonically increasing dts to muxer in stream 0 : 1 >= 1


[h264 @ 000002ce74a727c0] Invalid NAL unit size (804 > 74).


[h264 @ 000002ce74a727c0] Error splitting the input into NAL units.


Error while decoding stream #0:0 : Invalid data found when processing input




This is my web server code


const app = require("express")();
const http = require("http").createServer(app);
const io = require("socket.io")(http);
const fs = require("fs");
const child_process = require("child_process");

app.get("/", (req, res) => {
 res.sendFile(__dirname + "/index.html");
});

io.on("connection", (socket) => {
 console.log("a user connected");

 const ffmpeg = child_process.spawn("ffmpeg", [
 "-i",
 "-",
 "-vcodec",
 "copy",
 "-f",
 "flv",
 "rtmpUrl.webm",
 ]);

 ffmpeg.on("close", (code, signal) => {
 console.log(
 "FFmpeg child process closed, code " + code + ", signal " + signal
 );
 });

 ffmpeg.stdin.on("error", (e) => {
 console.log("FFmpeg STDIN Error", e);
 });

 ffmpeg.stderr.on("data", (data) => {
 console.log("FFmpeg STDERR:", data.toString());
 });

 socket.on("message", (msg) => {
 console.log("Writing blob! ");
 ffmpeg.stdin.write(msg);
 });

 socket.on("stop", () => {
 console.log("Stop recording..");
 ffmpeg.kill("SIGINT");
 });
});

http.listen(3000, () => {
 console.log("listening on *:3000");
});




And this is my client code, using HTML, JS :




 
 
 
 
 
 <code class="echappe-js"><script src='http://stackoverflow.com/socket.io/socket.io.js'></script>

<script>&#xA; const socket = io();&#xA; let mediaRecorder = null;&#xA; const startRecording = (someStream) => {&#xA; const mediaStream = new MediaStream();&#xA; const videoTrack = someStream.getVideoTracks()[0];&#xA; const audioTrack = someStream.getAudioTracks()[0];&#xA; console.log("Video trac ", videoTrack);&#xA; console.log("audio trac ", audioTrack);&#xA; mediaStream.addTrack(videoTrack);&#xA; mediaStream.addTrack(audioTrack);&#xA;&#xA; const recorderOptions = {&#xA; mimeType: "video/webm;codecs=h264",&#xA; videoBitsPerSecond: 3 * 1024 * 1024,&#xA; };&#xA;&#xA; mediaRecorder = new MediaRecorder(mediaStream, recorderOptions);&#xA; mediaRecorder.start(1000); // 1000 - the number of milliseconds to record into each Blob&#xA; mediaRecorder.ondataavailable = (event) => {&#xA; console.debug("Got blob data:", event.data);&#xA; if (event.data &amp;&amp; event.data.size > 0) {&#xA; socket.emit("message", event.data);&#xA; }&#xA; };&#xA; };&#xA;&#xA; const getVideoStream = async () => {&#xA; try {&#xA; const stream = await navigator.mediaDevices.getUserMedia({&#xA; video: true,&#xA; audio: true,&#xA; });&#xA; startRecording(stream);&#xA; myVideo.srcObject = stream;&#xA; } catch (e) {&#xA; console.error("navigator.getUserMedia error:", e);&#xA; }&#xA; };&#xA;&#xA; const stopRecording = () => {&#xA; mediaRecorder.stop();&#xA; socket.emit("stop");&#xA; };&#xA; </script>

 
hello world






 

<script>&#xA; const myVideo = document.getElementById("myvideo");&#xA; myVideo.muted = true;&#xA; </script>

 




Any help is appreciated !


-
FFmpeg media info incorrect when encoding aac audio track
11 janvier 2023, par user2028936I recently dipped my feet into encoding with FFmpeg. It's been working fine for me apart form 1 issues I have noticed recently. When I try and re-encode an audio track to acc the media info tags are somewhat wrong. Bitrate, streamsize etc seems to be copied form the source as opposed to reading it from the new track.



Essentially I want to copy the source video, audio and subtitles and also create an AAC version of the soundtrack for playback on devices that don't support HD audio.



Below is an example of what I am doing :



ffmpeg -i source.mkv -map_chapters 0 -map 0:v -c:v copy -c:s copy -map 0:a -c:a:0 copy -map 0:a c:a:1 aac destination.mkv




This results in a media info of :



Audio #1
ID : 2
Format : MLP FBA 16-ch
Format/Info : Meridian Lossless Packing FBA with 16-channel presentation
Commercial name : Dolby TrueHD with Dolby Atmos
Codec ID : A_TRUEHD
Duration : 1 h 50 min
Bit rate mode : Variable
Bit rate : 3 545 kb/s
Maximum bit rate : 5 826 kb/s
Channel(s) : 8 channels
Channel layout : L R C LFE Ls Rs Lb Rb
Sampling rate : 48.0 kHz
Frame rate : 1 200.000 FPS (40 SPF)
Bit depth : 24 bits
Compression mode : Lossless
Delay relative to video : 21 ms
Stream size : 2.73 GiB (29%)
Title : Dolby TrueHD 7.1 (Atmos)
Language : English
Default : Yes
Forced : No
Number of dynamic objects : 11
Bed channel count : 1 channel
Bed channel configuration : LFE

Audio #2
ID : 3
Format : AAC LC
Format/Info : Advanced Audio Codec Low Complexity
Codec ID : A_AAC-2
Duration : 1 h 50 min
Bit rate : 3 545 kb/s
Channel(s) : 8 channels
Channel layout : C L R Ls Rs Lb Rb LFE
Sampling rate : 48.0 kHz
Frame rate : 46.875 FPS (1024 SPF)
Compression mode : Lossy
Stream size : 2.73 GiB (29%)
Title : AAC 5.1
Writing library : Lavc58.62.100 aac
Language : English
Default : Yes
Forced : No




As you can see the bit rate, stream size, etc is copied from the source track which is incorrect. I've tried the -map_metadata -1 but that removes the metadata without creating a new one and also removed it from all video and audio tracks which I don't want.



Any other ideas what I am doing wrong or is this just a quirk of the software ?



Thanks in advance.



Adding -report output trimming the lines "Writing block of size..." as the file is huge :



ffmpeg started on 2019-12-04 at 14:31:25
Report written to "ffmpeg-20191204-143125.log"
Log level: 48
Command line:
"C:\\ffmpeg\\ffmpeg-20191118-d831edc-win64-static\\bin\\ffmpeg" -i input.mkv -report -map_chapters 0 -map 0:v -c:v copy -c:s copy -map 0:a -c:a:0 copy -map 0:a -c:a:1 aac destination.mkv
ffmpeg version git-2019-11-18-d831edc Copyright (c) 2000-2019 the FFmpeg developers
 built with gcc 9.2.1 (GCC) 20191010
 configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
 libavutil 56. 36.100 / 56. 36.100
 libavcodec 58. 62.100 / 58. 62.100
 libavformat 58. 35.100 / 58. 35.100
 libavdevice 58. 9.101 / 58. 9.101
 libavfilter 7. 66.100 / 7. 66.100
 libswscale 5. 6.100 / 5. 6.100
 libswresample 3. 6.100 / 3. 6.100
 libpostproc 55. 6.100 / 55. 6.100
Splitting the commandline.
Reading option '-i' ... matched as input url with argument 'input.mkv'.
Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
Reading option '-map_chapters' ... matched as option 'map_chapters' (set chapters mapping) with argument '0'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '0:v'.
Reading option '-c:v' ... matched as option 'c' (codec name) with argument 'copy'.
Reading option '-c:s' ... matched as option 'c' (codec name) with argument 'copy'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '0:a'.
Reading option '-c:a:0' ... matched as option 'c' (codec name) with argument 'copy'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '0:a'.
Reading option '-c:a:1' ... matched as option 'c' (codec name) with argument 'aac'.
Reading option 'destination.mkv' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option report (generate a report) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input url input.mkv.
Successfully parsed a group of options.
Opening an input file: input.mkv.
[NULL @ 000001b290ddad00] Opening 'input.mkv' for reading
[file @ 000001b290ddbe00] Setting default whitelist 'file,crypto'
[matroska,webm @ 000001b290ddad00] Format matroska,webm probed with size=2048 and score=100
st:0 removing common factor 1000000 from timebase
st:1 removing common factor 1000000 from timebase
[matroska,webm @ 000001b290ddad00] Before avformat_find_stream_info() pos: 5080 bytes read:32768 seeks:0 nb_streams:2
[hevc @ 000001b290ddeb80] nal_unit_type: 32(VPS), nuh_layer_id: 0, temporal_id: 0
[hevc @ 000001b290ddeb80] Decoding VPS
[hevc @ 000001b290ddeb80] Main 10 profile bitstream
[hevc @ 000001b290ddeb80] nal_unit_type: 33(SPS), nuh_layer_id: 0, temporal_id: 0
[hevc @ 000001b290ddeb80] Decoding SPS
[hevc @ 000001b290ddeb80] Main 10 profile bitstream
[hevc @ 000001b290ddeb80] Decoding VUI
[hevc @ 000001b290ddeb80] nal_unit_type: 34(PPS), nuh_layer_id: 0, temporal_id: 0
[hevc @ 000001b290ddeb80] Decoding PPS
[hevc @ 000001b290ddeb80] nal_unit_type: 39(SEI_PREFIX), nuh_layer_id: 0, temporal_id: 0
[hevc @ 000001b290ddeb80] Decoding SEI
[hevc @ 000001b290ddeb80] nal_unit_type: 39(SEI_PREFIX), nuh_layer_id: 0, temporal_id: 0
[hevc @ 000001b290ddeb80] Decoding SEI
[hevc @ 000001b290ddeb80] nal_unit_type: 39(SEI_PREFIX), nuh_layer_id: 0, temporal_id: 0
[hevc @ 000001b290ddeb80] Decoding SEI
[hevc @ 000001b290ddeb80] Skipped PREFIX SEI 5
[matroska,webm @ 000001b290ddad00] All info found
[matroska,webm @ 000001b290ddad00] After avformat_find_stream_info() pos: 10219 bytes read:32768 seeks:0 frames:4
Input #0, matroska,webm, from 'input.mkv':
 Metadata:
 title : input
 ENCODER : Lavf58.35.100
 Duration: 01:50:06.89, start: 0.000000, bitrate: 11569 kb/s
 Chapter #0:0: start 0.000000, end 308.766792
 Metadata:
 title : Chapter 01
 Chapter #0:1: start 308.766792, end 679.720708
 Metadata:
 title : Chapter 02
 Chapter #0:2: start 679.720708, end 904.820583
 Metadata:
 title : Chapter 03
 Chapter #0:3: start 904.820583, end 1282.781500
 Metadata:
 title : Chapter 04
 Chapter #0:4: start 1282.781500, end 1487.736250
 Metadata:
 title : Chapter 05
 Chapter #0:5: start 1487.736250, end 1846.177667
 Metadata:
 title : Chapter 06
 Chapter #0:6: start 1846.177667, end 2116.531083
 Metadata:
 title : Chapter 07
 Chapter #0:7: start 2116.531083, end 2443.858083
 Metadata:
 title : Chapter 08
 Chapter #0:8: start 2443.858083, end 2731.979250
 Metadata:
 title : Chapter 09
 Chapter #0:9: start 2731.979250, end 3178.383542
 Metadata:
 title : Chapter 10
 Chapter #0:10: start 3178.383542, end 3636.507875
 Metadata:
 title : Chapter 11
 Chapter #0:11: start 3636.507875, end 3867.488625
 Metadata:
 title : Chapter 12
 Chapter #0:12: start 3867.488625, end 4208.037167
 Metadata:
 title : Chapter 13
 Chapter #0:13: start 4208.037167, end 4502.372875
 Metadata:
 title : Chapter 14
 Chapter #0:14: start 4502.372875, end 4853.431917
 Metadata:
 title : Chapter 15
 Chapter #0:15: start 4853.431917, end 5267.470542
 Metadata:
 title : Chapter 16
 Chapter #0:16: start 5267.470542, end 5543.329458
 Metadata:
 title : Chapter 17
 Chapter #0:17: start 5543.329458, end 5847.132958
 Metadata:
 title : Chapter 18
 Chapter #0:18: start 5847.132958, end 6150.269125
 Metadata:
 title : Chapter 19
 Chapter #0:19: start 6150.269125, end 6606.891958
 Metadata:
 title : Chapter 20
 Stream #0:0, 3, 1/1000: Video: hevc (Main 10), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x1600 [SAR 1:1 DAR 12:5], 23.98 fps, 23.98 tbr, 1k tbn, 23.98 tbc
 Metadata:
 title : input
 ENCODER : Lavc58.62.100 libx265
 DURATION : 01:50:06.891000000
 Stream #0:1(eng), 1, 1/1000: Audio: truehd, 48000 Hz, 7.1, s32 (24 bit) (default)
 Metadata:
 title : input
 _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
 BPS-eng : 3544728
 DURATION-eng : 01:50:06.893000000
 NUMBER_OF_FRAMES-eng: 7928271
 NUMBER_OF_BYTES-eng: 2927455224
 _STATISTICS_WRITING_APP-eng: mkvmerge v40.0.0 ('Old Town Road + Pony') 64-bit
 _STATISTICS_WRITING_DATE_UTC-eng: 2019-11-30 10:59:25
 DURATION : 01:50:06.893000000
Successfully opened the file.
Parsing a group of options: output url destination.mkv.
Applying option map_chapters (set chapters mapping) with argument 0.
Applying option map (set input stream mapping) with argument 0:v.
Applying option c:v (codec name) with argument copy.
Applying option c:s (codec name) with argument copy.
Applying option map (set input stream mapping) with argument 0:a.
Applying option c:a:0 (codec name) with argument copy.
Applying option map (set input stream mapping) with argument 0:a.
Applying option c:a:1 (codec name) with argument aac.
Successfully parsed a group of options.
Opening an output file: destination.mkv.
[file @ 000001b290ea7e40] Setting default whitelist 'file,crypto'
Successfully opened the file.
Stream mapping:
 Stream #0:0 -> #0:0 (copy)
 Stream #0:1 -> #0:1 (copy)
 Stream #0:1 -> #0:2 (truehd (native) -> aac (native))
Press [q] to stop, [?] for help
cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:1 (0) [init:1 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:2 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:1 (0) [init:1 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:2 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:1 (0) [init:1 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:2 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:1 (0) [init:1 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:2 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
detected 12 logical cores
[graph_0_in_0_1 @ 000001b290dda840] Setting 'time_base' to value '1/48000'
[graph_0_in_0_1 @ 000001b290dda840] Setting 'sample_rate' to value '48000'
[graph_0_in_0_1 @ 000001b290dda840] Setting 'sample_fmt' to value 's32'
[graph_0_in_0_1 @ 000001b290dda840] Setting 'channel_layout' to value '0x63f'
[graph_0_in_0_1 @ 000001b290dda840] tb:1/48000 samplefmt:s32 samplerate:48000 chlayout:0x63f
[format_out_0_2 @ 000001b290e0ea00] Setting 'sample_fmts' to value 'fltp'
[format_out_0_2 @ 000001b290e0ea00] Setting 'sample_rates' to value '96000|88200|64000|48000|44100|32000|24000|22050|16000|12000|11025|8000|7350'
[format_out_0_2 @ 000001b290e0ea00] auto-inserting filter 'auto_resampler_0' between the filter 'Parsed_anull_0' and the filter 'format_out_0_2'
[AVFilterGraph @ 000001b290e1b3c0] query_formats: 4 queried, 6 merged, 3 already done, 0 delayed
[auto_resampler_0 @ 000001b290e0fe80] [SWR @ 000001b291232000] Using fltp internally between filters
[auto_resampler_0 @ 000001b290e0fe80] ch:8 chl:7.1 fmt:s32 r:48000Hz -> ch:8 chl:7.1 fmt:fltp r:48000Hz
[matroska @ 000001b290dfba40] get_metadata_duration returned: 6606893000
[matroska @ 000001b290dfba40] Write early duration from metadata = 6606893
Output #0, matroska, to 'destination.mkv':
 Metadata:
 title : input
 encoder : Lavf58.35.100
 Chapter #0:0: start 0.000000, end 308.766792
 Metadata:
 title : Chapter 01
 Chapter #0:1: start 308.766792, end 679.720708
 Metadata:
 title : Chapter 02
 Chapter #0:2: start 679.720708, end 904.820583
 Metadata:
 title : Chapter 03
 Chapter #0:3: start 904.820583, end 1282.781500
 Metadata:
 title : Chapter 04
 Chapter #0:4: start 1282.781500, end 1487.736250
 Metadata:
 title : Chapter 05
 Chapter #0:5: start 1487.736250, end 1846.177667
 Metadata:
 title : Chapter 06
 Chapter #0:6: start 1846.177667, end 2116.531083
 Metadata:
 title : Chapter 07
 Chapter #0:7: start 2116.531083, end 2443.858083
 Metadata:
 title : Chapter 08
 Chapter #0:8: start 2443.858083, end 2731.979250
 Metadata:
 title : Chapter 09
 Chapter #0:9: start 2731.979250, end 3178.383542
 Metadata:
 title : Chapter 10
 Chapter #0:10: start 3178.383542, end 3636.507875
 Metadata:
 title : Chapter 11
 Chapter #0:11: start 3636.507875, end 3867.488625
 Metadata:
 title : Chapter 12
 Chapter #0:12: start 3867.488625, end 4208.037167
 Metadata:
 title : Chapter 13
 Chapter #0:13: start 4208.037167, end 4502.372875
 Metadata:
 title : Chapter 14
 Chapter #0:14: start 4502.372875, end 4853.431917
 Metadata:
 title : Chapter 15
 Chapter #0:15: start 4853.431917, end 5267.470542
 Metadata:
 title : Chapter 16
 Chapter #0:16: start 5267.470542, end 5543.329458
 Metadata:
 title : Chapter 17
 Chapter #0:17: start 5543.329458, end 5847.132958
 Metadata:
 title : Chapter 18
 Chapter #0:18: start 5847.132958, end 6150.269125
 Metadata:
 title : Chapter 19
 Chapter #0:19: start 6150.269125, end 6606.891958
 Metadata:
 title : Chapter 20
 Stream #0:0, 0, 1/1000: Video: hevc (Main 10), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x1600 [SAR 1:1 DAR 12:5], q=2-31, 23.98 fps, 23.98 tbr, 1k tbn, 1k tbc
 Metadata:
 title : input
 ENCODER : Lavc58.62.100 libx265
 DURATION : 01:50:06.891000000
 Stream #0:1(eng), 0, 1/1000: Audio: truehd ([255][255][255][255] / 0xFFFFFFFF), 48000 Hz, 7.1, s32 (24 bit) (default)
 Metadata:
 title : input
 _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
 BPS-eng : 3544728
 DURATION-eng : 01:50:06.893000000
 NUMBER_OF_FRAMES-eng: 7928271
 NUMBER_OF_BYTES-eng: 2927455224
 _STATISTICS_WRITING_APP-eng: mkvmerge v40.0.0 ('Old Town Road + Pony') 64-bit
 _STATISTICS_WRITING_DATE_UTC-eng: 2019-11-30 10:59:25
 DURATION : 01:50:06.893000000
 Stream #0:2(eng), 0, 1/1000: Audio: aac (LC) ([255][0][0][0] / 0x00FF), 48000 Hz, 7.1, fltp (24 bit), 469 kb/s (default)
 Metadata:
 title : input
 _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
 BPS-eng : 3544728
 DURATION-eng : 01:50:06.893000000
 NUMBER_OF_FRAMES-eng: 7928271
 NUMBER_OF_BYTES-eng: 2927455224
 _STATISTICS_WRITING_APP-eng: mkvmerge v40.0.0 ('Old Town Road + Pony') 64-bit
 _STATISTICS_WRITING_DATE_UTC-eng: 2019-11-30 10:59:25
 DURATION : 01:50:06.893000000
 encoder : Lavc58.62.100 aac
cur_dts is invalid st:2 (0) [init:1 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)

....................
....................
[matroska @ 000001b290dfba40] Writing block of size 168 with pts 6606913, dts 6606913, duration 1 at relative offset 550755 in cluster at offset 9940898622. TrackNumber 2, keyframe 1
[matroska @ 000001b290dfba40] end duration = 6606914
[matroska @ 000001b290dfba40] stream 0 end duration = 6606912
[matroska @ 000001b290dfba40] stream 1 end duration = 6606914
[matroska @ 000001b290dfba40] stream 2 end duration = 6606914
frame=158407 fps=357 q=-1.0 Lsize= 9708475kB time=01:50:06.91 bitrate=12037.7kbits/s speed=14.9x 
video:6416483kB audio:3234397kB subtitle:0kB other streams:0kB global headers:2kB muxing overhead: 0.596787%
Input file #0 (input.mkv):
 Input stream #0:0 (video): 158407 packets read (6570478730 bytes); 
 Input stream #0:1 (audio): 7928271 packets read (2927455224 bytes); 7928271 frames decoded (317130840 samples); 
 Total: 8086678 packets (9497933954 bytes) demuxed
Output file #0 (destination.mkv):
 Output stream #0:0 (video): 158407 packets muxed (6570478730 bytes); 
 Output stream #0:1 (audio): 7928271 packets muxed (2927455224 bytes); 
 Output stream #0:2 (audio): 309699 frames encoded (317130840 samples); 309700 packets muxed (384567176 bytes); 
 Total: 8396378 packets (9882501130 bytes) muxed
7928271 frames successfully decoded, 0 decoding errors
[AVIOContext @ 000001b291230100] Statistics: 8 seeks, 39676 writeouts
[aac @ 000001b290dff3c0] Qavg: 3839.668
[AVIOContext @ 000001b290de4080] Statistics: 9554742230 bytes read, 0 seeks



-
i am trying to make my ipcamera stream over webrtc usingnodejs and kurento media server
5 mai 2023, par vishnu nairi am new at webrtc and rtsp, while trying to make a project on webrtc i came to a halt in my code and after weeks of online search adn usng chatgpt am still not able to resolve my problem. I want to stream my ipcamera to webrtc but the code is not working properly.am not above to start the stream.


the code is given below


const wrtc = require('wrtc');
const kurento = require('kurento-client');
const mqtt = require('mqtt');
const node_ffmpeg_stream = require('node-ffmpeg-stream');

const mqttonline_connection = require('../../mqttconnection/online_mqtt_connection');
const clientonline = mqttonline_connection.returnconnection();
const topiconline = mqttonline_connection.topic;

const RTSP_URL = 'rtsp://admin:password@192.168.0.100:554/Streaming/Channels/101?transportmode=unicast&profile=Profile_1';

async function startStreaming() {
 try {
 // Create Kurento client and pipeline
 const kurentoClient = await kurento('ws://localhost:8888/kurento');
 const pipeline = await kurentoClient.create('MediaPipeline');

 // Create WebRTC endpoint
 const webRtcEndpoint = await pipeline.create('WebRtcEndpoint');
 webRtcEndpoint.setMaxVideoRecvBandwidth(10000000); // Set max bandwidth to 10 Mbps

 // Create RTSP source and connect it to the WebRTC endpoint
 const rtspEndpoint = await pipeline.create('RtspEndpoint', {uri: RTSP_URL});
 rtspEndpoint.connect(webRtcEndpoint);

 // Start streaming
 webRtcEndpoint.gatherCandidates();

 // Subscribe to ICE candidate events and send them via MQTT
 webRtcEndpoint.on('OnIceCandidate', event => {
 const candidate = kurento.getComplexType('IceCandidate')(event.candidate);

 clientonline.publish('sdp', JSON.stringify(candidate));
 });

 // Subscribe to ICE connection state events and log them
 webRtcEndpoint.on('IceConnectionStateChanged', event => {
 console.log(`ICE connection state changed to ${event.state}`);
 });

 // Generate SDP offer and send it via MQTT
 const sdpOffer = await webRtcEndpoint.generateOffer();
 clientonline.publish('sdp', JSON.stringify(sdpOffer));

 // Start the RTSP source
 rtspEndpoint.play();

 // Listen for incoming SDP answers via MQTT and set them on the WebRTC endpoint
 clientonline.subscribe('answer');
 clientonline.on('message', (topic, message) => {
 if (topic === 'answer') {
 const sdpAnswer = JSON.parse(message);
 webRtcEndpoint.processAnswer(sdpAnswer);
 }
 });

 // Listen for incoming ICE candidates via MQTT and add them to the WebRTC endpoint
 clientonline.subscribe('candidate');
 clientonline.on('message', (topic, message) => {
 if (topic === 'candidate') {
 const candidate = JSON.parse(message);
 webRtcEndpoint.addIceCandidate(candidate);
 }
 });

 // Handle errors
 webRtcEndpoint.on('Error', error => {
 console.error('WebRTC endpoint error:', error);
 });
 rtspEndpoint.on('Error', error => {
 console.error('RTSP endpoint error:', error);
 });
 pipeline.on('Error', error => {
 console.error('Pipeline error:', error);
 });
 } catch (error) {
 console.error('Error starting streaming:', error);
 }
}

startStreaming();



am getting the error as


Error starting streaming: SyntaxError: Unknown type '[object Object]'
 at getConstructor (/home/user/Desktop/ghome/node_modules/kurento-client/lib/MediaObjectCreator.js:55:17)
 at createConstructor (/home/user/Desktop/ghome/node_modules/kurento-client/lib/MediaObjectCreator.js:74:21)
 at createMediaObject (/home/user/Desktop/ghome/node_modules/kurento-client/lib/MediaObjectCreator.js:140:23)
 at MediaObjectCreator.create (/home/user/Desktop/ghome/node_modules/kurento-client/lib/MediaObjectCreator.js:263:12)
 at startStreaming (/home/user/Desktop/ghome/extra/webrtc/mqttwrtc.js:25:41)
 at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
 type: {
 params: 'rtsp://admin:password@192.168.0.100:554/Streaming/Channels/101?transportmode=unicast&profile=Profile_1',
 type: 'RtspEndpoint'
 }
}