mirror of https://github.com/mifi/lossless-cut
- Icon
- Bundle ffmpeg
- Fix menus on windows
- fs-methods seem to hang on windows, so exec instead
Resources:
https://discuss.atom.io/t/information-about-bundled-ffmpeg/28456/6
27730fd269/app/src/scripts/mp4-to-gif.js
https://github.com/orionhealth/electron-packager-plugin-non-proprietary-codecs-ffmpeg
https://github.com/konsumer/easy-ffmpeg
https://github.com/eugeneware/ffmpeg-static
pull/13/head
parent
cce542af41
commit
ec875b5c65
@ -0,0 +1,21 @@
|
||||
## TODO / ideas
|
||||
- Visual feedback on button presses
|
||||
- support for previewing other formats by streaming through ffmpeg?
|
||||
- Slow scrub with modifier key
|
||||
- show frame number (approx?)
|
||||
- ffprobe show keyframes (pprobe -of json -select_streams v -show_frames file.mp4)
|
||||
- cutting out the commercials in a video file while saving the rest to a single file?
|
||||
- With the GOP structure of h.264 you could run into some pretty nasty playback issues without re-encoding if you cut the wrong frames out.
|
||||
- Shortcut Cmd+o also triggers o (cut end)
|
||||
- implement electron app event "open-file"
|
||||
- Travis github deploys https://docs.travis-ci.com/user/deployment
|
||||
- react video ref="video" this.refs.video.play()
|
||||
- A dedicated "Options" menu where the users can set a default output folder for captured frames and for cut videos will also be handy, now lossless-cut uses the input folder.
|
||||
|
||||
## Links
|
||||
- http://apple.stackexchange.com/questions/117306/what-options-are-available-to-losslessly-trim-mp4-m4v-video-on-10-8-or-above
|
||||
- http://superuser.com/questions/554620/how-to-get-time-stamp-of-closest-keyframe-before-a-given-timestamp-with-ffmpeg/554679#554679
|
||||
- http://www.fame-ring.com/smart_cutter.html
|
||||
- http://electron.atom.io/apps/
|
||||
- https://github.com/electron/electron/blob/master/docs/api/file-object.md
|
||||
- https://github.com/electron/electron/issues/2538
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 220 KiB |
@ -0,0 +1,15 @@
|
||||
ffmpeg_linux_ia32=https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-32bit-static.tar.xz
|
||||
ffmpeg_linux_x64=https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz
|
||||
ffmpeg_darwin_x64=http://evermeet.cx/ffmpeg/ffmpeg-3.2.7z
|
||||
ffmpeg_win32_ia32=https://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-3.1.5-win32-static.zip
|
||||
ffmpeg_win32_x64=https://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-3.1.5-win64-static.zip
|
||||
ffprobe_darwin_x64=http://evermeet.cx/ffmpeg/ffprobe-3.2.7z
|
||||
|
||||
mkdir -p ffmpeg-tmp/archives &&
|
||||
(cd ffmpeg-tmp/archives &&
|
||||
wget -O ffmpeg_linux_ia32.tar.xz "${ffmpeg_linux_ia32}" &&
|
||||
wget -O ffmpeg_linux_x64.tar.xz "${ffmpeg_linux_x64}" &&
|
||||
wget -O ffmpeg_darwin_x64.7z "${ffmpeg_darwin_x64}" &&
|
||||
wget -O ffmpeg_win32_ia32.zip "${ffmpeg_win32_ia32}" &&
|
||||
wget -O ffmpeg_win32_x64.zip "${ffmpeg_win32_x64}" &&
|
||||
wget -O ffprobe_darwin_x64.7z "${ffprobe_darwin_x64}")
|
||||
@ -0,0 +1,32 @@
|
||||
(
|
||||
mkdir -p ffmpeg-tmp/extracted &&
|
||||
cd ffmpeg-tmp/extracted &&
|
||||
(mkdir -p linux_ia32 && cd linux_ia32 &&
|
||||
7z x ../../archives/ffmpeg_linux_ia32.tar.xz && tar xvfp ffmpeg_linux_ia32.tar) &&
|
||||
(mkdir -p linux_x64 && cd linux_x64 &&
|
||||
7z x ../../archives/ffmpeg_linux_x64.tar.xz && tar xvfp ffmpeg_linux_x64.tar) &&
|
||||
(mkdir -p win32_ia32 && cd win32_ia32 &&
|
||||
unzip ../../archives/ffmpeg_win32_ia32.zip) &&
|
||||
(mkdir -p win32_x64 && cd win32_x64 &&
|
||||
unzip ../../archives/ffmpeg_win32_x64.zip) &&
|
||||
(mkdir -p darwin_x64 && cd darwin_x64 &&
|
||||
7z x ../../archives/ffmpeg_darwin_x64.7z &&
|
||||
7z x ../../archives/ffprobe_darwin_x64.7z)
|
||||
) &&
|
||||
cd ffmpeg-tmp &&
|
||||
mkdir -p binaries/linux_ia32 &&
|
||||
mkdir -p binaries/linux_x64 &&
|
||||
mkdir -p binaries/win32_ia32 &&
|
||||
mkdir -p binaries/win32_x64 &&
|
||||
mkdir -p binaries/darwin_x64 &&
|
||||
mv extracted/linux_ia32/ffmpeg-3.2-32bit-static/ffmpeg binaries/linux_ia32 &&
|
||||
mv extracted/linux_ia32/ffmpeg-3.2-32bit-static/ffprobe binaries/linux_ia32 &&
|
||||
mv extracted/linux_x64/ffmpeg-3.2-64bit-static/ffmpeg binaries/linux_x64 &&
|
||||
mv extracted/linux_x64/ffmpeg-3.2-64bit-static/ffprobe binaries/linux_x64 &&
|
||||
mv extracted/win32_ia32/ffmpeg-3.1.5-win32-static/bin/ffmpeg.exe binaries/win32_ia32 &&
|
||||
mv extracted/win32_ia32/ffmpeg-3.1.5-win32-static/bin/ffprobe.exe binaries/win32_ia32 &&
|
||||
mv extracted/win32_x64/ffmpeg-3.1.5-win64-static/bin/ffmpeg.exe binaries/win32_x64 &&
|
||||
mv extracted/win32_x64/ffmpeg-3.1.5-win64-static/bin/ffprobe.exe binaries/win32_x64 &&
|
||||
mv extracted/darwin_x64/ffmpeg binaries/darwin_x64 &&
|
||||
mv extracted/darwin_x64/ffprobe binaries/darwin_x64 &&
|
||||
echo Done
|
||||
@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
<g>
|
||||
<circle style="fill:#14B0BF;" cx="256" cy="256" r="256"/>
|
||||
<path style="fill:#3387B5;" d="M437.018,437.018c59.699-59.699,83.722-141.548,72.12-219.09L401.833,109.86L96.691,163.666
|
||||
l8.771,49.731l2.463-0.435l0.077,0.435h-2.54v168.397c0,6.38,3.036,12.032,7.67,15.77c0.916,1.137,112.067,112.067,112.579,112.579
|
||||
C300.913,519.05,379.31,494.725,437.018,437.018z"/>
|
||||
<path style="fill:#0F303F;" d="M415.309,381.788c0,11.192-9.16,20.352-20.352,20.352H125.809c-11.192,0-20.352-9.16-20.352-20.352
|
||||
V233.743c0-11.192,9.16-20.352,20.352-20.352h269.148c11.192,0,20.352,9.16,20.352,20.352V381.788z"/>
|
||||
<rect x="105.462" y="213.396" style="fill:#FFFFFF;" width="309.862" height="50.499"/>
|
||||
<path style="fill:#0F303F;" d="M156.001,220.314l-36.874,37.366h37.366l36.874-37.366H156.001z M311.322,220.314l-36.874,37.366
|
||||
h37.366l36.874-37.366H311.322z M207.775,220.314L170.9,257.679h37.366l36.874-37.366H207.775z M259.548,220.314l-36.874,37.366
|
||||
h37.366l36.874-37.366H259.548z M363.095,220.314l-36.874,37.366h37.366l36.874-37.366H363.095z M414.868,220.314l-36.874,37.366
|
||||
h37.315v-37.366H414.868z M105.462,220.314v37.366h0.246l36.874-37.366H105.462z"/>
|
||||
|
||||
<rect x="98.721" y="136.353" transform="matrix(0.9848 -0.1736 0.1736 0.9848 -24.203 46.4881)" style="fill:#FFFFFF;" width="309.857" height="50.498"/>
|
||||
<path style="fill:#0F303F;" d="M316.467,131.937l42.803,30.397l36.797-6.487l-42.803-30.397L316.467,131.937z M163.502,158.904
|
||||
l42.803,30.397l36.797-6.487L200.3,152.417L163.502,158.904z M265.477,140.928l42.803,30.397l36.797-6.487l-42.803-30.397
|
||||
L265.477,140.928z M214.492,149.919l42.803,30.397l36.797-6.487l-42.803-30.397L214.492,149.919z M112.517,167.895l42.803,30.397
|
||||
l36.797-6.487l-42.803-30.397L112.517,167.895z M97.894,170.476l6.487,36.797l36.746-6.482l-42.803-30.397L97.894,170.476z
|
||||
M366.479,123.116l42.803,30.397l0.241-0.041l-6.487-36.797L366.479,123.116z"/>
|
||||
<path style="fill:#FDC00F;" d="M394.634,317.379h-0.072v-36.552h-269.44v103.235h269.44v-62.172h0.072V317.379z M390.497,284.897
|
||||
v32.481h-101.13v-32.481L390.497,284.897L390.497,284.897z M284.856,284.897v32.481H177.05v-32.481L284.856,284.897
|
||||
L284.856,284.897z M129.193,379.991v-95.094h43.341v95.094H129.193z M177.05,379.991v-58.102h107.807v58.102L177.05,379.991
|
||||
L177.05,379.991z M390.497,379.991h-101.13v-58.102h101.125v58.102H390.497z"/>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
@ -0,0 +1,2 @@
|
||||
Fixtures are stored separately:
|
||||
https://github.com/mifi/lossless-cut-fixtures
|
||||
@ -0,0 +1 @@
|
||||
for f in sample-videos/*; do echo -n "$f: "; ffprobe -show_format -of json -i "$f" | json format.format_name; done 2> /dev/null
|
||||
Loading…
Reference in New Issue