Code Monkey home page Code Monkey logo

Comments (38)

mdhiggins avatar mdhiggins commented on June 4, 2024 1

Merged the change in for now but I suspect this won't last very long since it looks like they intend to migrate to alpine anyway, all the radarr tags are on alpine already and develop has been on alpine for a bit, will probably need to revert back to the old approach once they move off ubuntu unless they update their ffmpeg container as well

from sonarr-sma.

lizardfish0 avatar lizardfish0 commented on June 4, 2024

I've got this working in a fork now, curious if you have an opinion on this, is there any reason not the make the linuxserver/ffmpeg image the default source of ffmpeg? Seems like a nice option since it'll share a maintainer and a base image with the sonarr container.

from sonarr-sma.

mdhiggins avatar mdhiggins commented on June 4, 2024

Did not know linuxserver maintained an FFMPEG container, would be great to make this the main source of FFMPEG, care to turn your fork into a pull request?

from sonarr-sma.

mdhiggins avatar mdhiggins commented on June 4, 2024

Looks like pull request is working for main branch but crashing for develop branch, suspect related to develop branch being alpine based, trying to sort out why currently

from sonarr-sma.

mdhiggins avatar mdhiggins commented on June 4, 2024

Looks like the ttf-dejavu package was throwing an error

from sonarr-sma.

lizardfish0 avatar lizardfish0 commented on June 4, 2024

Does the develop tag not use the develop git branch to build? I didn't touch anything there but I'm likely misunderstanding how the git actions work.

from sonarr-sma.

lizardfish0 avatar lizardfish0 commented on June 4, 2024

And yeah, I figured there would be clear issues layering a 22.04 ffmpeg on alpine. Might be easiest to have the develop tag pull static binaries by default.

Then your options will be
> Want hwaccel? Use latest.
> Want sonarr 4.0? Use develop, but you won't get hwaccel.
> Something else? Make it work with build + extra_packages.

from sonarr-sma.

lizardfish0 avatar lizardfish0 commented on June 4, 2024

Left a comment on the linuxserver/ffmpeg repo but it doesn't seem like they're interested in supporting this usecase. I may try and throw together an ffmpeg container that's usable here.

from sonarr-sma.

lizardfish0 avatar lizardfish0 commented on June 4, 2024

Thank you!

from sonarr-sma.

mdhiggins avatar mdhiggins commented on June 4, 2024

Unfortunately looks like the time has come, they have rebased the main container to alpine so had to revert all this back

from sonarr-sma.

VampiricAlien avatar VampiricAlien commented on June 4, 2024

It could be a issue with me but I get the following errors

