wyattblue / auto-editor Goto Github PK
View Code? Open in Web Editor NEWAuto-Editor: Efficient media analysis and rendering
Home Page: https://auto-editor.com
License: The Unlicense
Auto-Editor: Efficient media analysis and rendering
Home Page: https://auto-editor.com
License: The Unlicense
I love this script, already used it for a video and it saved me so much time.
As I create programming tutorials it often occurs that I showcase something without explicitely saying anything, for example I'm typing some lines of code, scroll up and down or switch between different windows.
So I thought it would be a great addition to have a feature that allows to differ between "silence + inactivity" and "silence + activity". Is there already any workaround?
That feature would make this tool even greater :)
When using the preview tag, the new length given is incorrect.
$ python3 auto-editor.py example.mp4 -v 1 -s 1 --preview
Old length: 42.4 secs (0:00:42)
New length: 1.4 secs (0:00:01)
Number of clips: 13
Smallest clip length: 0.0 secs (1/30.0 frames)
Largest clip length: 22.4 secs (0:00:22)
Average clip length: 3.3 secs (0:00:03)
The length of the file created without the preview tag is 42 seconds, as expected, but using the preview tag erroneously tells us that the file will be 1 second.
This happens with:
$ python3 auto-editor.py --debug
Python Version: 3.8.2 64-bit
Platform: Linux
Auto-Editor Version: 20w29a
hi,
Big thanks for making this.
Anyway to add a feature to export to davinci resolve similar to the export to premiere feature.
C:\WINDOWS\system32>auto-editor "https://www.youtube.com/watch?v=bgA0q0TwLIQ"
Warning! You have the 32-bit version of Python, which means you won't be able to handle long videos.
URL detected, using youtube-dl to download from webpage.
[youtube] bgA0q0TwLIQ: Downloading webpage
[youtube] bgA0q0TwLIQ: Downloading MPD manifest
[download] https-www-youtube-com-watch-v-bgA0q0TwLIQ.f135 has already been downloaded
[download] 100% of 3.50MiB
[download] https-www-youtube-com-watch-v-bgA0q0TwLIQ.f140 has already been downloaded
[download] 100% of 561.87KiB
[ffmpeg] Merging formats into "https-www-youtube-com-watch-v-bgA0q0TwLIQ.mp4"
ERROR: file:https-www-youtube-com-watch-v-bgA0q0TwLIQ.f135: No such file or directory
Warning! Couldn't automatically detect audio bitrate.
Warning! frame rate detection failed.
If your video has a variable frame rate, ignore this message.
Warning! ffprobe had an invalid output.
Warning! Couldn't automatically detect the video codec.
Error! Audio track not found!
C:\WINDOWS\system32>
Hi, Wyatt.
I'm very interested in your project. I'm working on similar things also.
Now, I have some question, I tried to use ffmpeg -f concat -i input.txt output.mp4
it works, but the end of the audio will always face some issues like drop frame, render quality problem, out of sync and etc.
Second, may I know more about the detail about each function in the code?
Third, I would like to know why you choose to split each frame instead of using function provided by ffmpeg such as trim, segment, concat.
Third, I hope to improve this project and bring it further.
Can we discuss more detail about it? Hope to hear from you soon.
Regards,
Ming
It would be nice to be able to export/output to a file type that when opened in Adobe Premiere, has cuts that you could change.
.prproj
, the main format for adobe premiere, is a binary format so it won't work.
(Make sure you're using the latest version)
What went wrong
Entering multiple input files and setting --combine_files
exposes a missing file exception. It looks like the video is expected in a temp directory.
OS X 10.15.7
auto-editor install from github b03338f
(video) ➜ pybrain_1_1 git:(master) ✗ auto-editor GMT20201102-1*.mp4 --combine_files --min_clip_length 5 --min_cut_length 10 -p slow --frame_margin 12 -o edwin_day1_afternoon_cut.mp4
ffmpeg version 4.3 Copyright (c) 2000-2020 the FFmpeg developers
built with Apple clang version 11.0.0 (clang-1100.0.33.8)
configuration: --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-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libaom --enable-libgsm --enable-appkit --enable-avfoundation --enable-coreimage --enable-audiotoolbox
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
[concat @ 0x7fcde0008200] Impossible to open '/var/folders/q9/sjm692g55wdcdmgcw7fhrp700000gn/T/tmpwhw93muz/GMT20201102-110543_pybrain--I_1422x878.mp4'
/var/folders/q9/sjm692g55wdcdmgcw7fhrp700000gn/T/tmpwhw93muz/combines.txt: No such file or directory
Warning! Couldn't automatically detect audio bitrate.
Warning! frame rate detection failed.
If your video has a variable frame rate, ignore this message.
Warning! ffprobe had an invalid output.
Error! Audio track not found!
Does the example video work? (if applicable)
Let me know where it installs to and I'll let you know. The same video files work fine without --combine_files so I think the files are ok.
What does the program output when --debug
is appended to your command/use case
Python Version: 3.7.8 64-bit
Platform: Darwin 19.6.0
FFmpeg path: /Users/johan/conda/envs/video/lib/python3.7/site-packages/auto_editor/mac-ffmpeg/bin/ffmpeg
FFmpeg version: 4.3
Auto-Editor version 20w45a
ffmpeg version 4.3 Copyright (c) 2000-2020 the FFmpeg developers
built with Apple clang version 11.0.0 (clang-1100.0.33.8)
configuration: --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-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libaom --enable-libgsm --enable-appkit --enable-avfoundation --enable-coreimage --enable-audiotoolbox
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
[concat @ 0x7fc0ec009a00] Impossible to open '/var/folders/q9/sjm692g55wdcdmgcw7fhrp700000gn/T/tmpafg84kt0/GMT20201102-110543_pybrain--I_1422x878.mp4'
/var/folders/q9/sjm692g55wdcdmgcw7fhrp700000gn/T/tmpafg84kt0/combines.txt: No such file or directory
Warning! Couldn't automatically detect audio bitrate.
Setting audio bitrate to 500k
Warning! frame rate detection failed.
If your video has a variable frame rate, ignore this message.
Warning! ffprobe had an invalid output.
combined.mp4: No such file or directory
Error! Audio track not found!```
I don't plan to use zoom capabilities, but in the documentation seems to be a mismatch:
Command | --zoom_threshold
type | float_type
range | 0 to 1, 0% to 100%
default | 2, 200%
where values go from 0 to 1 (0% to 100%) and default is 2 (200%)
I know that auto-editor should probably stay true to what it was supposed to do in the beginning, convert YouTube videos. My screencasts will also eventually end up on YouTube, but while editing a little more flexibility with formats would be great. For example, I would prefer if auto-editor would be configurable enough to also handle different video and audio codecs. FFMPEG can already do this. Since I use OBS with the StreamFX plugin I can record to almost any format combo.
https://github.com/Xaymar/obs-StreamFX
Right now I record to MKV container with PNG and 16 BIT Wave (pcm_s16le) so essentially lossless.
It would be great if the whole cutting process would internally work with lossless formats, too, so for audio not with a bit rate of 160 Kbps. (Although it would also be nice to make the bit rate configurable).
Since the standard process creates JPGs of all the frames, the question would be: Would it be possible to record in a format that would make the first step obsolete. Meaning, if I already record to PNGs in a MKV container, can the script not recognize that and go immediately to step 2 and use the lossless PNGs?
Or maybe there could be a convention saying that a certain combination of video and audio format will give the best result in terms of speed or quality. StreamFX also allows to use Apple ProRes.
So a lot of thoughts in this issue. But I'm looking to start a conversation and see how far the usefulness could be pushed or if I just have to find other ways to do this, because my work flow is just not common enough.
I'm tring to use the software on a video file on the computer but it's fail. I tried also to run the example video and got the same result. the problem on "subprosses" so i tried also to run the command on cmd (I'm using windows) and got "0" as output.
>>py auto-editor.py example.mp4
Running from fastVideo.py
Traceback (most recent call last):
File "auto-editor.py", line 279, in <module>
outFile = fastVideo(INPUT_FILE, newOutput, args.silent_threshold,
File "C:\Users\david\Desktop\silence\scripts\fastVideo.py", line 40, in fastVideo
tracks = vidTracks(videoFile)
File "C:\Users\david\Desktop\silence\scripts\usefulFunctions.py", line 87, in vidTracks
process = subprocess.Popen(cmd, stdout=subprocess.PIPE,
File "C:\Program Files (x86)\Python38-32\lib\subprocess.py", line 854, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Program Files (x86)\Python38-32\lib\subprocess.py", line 1307, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
Run auto-editor.py --debug
and paste the output.
[main 2020-07-12T23:01:28.275Z] update#setState idle
(node:12304) Electron: Loading non context-aware native modules in the renderer process is deprecated and will stop working at some point in the future, please see https://github.com/electron/electron/issues/18397 for more information
(node:12304) Electron: Loading non context-aware native modules in the renderer process is deprecated and will stop working at some point in the future, please see https://github.com/electron/electron/issues/18397 for more information
(node:12304) Electron: Loading non context-aware native modules in the renderer process is deprecated and will stop working at some point in the future, please see https://github.com/electron/electron/issues/18397 for more information
(node:12304) Electron: Loading non context-aware native modules in the renderer process is deprecated and will stop working at some point in the future, please see https://github.com/electron/electron/issues/18397 for more information
(node:12304) Electron: Loading non context-aware native modules in the renderer process is deprecated and will stop working at some point in the future, please see https://github.com/electron/electron/issues/18397 for more information
(node:12304) Electron: Loading non context-aware native modules in the renderer process is deprecated and will stop working at some point in the future, please see https://github.com/electron/electron/issues/18397 for more information
(node:12304) Electron: Loading non context-aware native modules in the renderer process is deprecated and will stop working at some point in the future, please see https://github.com/electron/electron/issues/18397 for more information
(node:12304) Electron: Loading non context-aware native modules in the renderer process is deprecated and will stop working at some point in the future, please see https://github.com/electron/electron/issues/18397 for more information
(node:3476) Electron: Loading non context-aware native modules in the renderer process is deprecated and will stop working at some point in the future, please see https://github.com/electron/electron/issues/18397 for more information
(node:3476) Electron: Loading non context-aware native modules in the renderer process is deprecated and will stop working at some point in the future, please see https://github.com/electron/electron/issues/18397 for more information
[main 2020-07-12T23:01:58.295Z] update#setState checking for updates
[main 2020-07-12T23:01:58.400Z] update#setState idle
Add the ability to specify ffmpeg path to --my_ffmpeg argument.
I wonder if the auto-editor uses multi-core when processing the video part?
From the log, the first error I could find was ValueError: Data exceeds wave file size limit
, raised by scipy
, specifically in line 78 of splitAudio
:
wavfile.write(filename, SAMPLE_RATE, outputAudioData)
In .TEMP
, it generates the output, however it is missing the audio, most likely due to the wavfile being unable to get created. The .wav
files in this folder are also empty, but there are 4 in .CACHE
, all 2.71GB
in size.
I'm assuming the problem here is that the file is too long, but in that case then the program would have a limit on the length of the video. My input is 4:13:31 long as well.
Is there a way to circumvent this? Maybe adding an option that allows for splitting a video into 2 if it gets too long, or maybe something like --split_every 120
which would mean split every 2 hours (120 minutes). Having to manually split my video into segments takes time due to re-encoding, and since the script effectively reconstructs the video from images and wav files, it seems easier to do it during construction.
Traceback (most recent call last):
File "auto-editor.py", line 277, in <module>
outFile = fastVideoPlus(INPUT_FILE, newOutput, args.silent_threshold,
File "C:\auto-editor\scripts\fastVideoPlus.py", line 141, in fastVideoPlus
mySpeed = NEW_SPEED[state]
TypeError: list indices must be integers or slices, not NoneType
Tested fine when not using any optional argument, but when I tried to speed up the video to 1.25 by putting -v 1.25
, this error came up. Using the latest version 20w27b.
Most of the videos at https://www.youtube.com/channel/UCrS8hadqvQ59yVv1S4gcr3g/videos are currently only postproduced using autor-editor (and ffmpeg-normalize)
Thanks guys!
the problem occurs few cases:
Traceback (most recent call last):
File "auto-editor.py", line 279, in <module>
outFile = fastVideo(INPUT_FILE, newOutput, args.silent_threshold,
File "C:\Users\avivs\Desktop\auto-editor-master\scripts\fastVideo.py", line 61, in fastVideo
__, audioData = read(f'{TEMP}/{i}.wav')
File "C:\Users\avivs\Desktop\auto-editor-master\scripts\wavfile.py", line 513, in read
data = _read_data_chunk(fid, format_tag, channels, bit_depth,
File "C:\Users\avivs\Desktop\auto-editor-master\scripts\wavfile.py", line 404, in _read_data_chunk
data = numpy.fromfile(fid, dtype=dtype, count=n_samples)
MemoryError: Unable to allocate 560. MiB for an array with shape (293801902,) and data type int16
Run auto-editor.py --debug
and paste the output.
Python Version: 3.8.1 32-bit
Platform: Windows
Auto-Editor Version: 20w28a
When using fastVideoPlus.py I get this error:
PS C:\Videos\obs> py .\auto-editor.py .\2020-06-28_02-42-54.mkv -s 10 -o out-10.mkv -m 5 --no_open --verbose
Running from fastVideoPlus.py
ffmpeg version 4.2.3 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.3.1 (GCC) 20200523
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-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
Input #0, matroska,webm, from '.\2020-06-28_02-42-54.mkv':
Metadata:
ENCODER : Lavf58.29.100
Duration: 00:00:01.57, start: -0.007000, bitrate: 53 kb/s
Stream #0:0: Video: h264 (Main), yuv420p(tv, bt470bg/unknown/unknown, progressive), 1280x720 [SAR 1:1 DAR 16:9], 30.30 fps, 30 tbr, 1k tbn, 60 tbc (default)
Metadata:
DURATION : 00:00:01.573000000
Stream #0:1: Audio: opus, 48000 Hz, mono, fltp (default)
Metadata:
DURATION : 00:00:01.561000000
Stream mapping:
Stream #0:1 -> #0:0 (opus (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, wav, to '.TEMP/output.wav':
Metadata:
ISFT : Lavf58.29.100
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s16, 1536 kb/s (default)
Metadata:
DURATION : 00:00:01.561000000
encoder : Lavc58.54.100 pcm_s16le
size= 291kB time=00:00:01.56 bitrate=1529.5kbits/s speed= 223x
video:0kB audio:291kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.026151%
Traceback (most recent call last):████████████████████████████████████████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 78.7% done ETA 02:43 AM
File ".\auto-editor.py", line 260, in <module>
outFile = fastVideoPlus(INPUT_FILE, newOutput, args.silent_threshold,
File "C:\Videos\obs\scripts\fastVideoPlus.py", line 157, in fastVideoPlus
y[yPointer: yPointerEnd] = spedupAudio
ValueError: could not broadcast input array from shape (41984,2) into shape (40136,2)
I do not get it when using -s 99999
Also tried other encoders for video and audio.
Run auto-editor.py --debug
and paste the output.
Python Version: 3.8.2 64-bit
Platform: Windows
Auto-Editor Version: 20w26a
When I run auto-editor with an audio file as the input and set the export to adobe premiere, it creates a new audio file instead of making a new XML file like video does.
Command used:
python3 auto-editor.py newRecording.m4a --export_to_premiere
Debug output:
Python Version: 3.8.4 64-bit
Platform: Darwin
FFmpeg: /Users/wyattblue/projects/auto-editor/scripts/mac-ffmpeg/unix-ffmpeg
Auto-Editor Version: 20w29b
Hi again and really thank you for your nice work.
It's my first ever feature request and I don't like the idea to ask someone to work on something. So, please don't think I'm asking you to do something. It is just a feature that I guess it could improve many videos out there.
Many of us, even me, when thinking about what to say next just use let's say "ticks". So, for example I use to say: "eeeeeeeee" or "vale" (that it is "ok" en Spanish) while thinking what to say next. You can see an example on one of my videos here:
"eeeeeee": https://www.youtube.com/watch?v=fLutXVgrh1s&t=36s
"aaaaaaa": https://www.youtube.com/watch?v=fLutXVgrh1s&t=51s
"vale": https://www.youtube.com/watch?v=e8lBZ7y2p_g&t=10s
(I don't do any kind of complex postprocessing, just recently using jumpcutterv2 ;-) and sometimes the cutting options in the youtube editor).
I have seem many live gameplays with the same vocal behaviour.
Should be a way to detect it and potencially elimitate them?
Thanks in advance for the information
I really appreciate this project and want to suggest two things:
a) Since the program writes its temporary files to .CACHE running two instances in parallel causes both of them to crash (both using the same folder). This could be fixed by creating a folder like .cache{Videoname, Date, random number, etc.} for each instance.
b) My video was a screen capture with variable frame rate and this caused some trouble. Entering a frame rate would lead to keeping the wrong parts of the video as the audio gets mismatched. Converting into a fixed frame rate should do the trick, maybe you could integrate this or at least tell the user to convert to fixed frame rate.
Best regards,
Johannes
I used to use this feature extensively. it does help to make a video interesting. I was thinking to request for a zoom level setting somewhere. Please bring it back if possible.
Tell us what went wrong
When using auto-editor on a file with multiple audio tracks, and using the flag --cut_by_all_tracks, there is always an error:
From further inspection: I can confirm this issue is caused because the file f'{TEMP}/combined.wav'
is never created. The file is never created because of an error while running ffmpeg.
Tested in both windows and linux, same error occurs.
When manually running the same ffmpeg command that crashed with combined.wav,
but using combined.ogg
as output file, it creates the file succesfully.
Possible steps to fix
solve the wav codec issue
add an argument that specifys the audio output file format
i suspect i've fallen folly of my complete newbishness of python but i've come unstuck with running the basic code
python auto-editor.py example.mp4
Running from fastVideo.py
Traceback (most recent call last):
File "auto-editor.py", line 172, in <module>
FRAME_SPREADAGE, SAMPLE_RATE)
File "C:\python\GitHub\auto-editor-master\scripts\fastVideo.py", line 74, in fastVideo
timeTaken = getVideoLength(videoFile) / 5
File "C:\python\GitHub\auto-editor-master\scripts\fastVideo.py", line 66, in getVideoLength
stderr=subprocess.STDOUT)
File "C:\Python\python37 64bit\lib\subprocess.py", line 488, in run
with Popen(*popenargs, **kwargs) as process:
File "C:\Python\python37 64bit\lib\subprocess.py", line 800, in __init__
restore_signals, start_new_session)
File "C:\Python\python37 64bit\lib\subprocess.py", line 1207, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
can safely say the requirements.txt have been installed
C:\python\GitHub\auto-editor-master> pip3 install scipy audiotsm pillow pydub opencv-python youtube_dl
Requirement already satisfied: scipy in c:\users\andrew\appdata\roaming\python\python37\site-packages (1.4.1)
Requirement already satisfied: audiotsm in c:\python\python37 64bit\lib\site-packages (0.1.2)
Requirement already satisfied: pillow in c:\python\python37 64bit\lib\site-packages (7.1.1)
Requirement already satisfied: pydub in c:\python\python37 64bit\lib\site-packages (0.23.1)
Requirement already satisfied: opencv-python in c:\python\python37 64bit\lib\site-packages (4.2.0.34)
Requirement already satisfied: youtube_dl in c:\python\python37 64bit\lib\site-packages (2020.6.6)
Requirement already satisfied: numpy>=1.13.3 in c:\users\andrew\appdata\roaming\python\python37\site-packages (from scipy) (1.18.2)
any advise for a newbie on where next to debug ?
Tell us what went wrong
When export as a premiere xml file, the cuts are perfect but it seems that premiere recognizes the first audio track only.
Tell us what went wrong
When using the flag --keep_tracks_seperate
, there is an error message that the file is not created, but the file is actually created in the %TEMP% directory.
Can confirm that the flag causes this, when running without the flag there is no such error message and the output file is created in the same directory.
Thank you for auto-editor, which is amazing and a real glimmer of hope that this project will thrive.
I have noticed that videos are rendered way faster with the addition of fastVideo. Thank you for that.
But the audio treatment is different, too. Making an additional step necessary in post. Is there any way to match the output level of audio between these two? Because I use both when creating clips that I later render out as one file.
Hoping that there is an easy solution.
Greetings
Saša
When i was using auto-editor --combine_files -exp to edit 8bit 4:2:0 XAVC-S codec file. I am not able to auto-edit and combine the files. Is it due to the my ffmpeg version? Much thanks
ffmpeg version 4.3 Copyright (c) 2000-2020 the FFmpeg developers
built with Apple clang version 11.0.0 (clang-1100.0.33.8)
configuration: --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-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libaom --enable-libgsm --enable-appkit --enable-avfoundation --enable-coreimage --enable-audiotoolbox
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f841b010e00] st: 0 edit list: 1 Missing key frame while searching for timestamp: 1000
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f841b010e00] st: 0 edit list 1 Cannot find an index entry before timestamp: 1000.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f841b010e00] Auto-inserting h264_mp4toannexb bitstream filter
[concat @ 0x7f841b008200] Could not find codec parameters for stream 2 (Unknown: none): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, concat, from '/var/folders/d7/gkpv41w11f9cfct95mg8prf80000gn/T/tmpbtvqauyo/combines.txt':
Duration: N/A, start: 0.000000, bitrate: 97542 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709/bt709/iec61966-2-4), 3840x2160 [SAR 1:1 DAR 16:9], 96006 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc
Metadata:
creation_time : 2018-01-01T19:55:22.000000Z
handler_name : Video Media Handler
encoder : AVC Coding
Stream #0:1(und): Audio: pcm_s16be (twos / 0x736F7774), 48000 Hz, stereo, s16, 1536 kb/s
Metadata:
creation_time : 2018-01-01T19:55:22.000000Z
handler_name : Sound Media Handler
Stream #0:2: Unknown: none
[mp4 @ 0x7f841c019400] Could not find tag for codec pcm_s16be in stream #1, codec not currently supported in container
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Last message repeated 1 times
Warning! Couldn't automatically detect audio bitrate.
Warning! ffprobe had an invalid output.
Error! Audio track not found!
With OS X videos taken from Photobooth or screen capture all works as expected but
with videos .mov from Nikon D5100 I get this error
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x9b in position 421: invalid start byte
Platform: Darwin 19.6.0
FFmpeg path: /Library/Python/3.8/site-packages/auto_editor/mac-ffmpeg/bin/ffmpeg
FFmpeg version: 4.3
Auto-Editor version 20w43b
Traceback (most recent call last):
File "/usr/local/bin/auto-editor", line 10, in <module>
sys.exit(main())
File "/Library/Python/3.8/site-packages/auto_editor/__main__.py", line 397, in main
output = pipeToConsole([ffmpeg, '-i', INPUT_FILE, '-hide_banner'])
File "/Library/Python/3.8/site-packages/auto_editor/__main__.py", line 40, in pipeToConsole
return stdout.decode()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x9b in position 421: invalid start byte
Maybe here are some clues
https://stackoverflow.com/questions/42339876/error-unicodedecodeerror-utf-8-codec-cant-decode-byte-0xff-in-position-0-in
First, thanks for your work.
I have tested it with some own videos and I get audio and video desynchronized output. As I was using many parameters to test, I isolated the parameter and it is -v, that desync output even when it is the only parameter used.
In my tests is nearly unnoticeable during the first seconds of the video, but it gets unusable video later.
As the desynch is gradual and as many people have this issue while accelerating videos with ffmpeg. This is the ffmpeg command I use to do it right:
ffmpeg -i name.mp4 -filter_complex "[0:v]setpts=0.8*PTS[v];[0:a]atempo=1.25[a]" -map "[v]" -map "[a]" name_accelerated.mp4
For sure it depends on the number of audio channels the video container has.
The main problem for most people is that 0.8 value as parameter, that it is not 0.75 (when you plan to accelerate to 125%). As 0.8*125%=1.
Best and keep working in this nice project!
I ran the audo-editor ted2.mp4 --frame_margin 8
and the output video size is x6 bigger than input.
Also the output video bitrate is 2000k, but the input bitrate is about 300k
The output of the example video (auto-editor example.mp4 --frame_margin 8
) has 0 byte size!
Terminal output:
$ auto-editor example.mp4 --frame_margin 8
Finished.
took 11.28 seconds (0:00:11)
Debug:
$ auto-editor --debug
Python Version: 3.8.2 64-bit
Platform: Windows
FFmpeg path: C:\Python38\Lib\site-packages\auto_editor\win-ffmpeg/bin/ffmpeg.exe
Auto-Editor version 20w33a
I tried to pass bitrate maually using --video_bitrate 233k
arg, but it seems not to work! same result.
Hello
This script is very fast and seems powerfull . but i couldn't use it because of this below issue :(
So i tried to edit an video with h264 codec. The input video has about 63M size, but the output has 113M.
I'll put details here, please tell me if i am missing something.
Version: Auto-Editor version 20w36a
The input video link: https://www.youtube.com/watch?v=iMqIhhsuGtU with quality 360p.
The used command: auto-editor --video_codec h264 Webinarexample.mp4
Terminal output:
Finished. took 170.52 seconds (0:02:51)
Warning! Could not open output file.
I was able to run the example.mp4
video and the result was OK, but i guess it's not a good example because it has no motion in it.
The auto-editor --debug
output:
Python Version: 3.8.2 64-bit
Platform: Linux
FFmpeg path: ffmpeg
Auto-Editor version 20w36a
Thanks for your help
From my experience working with FFMpeg, I know that when cutting the video while using the copy video codec
causes imprecise cuts and sometimes out of sync audio. I'm talking about the -ss
and -t
options used in FFMPeg.
Does the same thing happen when using Auto-Editor with copy video_codec?
Thanks in advance and thanks for this awesome program!
Hi,
The DAR of the output video file is different from that of the source video file. How can the DAR of the output file and the source file be consistent?
The video is created but not playable (file damaged and has 0 kb).
I tried it on the example video by using the command: auto-editor example.mp4
On debug:
[h264_amf @ 00000236e2754680] DLL amfrt64.dll failed to open
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!
['c:\\program files\\python37\\lib\\site-packages\\auto_editor\\win-ffmpeg/bin/ffmpeg.exe', '-y', '-i', 'C:\\Users\\Jay\\AppData\\Local\\Temp\\tmpe8tpncex/newAudioFile.wav', '-i', 'C:\\Users\\Jay\\AppData\\Local\\Temp\\tmpe8tpncex/spedup.mp4', '-b:v', '241k', '-c:v', 'h264', '-movflags', '+faststart', 'example_ALTERED.mp4', '-hide_banner']
Finished. took 5.76 seconds (0:00:06)
Auto-Editor made 4 cuts, which would have taken about 8 seconds if edited manually.
my input file is a recording from obs studio. 65mb mp4
output file is huge with 529Mb
I notice a huge increase in data rate and total bit rate.
Python Version: 3.8.5 64-bit
Platform: Windows
FFmpeg path: C:\Users\ljose3\AppData\Local\Programs\Python\Python38\Lib\site-packages\auto_editor\win-ffmpeg/bin/ffmpeg.exe
Auto-Editor version 20w31a
Let me know if you need any other info
Every time I run the code through my hard drive (a path that is not C:\) the code just crashes during the process
https://ghostbin.co/paste/zt8db
Hello! I've been using Auto Editor a lot but I suddenly noticed, all the audios are degraded by a lot, the quality is lost and the speech sounds robot like.
I use this command to edit my videos:
auto-editor "input.mkv" --frame_margin 2 --video_speed 1 --silent_speed 999 -o "output.mp4" --no_open --cut_by_this_track 1 --video_codec libx264 --my_ffmpeg --audio_bitrate 192k
These are OBS recordings, recording my laptop's screen and the sounds are 192 kbps.
So I compared the media info of the source files and auto-editor encoded files to find out why the quality is degraded:
And as you can see, auto-editor, has changed the audio codec and also lowered the bitrate, this is probably the reasons, but I'm not sure, what things can I test here to resolve the issue?
Thanks very much in advance for all the work.
when running on the same folder twice, the software remove everything from the existing folder in the second run, even though there are no files with the same name.
Output file ends up empty, example.mp4 didn't work either. Also tried with --my_ffmpeg
> $ auto-editor example.mp4 --no_open --debug
Python Version: 3.8.6 64-bit
Platform: Linux
FFmpeg path: ffmpeg
Auto-Editor version 20w38a
h264
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'example.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42mp41
creation_time : 2020-05-16 22:31:32
Duration: 00:00:42.45, start: 0.000000, bitrate: 569 kb/s
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 240 kb/s, 30 fps, 30 tbr, 30k tbn, 60k tbc (default)
Metadata:
creation_time : 2020-05-16 22:31:32
handler_name : Alias Data Handler
encoder : AVC Coding
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 317 kb/s (default)
Metadata:
creation_time : 2020-05-16 22:31:33
handler_name : Alias Data Handler
Output #0, wav, to '/tmp/tmpsrejl5sb/0.wav':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42mp41
ISFT : Lavf56.40.101
Stream #0:0(eng): Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s16, 1536 kb/s (default)
Metadata:
creation_time : 2020-05-16 22:31:33
handler_name : Alias Data Handler
encoder : Lavc56.60.100 pcm_s16le
Stream mapping:
Stream #0:1 -> #0:0 (aac (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
size= 7960kB time=00:00:42.45 bitrate=1536.0kbits/s
video:0kB audio:7960kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000957%
⏳Creating new audio: [███████████████████████████████████████████████████████████████████████████████████] 100.0% done ETA 04:04 PM
yPointer: 844800
samples per frame: 1600.0
Expected video length: 528.0
Frames written 528ut file.
['ffmpeg', '-y', '-i', '/tmp/tmpsrejl5sb/newAudioFile.wav', '-i', '/tmp/tmpsrejl5sb/spedup.mp4', '-c:v', 'h264', '-crf', '15', '-preset', 'medium', '-movflags', '+faststart', 'example_ALTERED.mp4', '-hide_banner']
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, wav, from '/tmp/tmpsrejl5sb/newAudioFile.wav':
Duration: 00:00:17.60, bitrate: 1536 kb/s
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, 2 channels, s16, 1536 kb/s
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '/tmp/tmpsrejl5sb/spedup.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2mp41
encoder : Lavf58.58.100
Duration: 00:00:17.60, start: 0.000000, bitrate: 616 kb/s
Stream #1:0(und): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 615 kb/s, 30 fps, 30 tbr, 15360 tbn, 30 tbc (default)
Metadata:
handler_name : VideoHandler
[libx264 @ 0x211b820] using SAR=1/1
[libx264 @ 0x211b820] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
[libx264 @ 0x211b820] profile High, level 3.1
[libx264 @ 0x211b820] 264 - core 148 r2643 5c65704 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=15.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
[aac @ 0x211c2c0] The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it.
['ffmpeg', '-y', '-i', '/tmp/tmpsrejl5sb/newAudioFile.wav', '-i', '/tmp/tmpsrejl5sb/spedup.mp4', '-c:v', 'h264', '-crf', '15', '-preset', 'medium', '-movflags', '+faststart', 'example_ALTERED.mp4', '-hide_banner']
Finished. took 3.37 seconds (0:00:03)
> $ file example_ALTERED.mp4
example_ALTERED.mp4: empty
Run auto-editor.py --debug
and paste the output.
Python Version: 3.8.6 64-bit
Platform: Linux
FFmpeg path: ffmpeg
Auto-Editor version 20w38a
Traceback (most recent call last):
File "..\..\auto-editor.py", line 271, in <module>
outFile = fastVideo(INPUT_FILE, newOutput, args.silent_threshold,
File "C:\home\Videos\obs\archiv\scripts\fastVideo.py", line 105, in fastVideo
progressBar(cframe, totalFrames, beginTime)
File "C:\home\Videos\obs\archiv\scripts\usefulFunctions.py", line 122, in progressBar
print(bar, end='\r', flush=True)
File "C:\Program Files\Python38\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u23f3' in position 2: character maps to <undefined>
Running from fastVideo.py
Failure...
Windows 10 from Windows Terminal using Powershell
When I remove the unicode chars in these three lines it works again
doneStr = 'o' * done
togoStr = ' ' * int(barLen - done)
...
bar = f' {title}: [{doneStr}{togoStr}] {percentDone}% done ETA {newTime}'
After taking a look at exporting from Premiere to XML myself, I began using this library called OpenTimelineIO, which was started by engineers at Pixar. The original purpose of the library is to create an open standard of video timelines so that it simplifies the difficulty of importing between video editors, but it's also useful just for converting between video editing formats.
In OpenTimelineIO, you can make the whole timeline programmatically. You create a Timeline object, then you add the clips to the timeline. Once you've created the timeline, you can export to different formats.
There's however a couple downsides I found from using it:
I'm using it myself in my own auto-editing tool, so I can share some code samples on how to make timelines that can be imported by Premiere.
When using auto-editor with default settings, it crashes because there is no 1.wav.
In the temp folder, only 0.wav and new0.wav exist. Listening to these tracks, I don't see any problem, so maybe auto-editor is wrongly assuming there are multiple audio tracks?
Output
Warning! Couldn't automatically detect audio bitrate.
Error! Could not find file /tmp/tmpytki7n86/1.wav
Debug info
Python Version: 3.8.2 64-bit
Platform: Linux
FFmpeg path: ffmpeg
Auto-Editor version 20w41a
Hi,
How to use Audio Options: --hardware_accel in Windows 10. It is not mentioned in the documentation.
When I use choose a folder path instead of a single file I get the following error message:
Traceback (most recent call last):
File "c:\program files\python37\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "c:\program files\python37\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Program Files\Python37\Scripts\auto-editor.exe\__main__.py", line 7, in <module>
import sys
File "c:\program files\python37\lib\site-packages\auto_editor\__main__.py", line 195, in main
inputList += sort(os.listdir(myInput))
NameError: name 'sort' is not defined
Commands i tried:
auto-editor . (after I cd's to the directory)
auto-editor D:\User\Videos\OBS\archive\likes\test\
Only when I specify the name of a single file it works.
auto-editor filename.mp4
it say Error! The file example_ALTERED.mp4 was not created
Tell us if you were able to run the example video
No
Paste the terminal output here
Error! The file example_ALTERED.mp4 was not created.
Run auto-editor.py --debug
output here:
Python Version: 3.8.5 64-bit
Platform: Windows
FFmpeg path: C:\Users*****\AppData\Local\Programs\Python\Python38\Lib\site-packages\auto_editor-20.32.1.0-py3.8.egg\auto_editor\win-ffmpeg/bin/ffmpeg.exe
Auto-Editor version 20w32a
I have another issue for which I have simply removed the last lines of the code.
The problem: I use auto-editor mainly for creating screencasts. I record 2 to 5 minutes of screen activity (explaining something) in which I pause often to think what to say next. All the pauses are then removed by auto-editor. Which is great. When I am finished with a clip I immediately start the next recording, while auto-editor is working on the current one. I created a script for that in which each recording is put into a queue directory and processed. Since I have 16 cores I can sometimes process 5 videos at once.
That said, it is very irritating when a video just starts because it is finished rendering. I think this should not be the default behavior or it should at least be configurable.
Auto-Editor can't ever detect the audio bitrate for mkv video files no matter which options are used.
Here's a small portion with the debug command on.
Python Version: 3.8.5 64-bit
Platform: Darwin
FFmpeg path: /usr/local/lib/python3.8/site-packages/auto_editor/mac-ffmpeg/bin/ffmpeg
Auto-Editor version 20w41a
Warning! Couldn't automatically detect audio bitrate.
Setting audio bitrate to 500k
No other debug values are printed.
Auto-Editor incorrectly expects audio files without ever creating them. This causes a crash without the program ever generating an output.
This only applies when cutting video with more than one audio tracks when exporting to adobe premiere pro.
This doesn't happen with davinci because I never updated the code so look at that for fixes.
I really like the software, but I think it's not so fast,, and I see it doesn't use my Nvidia video card.
Maybe it's possible to implement GPU acceleration.
Thank you
output of auto-editor --debug
Python Version: 3.9.0 64-bit
Platform: Darwin
FFmpeg path: /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/auto_editor/mac-ffmpeg/bin/ffmpeg
Auto-Editor version 20w41a
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'example.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42mp41
creation_time : 2020-05-16T22:31:32.000000Z
Duration: 00:00:42.45, start: 0.000000, bitrate: 569 kb/s
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 240 kb/s, 30 fps, 30 tbr, 30k tbn, 60k tbc (default)
Metadata:
creation_time : 2020-05-16T22:31:32.000000Z
handler_name : ?Mainconcept Video Media Handler
encoder : AVC Coding
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 317 kb/s (default)
Metadata:
creation_time : 2020-05-16T22:31:33.000000Z
handler_name : #Mainconcept MP4 Sound Media Handler
Stream mapping:
Stream #0:1 -> #0:0 (aac (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, wav, to '/var/folders/rf/twfwsmj93s535zb_xtjwcbs40000gn/T/tmp0zcie4r6/0.wav':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42mp41
ISFT : Lavf58.45.100
Stream #0:0(eng): Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s16, 1536 kb/s (default)
Metadata:
creation_time : 2020-05-16T22:31:33.000000Z
handler_name : #Mainconcept MP4 Sound Media Handler
encoder : Lavc58.91.100 pcm_s16le
size= 7952kB time=00:00:42.41 bitrate=1536.0kbits/s speed= 934x
video:0kB audio:7952kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000958%
⏳Creating new audio: [██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████] 100.0% done ETA 03:42 PM
yPointer: 844800
samples per frame: 1600.0
Expected video length: 528.0
Frames written 527ut file.
['/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/auto_editor/mac-ffmpeg/bin/ffmpeg', '-y', '-i', '/var/folders/rf/twfwsmj93s535zb_xtjwcbs40000gn/T/tmp0zcie4r6/newAudioFile.wav', '-i', '/var/folders/rf/twfwsmj93s535zb_xtjwcbs40000gn/T/tmp0zcie4r6/spedup.mp4', '-c:v', 'copy', '-crf', '15', '-preset', 'medium', '-movflags', '+faststart', 'example_ALTERED.mp4', '-hide_banner']
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, wav, from '/var/folders/rf/twfwsmj93s535zb_xtjwcbs40000gn/T/tmp0zcie4r6/newAudioFile.wav':
Duration: 00:00:17.60, bitrate: 1536 kb/s
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s16, 1536 kb/s
/var/folders/rf/twfwsmj93s535zb_xtjwcbs40000gn/T/tmp0zcie4r6/spedup.mp4: No such file or directory
['/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/auto_editor/mac-ffmpeg/bin/ffmpeg', '-y', '-i', '/var/folders/rf/twfwsmj93s535zb_xtjwcbs40000gn/T/tmp0zcie4r6/newAudioFile.wav', '-i', '/var/folders/rf/twfwsmj93s535zb_xtjwcbs40000gn/T/tmp0zcie4r6/spedup.mp4', '-c:v', 'copy', '-crf', '15', '-preset', 'medium', '-movflags', '+faststart', 'example_ALTERED.mp4', '-hide_banner']
Error! The file example_ALTERED.mp4 was not created.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.