LosslessCut: लॉसलेस वीडियो/ऑडियो एडिटिंग का स्विस आर्मी नाइफ
(github.com/mifi)- LosslessCut वीडियो, ऑडियो, सबटाइटल आदि मीडिया फाइलों को बहुत तेजी से लॉसलेस तरीके से प्रोसेस करने के लिए एक क्रॉस-प्लैटफॉर्म FFmpeg GUI है
- इसका मुख्य काम कैमरा, GoPro, ड्रोन आदि से आई बड़ी वीडियो फाइलों को धीमी री-एनकोडिंग के बिना रफ तरीके से काटकर केवल अच्छे हिस्से रखना और बहुत सारा डेटा हटाना—यानी लॉसलेस trimming/cutting—है
- ज्यादातर काम FFmpeg-आधारित लगभग सीधे डेटा कॉपी से होते हैं, और यह विज्ञापन हटाने, सेगमेंट री-अरेंज करने, समान codec parameters वाली फाइलों को merge करने, tracks निकालने·बदलने·हटाने जैसे कामों को सपोर्ट करता है
- यह Chromium HTML5 video player का उपयोग करता है, इसलिए native playback format और codec की सीमाएं हैं, लेकिन FFmpeg-assisted playback से low-quality proxy बनाकर खोला जा सकता है और असली cut/export मूल फाइल पर लॉसलेस तरीके से किया जा सकता है
- macOS, Windows, Linux के लिए manual download मुफ्त है, जबकि Mac App Store और Microsoft Store installation को security, आसान install और automatic stable updates देने वाले support model के रूप में बताया गया है
LosslessCut कौन-सी समस्या हल करता है
- LosslessCut का लक्ष्य वीडियो, ऑडियो, सबटाइटल और संबंधित मीडिया फाइलों के लिए तेज और लॉसलेस operations देने वाला क्रॉस-प्लैटफॉर्म FFmpeg GUI होना है
- इसका मुख्य उपयोग बड़ी वीडियो फाइलों से जरूरी हिस्से जल्दी निकालना और बाकी डेटा हटाना है
- वीडियो कैमरा, GoPro, ड्रोन आदि से शूट की गई बड़ी फाइलों को रफ तरीके से cut करके space बचाया जा सकता है
- धीमी री-एनकोडिंग न करने के कारण quality loss से बचा जा सकता है
- इसकी बहुत तेज speed FFmpeg के काम करने और LosslessCut द्वारा लगभग direct data copy का उपयोग करने वाली संरचना से आती है
मुख्य एडिटिंग फीचर्स
- यह ज्यादातर वीडियो·ऑडियो formats के लिए लॉसलेस cutting सपोर्ट करता है
- वीडियो·ऑडियो के कुछ हिस्सों को लॉसलेस तरीके से काट सकता है, इसलिए इसे विज्ञापन हटाने जैसे कामों में इस्तेमाल किया जा सकता है
- वीडियो·ऑडियो segments का क्रम लॉसलेस तरीके से फिर से arrange किया जा सकता है
- arbitrary files की लॉसलेस merge/concatenate सुविधा सपोर्ट करता है, लेकिन समान कैमरा से आई फाइलों की तरह एक जैसे codec parameters जरूरी हैं
- Smart cut experimental feature के रूप में उपलब्ध है
Tracks, metadata और container operations
- multi-track/stream editing सपोर्ट करता है
- कई फाइलों से मनचाहे tracks जोड़कर वीडियो में music या subtitle track जोड़ा जा सकता है
- गैर-जरूरी tracks हटाए जा सकते हैं
- कुछ tracks को ही बदला या re-encode किया जा सकता है
- वीडियो, ऑडियो, subtitle, attachments आदि सभी tracks को अलग-अलग files के रूप में extract किया जा सकता है
- सभी tracks की technical information देखी जा सकती है, और file metadata·per-track metadata·per-track disposition edit किया जा सकता है
- playback के लिए video·audio tracks चुने जा सकते हैं, और कई audio tracks एक साथ चलाए जा सकते हैं
- वीडियो·ऑडियो को दूसरे container file format में लॉसलेस remux किया जा सकता है
- वीडियो का rotation·orientation metadata बदला जा सकता है
- MKV/MP4 embedded chapter marks edit करने और subtitle viewing को सपोर्ट करता है
Timeline और workflow
- तेज multi-file workflow देता है, लेकिन bulk·batch export अभी नहीं है
- keyboard shortcuts केंद्रित workflow और custom shortcuts सपोर्ट करता है
- cut point time manually enter किया जा सकता है
- प्रति-file timecode offset लागू करने और file से timecode auto-load करने को सपोर्ट करता है
- timeline zoom, frame/keyframe jump, video thumbnails, audio waveform देता है
- project file में cut segments save किए जा सकते हैं
- आखिरी run किए गए FFmpeg command log को देखकर recent command को modify किया जा सकता है और command line में फिर से run किया जा सकता है
- undo और redo सपोर्ट करता है
- advanced segment queries और transformations के लिए JS-based expression language देता है
- cut segments पर labels लगाए जा सकते हैं और tags से annotations जोड़े जा सकते हैं
Image extraction, detection और segment generation
- वीडियो से full-resolution snapshots JPEG/PNG के रूप में extract किए जा सकते हैं
- video frame range को images के रूप में export किया जा सकता है
- हर nवें frame, seconds के आधार पर, scene cut के आधार पर, best thumbnail method आदि सपोर्ट करता है
- केवल selected time range, यानी segment से ही export किया जा सकता है
- image filenames में original timestamp शामिल किया जा सकता है
- black screen detection, silent audio detection, scene change detection सपोर्ट करता है
- timeline को length L, size X MB, N segments या random segments में बांटा जा सकता है
- सभी non-keyframe बहुत तेजी से हटाए जा सकते हैं, जिससे timelapse जैसे use cases में इस्तेमाल किया जा सकता है
Import/export और automation
- segments का import/export सपोर्ट करता है
- MP4/MKV chapter marks
- text file
- YouTube
- CSV
- CUE
- DaVinci, Final Cut Pro के लिए XML
- अन्य formats
- basic CLI और HTTP API देता है
- HTTP के जरिए वीडियो को लॉसलेस तरीके से download किया जा सकता है; उदाहरण के रूप में HLS
.m3u8दिया गया है - DJI embedded GPS tracks को map पर दिखाया जा सकता है
उदाहरण use cases
- रिकॉर्ड किए गए TV show से advertisements काटकर TS से MP4 में format बदला जा सकता है
- file से audio track हटाया जा सकता है
- video से music track extract करके जरूरत के length तक cut किया जा सकता है
- video में music जोड़ा जा सकता है या existing audio track replace किया जा सकता है
- अलग से record किए गए audio और video tracks को combine किया जा सकता है
- external subtitles को video में शामिल किया जा सकता है
- H264/H265 MKV video को iPhone playback के लिए MOV या MP4 में जल्दी बदला जा सकता है
- दूसरे tools में बनाई गई EDL, CSV जैसी cut time lists import करके LosslessCut में cuts execute किए जा सकते हैं
- cut time list को CSV EDL के रूप में export करके दूसरे tools में process किया जा सकता है
- MP4/MKV chapters के आधार पर file को जल्दी cut किया जा सकता है
- YouTube video को chapters या comments में दिए music times के आधार पर जल्दी cut किया जा सकता है
- audio·subtitle tracks की language बदली जा सकती है
- external JPEG file या timeline frame से cover art·thumbnail को video·audio में attach किया जा सकता है
- video के author, title, GPS location, recording time बदले जा सकते हैं
- गलत orientation flag वाले video का rotation ठीक किया जा सकता है
- re-encoding के बिना video·audio clip को X बार जल्दी repeat किया जा सकता है
- पूरे video या उसके हिस्से को X image files में convert किया जा सकता है, लेकिन यह काम लॉसलेस नहीं है
- video को इस तरह लॉसलेस split किया जा सकता है कि हर scene के लिए एक file बने
- audio·video से silent sections काटे जा सकते हैं
- Twitter की 140-second limit जैसी conditions के हिसाब से video को segments में बांटा जा सकता है
- हर segment पर एक या अधिक tags लगाए जा सकते हैं, और tags का उपयोग segment organizing या output folder structure बनाने में किया जा सकता है
- अतिरिक्त examples Recipe cookbook में हैं
Download और support model
- Mac App Store और Microsoft Store installation को security, simple installation, automatic stable updates देने वाले तरीके के रूप में बताया गया है
- Linux alternatives के रूप में Snapcraft और Flathub उपलब्ध हैं
- executable files का manual download लगातार मुफ्त उपलब्ध है
- macOS: Intel, Apple Silicon DMG उपलब्ध हैं, और PKG काम नहीं करता
- Windows: 7zip उपलब्ध है, और Windows 7, 8, 8.1 v3.50.0 के बाद अब support नहीं हैं
- Linux: x64 tar.bz2, x64 AppImage, arm64 tar.bz2, Raspberry Pi armv7l tar.bz2 उपलब्ध हैं
- Windows APPX और macOS PKG काम नहीं करते
- More releases और Latest nightly builds 🧪 उपलब्ध हैं
- LosslessCut एक व्यक्ति द्वारा maintain किया जाता है, और बताया गया है कि यह हमेशा free open source रहेगा
- users project को support कर सकते हैं या FFmpeg को donate कर सकते हैं
Supported formats और playback constraints
- LosslessCut Chromium HTML5 video player का उपयोग करता है, इसलिए सभी formats और codecs natively supported नहीं हैं
- आम तौर पर काम करने वाले file formats
MP4,MOV,WebM,Matroska,OGG,WAVहैं - supported audio codecs
FLAC,MP3,Opus,PCM,Vorbis,AACहैं - supported video codecs
H264,AV1,Theora,VP8,VP9, और hardware decoder वालाH265हैं - list में न होने वाले codecs और formats को भी
Filemenu से supported format·codec में convert करके खोला जा सकता है- पहले Fastest: FFmpeg-assisted playback option आजमाने को कहा गया है
- इस स्थिति में file का low-quality version बनाया जाता है और player में खोला जाता है
- असली cut/export operations original file पर किए जाते हैं, इसलिए यह लॉसलेस है
- FFmpeg जिन files को decode कर सकता है, उन्हें संभावित रूप से खोला जा सकता है
Documentation और demo
- official website LosslessCut.app है
- शुरुआत, FAQ, usage documentation Getting started, FAQ and usage documentation में हैं
- troubleshooting, known issues और limitations Troubleshooting and known issues and limitations में हैं
- contribution guide Contributing में है
- video demo common features, MP4 thumbnail·cover art जोड़ना, multi-language audio जोड़ना कवर करता है
1 टिप्पणियां
Hacker News की राय
यह पुराने Windows media PC दौर में इस्तेमाल होने वाले VideoReDo नाम के जादुई ऐप का open-source प्रतिस्पर्धी लगता है
अफसोस, VideoReDo एक indie developer द्वारा बनाया गया proprietary software था, और उस developer का हाल ही में निधन हो गया
जिन लोगों को “lossless” video editing का मतलब समझ नहीं आता, उनके लिए समझाएं तो: आम तौर पर video editor video/audio clips import करता है, timeline को Pitivi/Premiere/Final Cut जैसे ऐप के अपने format में save करता है, फिर final output को MP4/MOV जैसे output format में export करते समय सब कुछ दोबारा encode करता है
इसलिए 1 घंटे के video में से सिर्फ 30–90 सेकंड काटने हों, तब भी पूरे 1 घंटे को re-encode करना पड़ता है, और अगर original encoding व re-encoding settings मेल न खाएं तो image/audio quality में अनचाहे बदलाव आ जाते हैं
इसके उलट ऐसे lossless editors पूरा video re-encode नहीं करते, बल्कि byte level पर वही हिस्सा “काटने” जैसे तरीके से process करते हैं
पुराने MP3 के शुरुआती दिनों की याद आती है, जब लोग 96kbps file download करके उसे 320kbps में फिर से encode कर “audio quality सुधारने” की कोशिश करते थे
decoding और re-encoding सिर्फ तब जरूरी होती है जब frame content बदलना हो, या video stream structure को compatible बनाने के लिए फिर से बनाना हो
ज्यादातर video formats क्रम से decode और display किए जाने वाले delta-encoded frames की stream होते हैं। सिर्फ एक frame पीछे जाने के लिए भी शुरुआत से फिर decode करना पड़ सकता है, और अगर एक frame खराब हो जाए तो screen खो जाती है
इसलिए encoder keyframes डालकर समय-समय पर video stream को restart करता है। समान codec और resolution हों तो बाहरी video stream में भी लगभग कहीं भी keyframe insert करना वैध है
मेरी जानकारी में proper non-linear editors यह तरीका इस्तेमाल नहीं करते। ज्यादातर cuts को simple GOP[0] cutting trick से approximate करना मुश्किल है, और बहुत से लोग final distribution format में encoded clips को edit भी नहीं करते
professional level पर कई लोग ProRes में record करते हैं, और ProRes जानबूझकर delta encoding नहीं करता[1]। क्योंकि delta encoding non-linear video editing के लिए वाकई काफी खराब है
[0] Group of Pictures - एक keyframe और अगले keyframe से पहले तक के सभी delta-encoded frames
[1] इसलिए उसका size बहुत बड़ा होता है
अगर 1 मिनट काट रहे हैं, तो encode होने वाला हिस्सा 1 मिनट का है। original video को 1 मिनट से ज्यादा decode करना पड़ सकता है, लेकिन पूरे 1 घंटे को decode करना कम ही होता है
“lossless” सुनकर पहले मुझे ProRes, MJPEG2000, HuffYUV जैसे सचमुच lossless formats की editing याद आई
लेकिन यह tool आखिरकार original container को एक नए container में remux करता है, जबकि underlying streams को नहीं छूता। यानी re-encoding नहीं होती
भारी काम FFmpeg को सौंपना हैरानी की बात नहीं है, लेकिन community के लिए यह समझना मायने रखता है कि यह process असल में कैसे काम करती है
संक्षेप में, mp4, mov, avi, ts जैसे modern video formats आखिरकार ऐसे container extensions हैं जिनमें कई video/audio tracks हो सकते हैं। इन tracks को Elementary Stream (ES) कहा जाता है, और इन्हें H264/AVC, H265/HEVC, AAC जैसे codecs से अलग-अलग encode किया जाता है
बाद में muxing process में इन्हें container में जोड़ा जाता है, और हर sample/frame पर timestamp लगाया जाता है ताकि ES आपस में sync रहें
ES encoded होते हैं, इसलिए seek करते समय frame-level accuracy पाना मुश्किल होता है, और पूरी तरह decode होने वाला frame सिर्फ I-frame होता है। उसके बाद आने वाले P/B frames, I-frame की जानकारी के आधार पर decode होते हैं। ऐसी IPPBPPB... sequence को GOP कहा जाता है
दिलचस्प बात यह है कि stream को decode किए बिना भी NAL (Network Abstraction Layer) unit के header को देखकर frame type पता किया जा सकता है। उदाहरण के लिए H264 I-frame का frame type byte लगभग 0x07 जैसा होता है, और header 0x000001 होता है
इन सबको मिलाकर ES bitstream में झांककर decoding के बिना GOP boundaries ढूंढी जा सकती हैं। हालांकि GOP के बीचोंबीच सीधे cut नहीं किया जा सकता, इसलिए या तो 1 सेकंड से कम की error स्वीकार करनी पड़ती है, या आम तौर पर करीब 30 frames वाले पूरे GOP को decode करके output में I-frame insert करना पड़ता है
इसलिए अंत में यह काम बहुत तेज bit manipulation और containers के बीच copying जैसा है। अगर उद्देश्य original video को टुकड़ों में काटना है, तो यही वजह है कि यह process बहुत efficient है
संबंधित लेख:
LosslessCut: lossless video/audio editing - https://news.ycombinator.com/item?id=33969490 - Dec 2022 (153 comments)
Lossless-cut: The swiss army knife of lossless video/audio editing - https://news.ycombinator.com/item?id=24883030 - Oct 2020 (10 comments)
LosslessCut – Save space by quickly and losslessly trimming video files - https://news.ycombinator.com/item?id=22026412 - Jan 2020 (1 comment)
Show HN: LosslessCut – Cross-platform GUI tool for fast, lossless video cutting - https://news.ycombinator.com/item?id=12885585 - Nov 2016 (33 comments)
संदर्भ के तौर पर, ffmpeg cuts बनाने के लिए इस्तेमाल होने वाली एक bash script है। यह Stack Overflow के एक काफी उपयोगी सुझाव पर आधारित है, और input एक ऐसी file है जिसमें हर लाइन में start/end time seconds में लिखा होता है
अगर video में audio नहीं है, तो atrim/outa वाला हिस्सा हटाने पर यह लगभग वैसा ही काम करता है। कई segments को
trim,atrim,setpts,asetptsसे काटकर फिरconcatfilter से जोड़ने का तरीका है-c copyया-c:v copy -c:a copyकहाँ है?अगर यह शिकायत आने वाली हो कि यह 100MB से बड़ी Electron app है, तो पहले ही बता दूँ: AVIDemux एक native app है और लगभग वही काम कर देती है
पिछले हफ्ते मुझे यह app मिली और यह बेहद उपयोगी साबित हुई
मैंने swimming pool के पास एक छोटे camera से पूरी diving competition record की थी, और उसे हर diving scene के अलग-अलग clips में बांटना चाहता था
LosslessCut में मैं जितनी चाहूँ उतनी तेज़ playback कर सकता था, और खिलाड़ियों के बीच के gaps को sound से पहचानने के लिए 300% से थोड़ा ऊपर की speed मेरे लिए usable maximum थी
हर बार जब किसी dive का score announce होता, मैं
Bदबाता, और सभी dives के लिए यह करने के बाद export पर click किया। 3 घंटे की competition को एक घंटे से भी कम समय में साफ़ नाम वाले clips में बांट दिया, जिन्हें हर player और coach के साथ share किया जा सकता थामुझे LosslessCut बहुत पसंद है और मैं इसे लगभग रोज़ इस्तेमाल करता हूँ
मुख्य रूप से screen recordings काटने या edit करने के लिए इस्तेमाल करता हूँ, और lossless होने की वजह से edited video save करना लगभग तुरंत पूरा हो जाता है
यह असल में ffmpeg के लिए एक GUI जैसा ही है
अगर फिर से compress करना हो तो Permute इस्तेमाल करता हूँ, और effects डालने हों या lossy editing चाहिए हो तो Davinci Resolve इस्तेमाल करता हूँ
जानना चाहता हूँ कि यह Handbrake या सीधे ffmpeg call करने की तुलना में क्या ज़्यादा देता है। paid app लगती है, लेकिन अगर यह मौजूदा free विकल्पों से सच में बेहतर है तो software के लिए पैसे देना ठीक है
GitHub पर GPL-2.0 license, Snap Store पर MIT license, और Mac App Store में $19 है
जानना चाहता हूँ कि remote server से video को lossless तरीके से download करते हुए cut करना संभव है या नहीं
अभी मैं Stack Overflow से मिली ffmpeg के लिए bash script से YouTube जैसी जगहों से video का सिर्फ एक हिस्सा download करता हूँ, लेकिन फिलहाल download के दौरान on-the-fly re-encoding करनी पड़ती है
फिलहाल मैं मानकर चल रहा हूँ कि local पर keyframe जैसी video information न होने के कारण ऐसे video को lossless तरीके से download करके cut करना संभव नहीं है। अच्छा होगा अगर कोई मुझे गलत साबित कर दे
313सिर्फ 4K video stream है, लेकिन audio stream वाले video पर भी काम करना चाहिएffmpeg -ss 5:40 -i $(yt-dlp -f 313 -g https://www.youtube.com/watch?v=3SykjY3GdMs) -acodec copy -vcodec copy -t 20 waterdrop_mountainlake.mkvमुझे हाल ही में इस app के बारे में पता चला और यह पसंद आई
अब यह यकीन करना मुश्किल है कि clip काटने के लिए मैं हर बार Blender का पूरा instance और video project खोलता था—वह भी अक्सर