`vaapi hwaccel is supported by this ffmpeg build and will be used [hwaccels].
===========WARNING===========
The encoder you have chosen h265vaapi (hevc_vaapi) is not listed as supported in your FFMPEG build, conversion will likely fail, please use a build of FFMPEG that supports hevc_vaapi or choose a different encoder.
Other encoders your current FFMPEG build does support for codec hevc:
['hevc']
===========WARNING===========
===========WARNING===========
The encoder you have chosen srt (srt) is not listed as supported in your FFMPEG build, conversion will likely fail, please use a build of FFMPEG that supports srt or choose a different encoder.
===========WARNING===========

ffmpeg version 6.1 Copyright (c) 2000-2023 the FFmpeg developers built with gcc 13.2.1 (Alpine 13.2.1_git20231014) 20231014 configuration: --prefix=/usr --disable-librtmp --disable-lzma --disable-static --disable-stripping --enable-avfilter --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libdrm --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libmp3lame --enable-libopenmpt --enable-libopus --enable-libplacebo --enable-libpulse --enable-librav1e --enable-librist --enable-libsoxr --enable-libsrt --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-lto=auto --enable-lv2 --enable-openssl --enable-pic --enable-postproc --enable-pthreads --enable-shared --enable-vaapi --enable-vdpau --enable-version3 --enable-vulkan --optflags=-O3 --enable-libjxl --enable-libsvtav1 --enable-libvpl libavutil 58. 29.100 / 58. 29.100 libavcodec 60. 31.102 / 60. 31.102 libavformat 60. 16.100 / 60. 16.100 libavdevice 60. 3.100 / 60. 3.100 libavfilter 9. 12.100 / 9. 12.100 libswscale 7. 5.100 / 7. 5.100 libswresample 5. 0.100 / 5. 0.100 libpostproc 57. 3.100 / 57. 3.100

Everything was working well before the V4 update as I was using my own Ubuntu ffmpeg build but I now use the default settings
SMA_UPDATE: true SMA_USE_REPO: true SMA_HWACCEL: true

Reading commends and finding no answers or prebuild binaries, what can I do?

from sonarr-sma.

mdhiggins avatar mdhiggins commented on June 4, 2024

Looks like the ffmpeg binary doesn't include VAAPI. You'll need to find an alternate source that has it and is alpine compatible

from sonarr-sma.

mdhiggins avatar mdhiggins commented on June 4, 2024

Actually I just did a fresh pull and used SMA_USE_REPO and I'm getting a version of ffmpeg that supports hevc_vaapi

ffmpeg version 6.1 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 13.2.1 (Alpine 13.2.1_git20231014) 20231014
  configuration: --prefix=/usr --disable-librtmp --disable-lzma --disable-static --disable-stripping --enable-avfilter --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libdrm --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libmp3lame --enable-libopenmpt --enable-libopus --enable-libplacebo --enable-libpulse --enable-librav1e --enable-librist --enable-libsoxr --enable-libsrt --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-lto=auto --enable-lv2 --enable-openssl --enable-pic --enable-postproc --enable-pthreads --enable-shared --enable-vaapi --enable-vdpau --enable-version3 --enable-vulkan --optflags=-O3 --enable-libjxl --enable-libsvtav1 --enable-libvpl
  libavutil      58. 29.100 / 58. 29.100
  libavcodec     60. 31.102 / 60. 31.102
  libavformat    60. 16.100 / 60. 16.100
  libavdevice    60.  3.100 / 60.  3.100
  libavfilter     9. 12.100 /  9. 12.100
  libswscale      7.  5.100 /  7.  5.100
  libswresample   5.  0.100 /  5.  0.100
  libpostproc    57.  3.100 / 57.  3.100
Encoders:
 V..... = Video
 A..... = Audio
 S..... = Subtitle
 .F.... = Frame-level multithreading
 ..S... = Slice-level multithreading
 ...X.. = Codec is experimental
 ....B. = Supports draw_horiz_band
 .....D = Supports direct rendering method 1
 ------
 V..... h264_qsv             H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (Intel Quick Sync Video acceleration) (codec h264)
 V..... h264_v4l2m2m         V4L2 mem2mem H.264 encoder wrapper (codec h264)
 V....D h264_vaapi           H.264/AVC (VAAPI) (codec h264)
...
 V..... hevc_qsv             HEVC (Intel Quick Sync Video acceleration) (codec hevc)
 V..... hevc_v4l2m2m         V4L2 mem2mem HEVC encoder wrapper (codec hevc)
 V....D hevc_vaapi           H.265/HEVC (VAAPI) (codec hevc)

from sonarr-sma.

VampiricAlien avatar VampiricAlien commented on June 4, 2024

(Alpine 13.2.1_git20231014) 20231014 is the same that I am using?

Are you able to upload ffmpeg here?

from sonarr-sma.

mdhiggins avatar mdhiggins commented on June 4, 2024

Just run -encoders and confirm if it's there or not first

from sonarr-sma.

VampiricAlien avatar VampiricAlien commented on June 4, 2024
V....D hevc_vaapi           H.265/HEVC (VAAPI) (codec hevc)
S..... srt                  SubRip subtitle (codec subrip)
Hardware acceleration methods:
vdpau
vaapi
qsv
drm
vulkan

It's there and supported, something must get missed on setup?

from sonarr-sma.

mdhiggins avatar mdhiggins commented on June 4, 2024

Not sure what would be getting missed if its there?
You sure you're pointing to the same ffmpeg binary? That could potentially account for it, verify that the ffmpeg binary you're pointing to in autoProcess.ini is the same as which ffmpeg from what you're running

Cause the warning you were getting

The encoder you have chosen h265vaapi (hevc_vaapi) is not listed as supported in your FFMPEG build, conversion will likely fail, please use a build of FFMPEG that supports hevc_vaapi or choose a different encoder.
Other encoders your current FFMPEG build does support for codec hevc:
['hevc']

Comes from the script basically running -codecs command and check to make sure its there; if you're seeing that error then its not there. The -codecs output for HEVC should show

 DEV.L. hevc                 H.265 / HEVC (High Efficiency Video Coding) (decoders: hevc hevc_qsv hevc_v4l2m2m) (encoders: libx265 hevc_qsv hevc_v4l2m2m hevc_vaapi)

In which case you don't get the error above

from sonarr-sma.

mdhiggins avatar mdhiggins commented on June 4, 2024

Actually, just kidding, this error is just wrong, looks like in newer builds of FFMPEG they removed a trailing space from the way this info is reported and it was breaking the regex string, just pushed an update that will fix the error, though the error itself was just a warning and shouldn't have impacted function

But either way, try and update SMA and see if its better

mdhiggins/sickbeard_mp4_automator@50548e4

from sonarr-sma.

VampiricAlien avatar VampiricAlien commented on June 4, 2024

Does the fix apply to docker sma-mod? I think copying the new files is enough.

/usr/bin/ffmpegI used to have the path setup so it never downloaded it and just used local.

Is it possible to have everything local, within the mod? I am thinking that would be too much automation?

from sonarr-sma.

VampiricAlien avatar VampiricAlien commented on June 4, 2024
[out#0/matroska @ 0x7f937a19f140] Codec AVOption x265-params (set the x265 configuration using a :-separated list of key=value parameters) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
[out#0/matroska @ 0x7f937a19f140] Codec AVOption preset (Encoding preset) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.

The "preset" option in ffmpeg allows you to choose a pre-defined set of encoding parameters that optimize the output quality and compression efficiency. By using a preset, you don't have to manually set all the individual options yourself, as the preset will take care of it for you.

To resolve this warning, you can try adding the "preset" option to your encoding command and specify a suitable preset (such as "medium" or "fast") that matches your desired trade-off between encoding speed and output quality. Here's an example of how you can specify the preset:

Manual.py worked without error but using postSonarr.py (auto) gives that error but i have it set, preset = veryslow

also this is from the logs
Traceback (most recent call last): File "/usr/local/sma/resources/mediaprocessor.py", line 2316, in convert for timecode, debug in conv: File "/usr/local/sma/converter/__init__.py", line 329, in convert for timecode, debug in self.ffmpeg.convert(outfile, File "/usr/local/sma/converter/ffmpeg.py", line 798, in convert raise FFMpegConvertError('Exited with code %d' % p.returncode, cmd, converter.ffmpeg.FFMpegConvertError: <exception str() failed>

[vost#0:0/hevc_vaapi @ 0x7f937a1b0180] Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height. Error while filtering: Function not implemented [out#0/matroska @ 0x7f937a19f140] Nothing was wr

This only seems to happen using postSonarr.py?

from sonarr-sma.

mdhiggins avatar mdhiggins commented on June 4, 2024

They all use the same mediaprocessor.py so no reason postSonarr should be different. Share some full logs of one that worked versus one that didn't cause it's probably something else

from sonarr-sma.

VampiricAlien avatar VampiricAlien commented on June 4, 2024

I've lost both logs as they were overwritten, I'll have to wait until it goes to auto process it.

I have notice
`[90-sma-config] Updating SMA from github master

fatal: detected dubious ownership in repository at '/usr/local/sma'

To add an exception for this directory, call:

git config --global --add safe.directory /usr/local/sma`

That's from the docker update from 2 days ago.

And this time it never downloaded or setup ffmpeg or python, 30 minutes into it there is nothing in the container logs. I always see the set up within the first 10 minutes of a restart.
using /usr/local/sma/venv/bin/python3 /usr/local/sma/config/manual.py works without issue.

I saw this in sornarr v4 change log ffprobe has replaced MediaInfo ffprobe would already be installed in the container? I always thought ffmpeg and ffprobe was together?

from sonarr-sma.

mdhiggins avatar mdhiggins commented on June 4, 2024

Manual.py can't function without FFMPEG so not sure how that's possible unless FFMPEG is in fact present as well. They are typically downloaded together though I'm not sure where or how Sonarr installs it but it's possible it's included with the parent container now but if manual.py works then FFMPEG must be present

from sonarr-sma.

VampiricAlien avatar VampiricAlien commented on June 4, 2024

That's what I am also thinking. furthermore, the path for ffmpeg is /usr/local/bin/ffmpeg , if I was to set the path in the container to /usr/local/sma/ffmpeg and leave the folder empty then it should trigger a download of ffmpeg and setup with the needed files.
/usr/local/bin/ffmpeg -> /usr/local/sma/ffmpeg

I won't be able to try that until much later.

from sonarr-sma.

VampiricAlien avatar VampiricAlien commented on June 4, 2024

Setting ffmpeg path to empty folder on host: ERROR: ffmpeg-6.1-r1: failed to rename usr/bin/.apk.6ef7f74d5360a18facabe469aca9c6dadb6c7c153559ac2d to usr/bin/ffmpeg.

Downloaded ffmpeg after path set

ffmpeg version 6.1-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 8 (Debian 8.3.0-6)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
  libavutil      58. 29.100 / 58. 29.100
  libavcodec     60. 31.102 / 60. 31.102
  libavformat    60. 16.100 / 60. 16.100
  libavdevice    60.  3.100 / 60.  3.100
  libavfilter     9. 12.100 /  9. 12.100
  libswscale      7.  5.100 /  7.  5.100
  libswresample   4. 12.100 /  4. 12.100
  libpostproc    57.  3.100 / 57.  3.100
Hardware acceleration methods:
vdpau

No VAAPI support in that build, Support should have been added during setup.

Sonarr does have it's own copy of ffmpeg, you can see that in the output

ffmpeg version 6.1-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 8 (Debian 8.3.0-6)
ffmpeg version 6.1 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 13.2.1 (Alpine 13.2.1_git20231014) 20231014

from sonarr-sma.

mdhiggins avatar mdhiggins commented on June 4, 2024

Yeah they probably started including it in the base image since Sonarr is using ffprobe

I tweaked the startup script which would previously not try to download ffmpeg if which ffmpeg returned valid results to now checking if the SMA_FFMPEG_PATH and SMA_PROBE_PATH variables have files that exist instead, this should let you set an alternative path if you didn't want to use the included one

from sonarr-sma.

VampiricAlien avatar VampiricAlien commented on June 4, 2024

If those paths are not set, the following error:

mv: cannot overwrite directory '' with non-directory
chmod: cannot access '': No such file or directory
ERROR: unable to select packages:
  py3-virutalenv (no such package):
    required by: world[py3-virutalenv]
ERROR: unable to select packages:
  so:libtinyxml2.so.10 (no such package):
    required by: libmediainfo-23.11-r1[so:libtinyxml2.so.10]
[90-sma-config] Creating python virtual environment and installing requirements
/etc/s6-overlay/s6-rc.d/init-sma-config/run: line 91: python3: command not found
/etc/s6-overlay/s6-rc.d/init-sma-config/run: line 92: /usr/local/sma/venv/bin/python3: No such file or directory
/etc/s6-overlay/s6-rc.d/init-sma-config/run: line 93: /usr/local/sma/venv/bin/pip: No such file or directory

while the container was started, ran this commandapk add --no-cache python3 py3-cryptography py3-pip py3-virtualenv this can not happen each time.

The script isn't adding VAAPI or other HA to ffmpeg like it used too.

SMA_FFMPEG_PATH 	/usr/local/sma/config/ff/ffmpeg (is located in folder)
SMA_HWACCEL 	true
SMA_PATH 	/usr/local/sma
SMA_PROBE_PATH 	/usr/local/sma/config/ff/ffprobe (Not found in folder)
SMA_UPDATE 	true
SMA_USE_REPO 	true

from sonarr-sma.

mdhiggins avatar mdhiggins commented on June 4, 2024

Paths should never be nothing, having it set to nothing will break things down stream

ERROR: unable to select packages:
  py3-virutalenv (no such package):
    required by: world[py3-virutalenv]

I fixed this error today, make sure you're using the latest pull

Script never added 'vaapi', that has to come from your ffmpeg binary and the johnvansickle ffmpeg builds never supported vaapi
Using the one from the repo should include vaapi but it looks like the run script wasn't detecting the repo ffmpeg so both were being installed (one at /usr/local/bin and one at /usr/bin) so I've fixed this. Container rebuilding now

from sonarr-sma.

VampiricAlien avatar VampiricAlien commented on June 4, 2024

Brings back to the first error

out#0/matroska @ 0x7f49cf8e2940] Codec AVOption preset (Encoding preset) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> hevc (hevc_vaapi))
  Stream #0:1 -> #0:1 (aac (native) -> eac3 (native))
  Stream #1:0 -> #0:2 (subrip (srt) -> subrip (srt))
Press [q] to stop, [?] for help
[hevc_vaapi @ 0x7f49cf840c00] No usable encoding profile found.
[vost#0:0/hevc_vaapi @ 0x7f49cf8febc0] Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height.
Error while filtering: Function not implemented
[Video]
codec = h265vaapi
max-bitrate = 0
bitrate-ratio = 0.7
max-width = 0
preopts = -extra_hw_frames, 10
crf = -0
preset = slow
codec-parameters = 
dynamic-parameters = True
profile = main10
max-level = 5.2
pix-fmt =
prioritize-source-pix-fmt = True
filter = 
force-filter = False
crf-profiles = 

I have changed all video settings but no effect, same error.
Using ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi -hwaccel_device /dev/dri/renderD128 -i 'input' -vf 'format=nv12|vaapi,hwupload' -c:v hevc_vaapi 'output.mkv' worked but isn't apart of the script. I am out of ideas, open to suggestions.

from sonarr-sma.

mdhiggins avatar mdhiggins commented on June 4, 2024

Does removing the bitrate ratio setting have any impact?

from sonarr-sma.

mdhiggins avatar mdhiggins commented on June 4, 2024

Also post the full command that's failing if you could

from sonarr-sma.

VampiricAlien avatar VampiricAlien commented on June 4, 2024

pix-fmt = p010le, yuv420p10le makes the manual way work again but the error message never said about format? I also in my testing left this blank for the script to fill in the blank, not sure if that ever happened.

The changes you've made in the past few days wasn't a loss, it should help minimise errors later on with all users.

from sonarr-sma.

mdhiggins avatar mdhiggins commented on June 4, 2024

Sweet, well that's progress then. The way the vaapi class currently works does default to nv12 for the inter-hardware upload format if nothing is specified, but having the prioritize-source-pix-fmt = True might have been passing the original pix-fmt of the source material and thus blocking that nv12 default (without the logs its hard to say)

By manually setting a pix-fmt you've probably changed the value that gets put in there (again logs would be helpful to see what finally got passed to ffmpeg)

from sonarr-sma.

VampiricAlien avatar VampiricAlien commented on June 4, 2024

I notice when looking at the logs that yuv420p was listed in output and VAAPI on my device doesn't support yuv420p. The reason yuv420p was on the list is so if something was already in HEVC with pix format yuv420p, it would copy and not redo. The script as you know will pick the first option if the option is not listed in settings.

the odd thing was yuv420p was added to settings months ago (at the end of the list) but only started to have the issue this week.

This supports what you said about nv12 not being passed on. I was stuck trying to understand the error message and never looked closely at the output.

With error:

    "format": "mkv",
    "video": {
        "codec": "h265vaapi",
        "map": 0,
        "bitrate": 5064.6533,
        "crf": 0,
        "maxrate": null,
        "bufsize": null,
        "level": 5.2,
        "profile": "main",
        "preset": "slow",
        "pix_fmt": null,
        "field_order": "progressive",
        "width": null,
        "filter": null,
        "params": null,
        "framedata": {
            "pix_fmt": "yuv420p"
        },
        "bsf": null,
        "debug": "video.profile",
        "title": "FHD",
        "device": "sma"

-vf "format=yuv420p|vaapi,hwupload,scale_vaapi=format=yuv420p"

Without error:

    "format": "mkv",
    "video": {
        "codec": "h265vaapi",
        "map": 0,
        "bitrate": 4531.359399999999,
        "crf": 0,
        "maxrate": null,
        "bufsize": null,
        "level": 5.2,
        "profile": "main10",
        "preset": "slow",
        "pix_fmt": "p010le",
        "field_order": "progressive",
        "width": null,
        "filter": null,
        "params": null,
        "framedata": null,
        "bsf": null,
        "debug": "video.profile.pix_fmt",
        "title": "FHD",
        "device": "sma"

-vf "format=p010le|vaapi,hwupload,scale_vaapi=format=p010le"

from sonarr-sma.

mdhiggins avatar mdhiggins commented on June 4, 2024

Sounds like you need to take yuv420p off your pix_fmt list

from sonarr-sma.

VampiricAlien avatar VampiricAlien commented on June 4, 2024

Already done, not sure why it started to play up now and not months ago but it's working again. Thank you.

I was looking around and found that nothing comes close (in terms of this script) to what this script you've created can do!

from sonarr-sma.

mdhiggins avatar mdhiggins commented on June 4, 2024

Happy to help, the hardware acceleration stuff is just particularly challenging as the options are quite complex and lots of variability between hardware. Also very hard to test since I often don't have the hardware readily available

from sonarr-sma.

VampiricAlien avatar VampiricAlien commented on June 4, 2024

Yes, you're right. Hardware acceleration is indeed challenging plus the availability and support for hardware acceleration features can differ across devices as devices soon become outdated. You always make it work no matter the issue.

from sonarr-sma.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.