Skip to content
This repository has been archived by the owner on Dec 22, 2020. It is now read-only.

Why is only working on chrome ? #10

Open
panpansh opened this issue May 19, 2019 · 7 comments
Open

Why is only working on chrome ? #10

panpansh opened this issue May 19, 2019 · 7 comments

Comments

@panpansh
Copy link
Contributor

panpansh commented May 19, 2019

  • After some tests,
  • On Chrome it works but by example on firefox I'm stuck here :

FFMPEG:ffmpeg version 4.1.1-1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 8 (Debian 8.2.0-20)
configuration: --prefix=/usr --extra-version=1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared

FFMPEG: libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100

  • After that ffmpeg try to know the source input from browser like that with chrome :

Input #0, matroska,webm, from 'pipe:':
Metadata:
encoder : Chrome
Duration: N/A, start: 1558246182.104000, bitrate: N/A
Stream #0:0(eng): Audio: opus, 48000 Hz, mono, fltp (default)
Stream #0:1(eng): Video: h264 (Constrained Baseline), yuv420p(progressive), 640x480, SAR 1:1 DAR 4:3, 30.30 fps, 30 tbr, 1k tbn, 60 tbc (default)

  • It's a problem between firefox and ffmpeg ?
  • Best Regards
@chenxiaoqino
Copy link
Owner

chenxiaoqino commented May 19, 2019

Hi, this looks like the normal logging information, can you find the actual log that mention some error? Or, is there no more log? (Normally there will be some progress log.)

My first guess is this is caused by a codec issue, i.e., Firefox is uploading a certain format of stream that FFMpeg is not expecting. However, it's always possible to manually specify input codec. (By default, FFMpeg guess the codec, and should already support the one Firefox emits.)

@panpansh
Copy link
Contributor Author

  • loglevel trace is the maximum :

FFMPEG: libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
Splitting the commandline.
Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'trace'.
Reading option '-use_wallclock_as_timestamps' ... matched as AVOption 'use_wallclock_as_timestamps' with argument '1'.
Reading option '-i' ... matched as input url with argument '-'.
Reading option '-c:v' ... matched as option 'c' (codec name) with argument 'libx264'.
Reading option '-preset' ... matched as AVOption 'preset' with argument 'slow'.
Reading option '-tune' ... matched as AVOption 'tune' with argument 'zerolatency'.
Reading option '-crf' ... matched as AVOption 'crf' with argument '22'.
Reading option '-c:a' ... matched as option 'c' (codec name) with argument 'aac'.
Reading option '-ar' ... matched as option 'ar' (set audio sampling rate (in Hz)) with argument '11025'.
Reading option '-b:a' ... matched as option 'b' (video bitrate (please use -b:v)) with argument '32k'.
Reading option '-async' ... matched as option 'async' (audio sync method) with argument '1'.
Reading option '-fflags' ... matched as AVOption 'fflags' with argument '+genpts'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'flv'.
Reading option 'rtmp://domain:1935/live/test0' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option y (overwrite output files) with argument 1.
Applying option loglevel (set logging level) with argument trace.
Applying option async (audio sync method) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input url -.
Successfully parsed a group of options.
Opening an input file: -.
[NULL @ 0x555ac6f02f00] Opening 'pipe:' for reading
[pipe @ 0x555ac6f03940] Setting default whitelist 'crypto'

  • as you can see the loglevel explain args :)
  • did you know how can we force with a specified codec ?

@panpansh
Copy link
Contributor Author

  • Yes it's a problem with firefox encoded source because this what I get on chrome :

...
Successfully parsed a group of options.
Opening an input file: -.
[NULL @ 0x55cd41a44f00] Opening 'pipe:' for reading
[pipe @ 0x55cd41a45940] Setting default whitelist 'crypto'

**** STUCK HERE ON FIREFOX ****

FFMPEG:Probing h264 score:51 size:2048
Probing matroska,webm score:100 size:2048
Probing mp3 score:1 size:2048
[matroska,webm @ 0x55cd41a44f00] 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 @ 0x55cd41a44f00] Before avformat_find_stream_info() pos: 199 bytes read:16421 seeks:0 nb_streams:2

FFMPEG:[AVBSFContext @ 0x55cd41ab08c0] nal_unit_type: 9(AUD), nal_ref_idc: 0
[AVBSFContext @ 0x55cd41ab08c0] nal_unit_type: 7(SPS), nal_ref_idc: 3

FFMPEG:[AVBSFContext @ 0x55cd41ab08c0] nal_unit_type: 8(PPS), nal_ref_idc: 3
[AVBSFContext @ 0x55cd41ab08c0] nal_unit_type: 6(SEI), nal_ref_idc: 0
Last message repeated 1 times
[AVBSFContext @ 0x55cd41ab08c0] nal_unit_type: 5(IDR), nal_ref_idc: 3

FFMPEG: Last message repeated 3 times
[h264 @ 0x55cd41a48ec0] nal_unit_type: 9(AUD), nal_ref_idc: 0
...

@chenxiaoqino
Copy link
Owner

chenxiaoqino commented May 19, 2019

I guess the issue is with socket.io, as the log essentially tells that FFMpeg is not receiving any data. Can you try to add some console.log to

socket.on('binarystream',function(m){
    ....
    feedStream(m);
}

part on the server, and possibly also near the

mediaRecorder.ondataavailable = function(e) {
    socket.emit("binarystream",e.data);
    ...
}

on the client, to debug and verify there is indeed data going through?

If there is data from client side, but not received on the server side, we're in deep trouble as socket.io is not working as intended. If there's no data being sent by the client at all, we may debug why Firefox's getUserMedia is not sending video traffic...

@panpansh
Copy link
Contributor Author

panpansh commented May 20, 2019

yes exactly my friend,
mediaRecorder.ondataavailable never called on firefox (66.0.5 (64 bits) updated just now but same).

the problem is mediaRecorder.start(0);
it doesn't accept 0 value
when I try with 10 or 100 or 1000 (ms) it's lagging.
It's maybe not a good approach.

Best Regards

@panpansh
Copy link
Contributor Author

Is it possible to send the stream directly via socketio stream ?

@chenxiaoqino
Copy link
Owner

chenxiaoqino commented May 21, 2019 via email

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants