the subtitle editor :)
subtitleedit / subtitleedit Goto Github PK
View Code? Open in Web Editor NEWthe subtitle editor :)
Home Page: http://www.nikse.dk/SubtitleEdit/Help
License: GNU General Public License v3.0
the subtitle editor :)
Home Page: http://www.nikse.dk/SubtitleEdit/Help
License: GNU General Public License v3.0
the subtitle editor :)
First off this is the best sub ocr program I've ever used. Not only does it go a good job, the interface is quite good. However it's missing two features I like from other ocr programs.
The ability to position signs where they are on screen.
{\pos(130,163)}Sign Here!
Secondly be able to combine text from across multiple subtitle lines. An example should help explain this.
14:01.00,0:14:01.49,Hello
14:01.50,0:14:02.00,Hello/NWhat?
14:02.01,0:14:03.00,What?
Change that to
14:01.00,0:14:02.00,Hello
14:01.50,0:14:03.00,What?
The custom text formats cannot be actually deleted from the list. After deleting them, they will show up again when reopening the dialog or SE, unless deleting Settings.xml (or manually remove them from Settings.xml).
Btw, the way SE store the custom format data seems a bit strange, I wonder if it is made by design?
Thanks for checking.
I'm not sure how difficult this would be to program. By analysing DVD's and blurays subtitles by major film distributors, I've noticed that they use character spacing when generating their subtitles.
This allows them to have more characters on screen without reducing the font size.
Here's an example from a Warner Bros. DVD. By setting character spacing to "condensed 2 points", the font size could be set to 36 instead of 32.
And here's another example from a Disney bluray. Again, a "condensed 2" is used and the font size could be set to 45 instead of 41.
I hope I was clear enough. Please ask for any clarifications.
Thank you very much, Kind regards...
Adrián
It would be really nice that SE can support plain text batch convert, which means, just keep all texts while removing all timecodes. Or, is this already supported? 😃
@niksedk Why do you replace: " ", "@"
https://github.com/SubtitleEdit/subtitleedit/blame/master/src/Logic/Utilities.cs#L2438
Sorry for the incompleteness Nikolaj,
I saw you fixed the 't case, however the same also applies for those abbrevs. at start of sentence.
For dutch language, the same is actually true for the following conditions (same rules apply as for 't abbrevs at start of sentence)
'k : (abbrev. for "Ik" (in English : "I" ) Example : 'k Heb = I have
'm : (special abbrev. for "Hij" (in English : "He" ) Example : 'm Heeft = He has
'n : (abbrev. for "Een" (in English : "An" ) Example : 'n Appel = An apple
'r : abbrev. for "Haar" (in English : "Her" ) Example : 'r Auto = Her car
's : (abbrev. for "Des" (in English : "In the" ) Example : 's Morgens = In the morning
That's all, no other special abbrevs. exist in dutch language ;)
Using Dutch subtitles, the "Fix common errors..." --> "Fix common OCR errors" capitalizes instances where a line starts with 't (dutch abbrev. of the English word "It" )
Example :
't Is geen rugzaktoerist, hè?
't Was alsof ik voor 'n afgrond stond.
...gets replaced by...
'T Is geen rugzaktoerist, hè?
'T Was alsof ik voor 'n afgrond stond.
(when dutch language, 't abbrevs always are lowercase. When happening at the start of a sentence, the next following word should be capitalized)
For unknown reasons I had several subtitles with non-matching italic tags, like this one:
719
00:45:05,464 --> 00:45:07,929
<i>- ¿Qué has oído tú?</i>
- Nada. ¿Por qué?</i>
When exporting to Vobsub or SUP, the last </i>
tag is visible in the exported image.
I don't think any tag should show when exported, no matter if they are wrongly placed.
Thanks... Kind regards...
When exporting to EBU STL, italics do not work properly. When a subtitle has both lines in italics, only the first one gets the formatting.
(This old issue #155. https://code.google.com/p/subtitleedit/issues/detail?id=155 )
When using the moving first/last words up/down to the next line feature, it will automatically remove existing line breaks in current line. As far as I experienced, it is really something unwanted. not convenient for multi-line texts.
From the manual: "Holding down ALT when moving start/end will move nearest subtitle start/end too if it's closer than 500 milliseconds."
This function is not working in FRAME MODE.
"ALT+moving start time" breaks the previous subtitle end time.
"ALT+moving end time" breaks current subtitle end time.
This happens with the selected subtitle (the one in red in the waveform). It works with unselected subtitles.
Hello. I'm currently trying to improve these two features:
I'm going to make them work with tags ([X], {\anX}) and with "...", OK?
These are very useful features available in very expensive programs, so it's great that SE has got them.
I'll let you know when I'm ready. Kind regards,
Adrián
Hi
It would be nice with an option to save a dvb subtitle (ts files in this example) as sub/idx instead of being forced to OCR it.
From the manual: "Holding down ALT when moving start/end will move nearest subtitle start/end too if it's closer than 500 milliseconds."
OK, but instead of 500ms, maybe this number should be the new parameter "gap between subtitles." It makes sense to me; I don't know what you think.
I know this will make little sense to most users, but currently I do meet such need when working on a project. The video clip got both Left/Right channels. However, the wave seems messed up, because the L channel is full of noise and no voice.
AFAIK, on some video files, one of the
stereo channels (typically left) is used to encode LTC time code. So, here I think the R channel would be the ideal one for wave generation, instead of the mix or stereo channels.
So I just wonder if it would be possible for users to decide which channel to use, L, R, or stereo. FYI. Thank you!
When adding new lines under Translation mode, if the End time of the previous line is the same or 1 milisecond ealier than the Start time of the next line, the lines will be out of sync, which is really not good. :-}
[PS: I found that the problematic durations would be between 0 to 48 msecs]
Currently, It seems that we havve to first click on any one of the Translation/Create/Adjust tab title, in order to use Ctrl + left or right key to navigate among these three modes. However, if the navigation just behaves like this, then it would be sort of meaningless. Isn't it?
In other words, it would be really nice to use these shortcuts to perform the mode navigation without having to have cursor focusing on that area.
(PS: I'm not so sure if this is my own problem, just fyi.:) )
Let me suggest to add CPS and Separation (or Blank, Gap, Pause) to the subtitle list.
I attach a capture of Softni subtitler.
I know you can't have 2 lines in a listview, so two more columns would be needed is this is done.
Notice that by having more info in a single cell (in Softni) the subtitle list is narrower, and so there is more space for the video on the right. Also, each subtitle in the list appears in two lines which makes them easier to read.
So maybe a in a future version the list could be improved, maybe using a textbox inside each cell; I can't think of any other way of having line breaks inside a cell.
Thank you very much. Regards...
Windows 8.1 Pro
Subtitle Edit 3.3.14 does work fine.
When i choose import/OCR subtitle from vob/ifo (dvd) and choose OCR method: OCR via image comparison and hit Start OCR i get the following message:
Zie het einde van dit bericht voor meer informatie over het aanroepen
van JIT-foutopsporing (Just In Time) in plaats van dit dialoogvenster.
************** Tekst van uitzondering **************
System.IO.DirectoryNotFoundException: Kan een gedeelte van het pad D:\SE3315\Ocr\asdasd_Images.db niet vinden.
bij System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
bij System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
bij System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
bij System.IO.FileStream..ctor(String path, FileMode mode)
bij Nikse.SubtitleEdit.Forms.VobSubOcr.SaveCompareItem(NikseBitmap newTarget, String text, Boolean isItalic, Int32 expandCount)
bij Nikse.SubtitleEdit.Forms.VobSubOcr.SplitAndOcrBitmapNormal(Bitmap bitmap, Int32 listViewIndex)
bij Nikse.SubtitleEdit.Forms.VobSubOcr.MainLoop(Int32 max, Int32 i)
bij Nikse.SubtitleEdit.Forms.VobSubOcr.mainOcrTimer_Tick(Object sender, EventArgs e)
bij Nikse.SubtitleEdit.Forms.VobSubOcr.ButtonStartOcrClick(Object sender, EventArgs e)
bij System.Windows.Forms.Control.OnClick(EventArgs e)
bij System.Windows.Forms.Button.OnClick(EventArgs e)
bij System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
bij System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bij System.Windows.Forms.Control.WndProc(Message& m)
bij System.Windows.Forms.ButtonBase.WndProc(Message& m)
bij System.Windows.Forms.Button.WndProc(Message& m)
bij System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bij System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bij System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Geladen assembly's **************
mscorlib
Assembly-versie: 2.0.0.0
Win32-versie: 2.0.50727.8000 (FX35W81RTMGDR.050727-8000)
SubtitleEdit
Assembly-versie: 3.3.15.2
Win32-versie: 3.3.15.2
System.Windows.Forms
Assembly-versie: 2.0.0.0
Win32-versie: 2.0.50727.7905 (win9rel.050727-7900)
System
Assembly-versie: 2.0.0.0
Win32-versie: 2.0.50727.7905 (win9rel.050727-7900)
System.Drawing
Assembly-versie: 2.0.0.0
Win32-versie: 2.0.50727.7905 (win9rel.050727-7900)
mscorlib.resources
Assembly-versie: 2.0.0.0
Win32-versie: 2.0.50727.8000 (FX35W81RTMGDR.050727-8000)
System.Xml
Assembly-versie: 2.0.0.0
Win32-versie: 2.0.50727.7905 (win9rel.050727-7900)
System.Windows.Forms.resources
Assembly-versie: 2.0.0.0
Win32-versie: 2.0.50727.7905 (win9rel.050727-7900)
NHunspell
Assembly-versie: 1.1.1.0
Win32-versie: 1.1.1.0
************** JIT-foutopsporing **************
Als u JIT-foutopsporing wilt inschakelen, moet in het configuratiebestand voor deze
toepassing of computer (machine.config) de waarde
jitDebugging in het gedeelte system.windows.forms zijn ingesteld.
De toepassing moet ook zijn gecompileerd terwijl foutopsporing
was ingeschakeld.
Bijvoorbeeld:
Wanneer JIT-foutopsporing is ingeschakeld, worden onverwerkte uitzonderingen
naar het JIT-foutopsporingsprogramma gestuurd dat op de computer is geregistreerd
en worden niet door dit dialoogvenster verwerkt.
First, I have to say that this is really a brilliant feature that I really love! 👍
However, currently it seems to be only working when in text eiting mode, in other words, when cursor is within the tex box.
IMO, It could be also nice and convenient to support this operation other than that, if technically possbile. For example, to simply perform on the line that is currently selected or highlighted either in list view or wave view. FYI. :)
For example, when merging two lines (Ctrl Shift M) in Translation mode, extra line break would occur, which seems usually unwanted, and has to be manually removed. I think this could be improved some?
Hello. I managed to use use FFMPEG to detect scene changes. I guess this feature could be added to SE somehow. I'll explain what I did:
Download FFMPEG.
With fprobe.exe generate a text file. The command should be as follows:
ffprobe.exe -show_frames -of compact=p=0 -f lavfi "movie=videofile.mkv,select=gt(scene,0.4)" > scene-changes.txt
The "0.4" can range from 0 to 1. It takes a while to analize a long file! But I think this is because the result are REAL scene changes, not just a list of I-frames or key-frames. Every frame is analyzed and compared to the previous frame, I believe.
The result would be a text file with one line per scene change. Each line will be like this one:
media_type=video|key_frame=1|pkt_pts=1084|pkt_pts_time=1.084000 ...
Open Excel. Import the text file separating every column with "|". (Menu DATA, option FROM TEXT)
Delete every column except the third one (C). Replace "pkt_pts=" with "nothing" in every cell. You will get a column with milliseconds.
Save that column to a text file. You will have something like this:
1084
1251
44086
I hope you find this useful.
Kind regards,
Adrián
(Source of the ffprobe command: http://www.danyx.com/Automatic-scene-detect-via-ffmpeg-and-create-edl )
Copied from: http://code.google.com/p/subtitleedit/issues/detail?id=84
Hi,
i have suggestion, u can add multi-select subtitles (hold Ctrl + mouse click on subtitles) in waveline?
Eg. moveable selected subtitles on waveline and so on...
When changing the Play Rate (Speed), say, change it to "Very Fast", after restarting SE, it will display as "Very Fast", but actually plays at normal speed, unless setting it again manually. Thank a lot for checking! :)
Add shortcuts for quick convert selected text lower/upper just like in notepad++, Visual Studio...
CTRL+U = lower
CTRL+SHIFT+U = Upper
Before plugins returns value
1
00:00:00,001 --> 00:00:01,821
4ª Temporada | Episódio 02
-= Model =-
After plugins returns value
1
00:00:00,001 --> 00:00:01,821
4ª Temporada
Episódio 02
-= Model =-
http://www52.zippyshare.com/v/40718856/file.html
Note: I thought problem was while loading subtitle 'cause I replace:
\r\n with '|' and split the text but it wasn't.
This is very convenient when dealing with project, which has multiple language subtitles to handle. This is especially useful when adjusting the timings. Currently, it seems that you have to save twice in order to save the current adjusted result to both original and translation subtitles.
Or better to be another shortcut?
FYI. Thank you! :)
When using the Alignment feature and any of the JSON formats, the leading "{" is lost in the Source View. This also causes the file to be saved without the leading "{", and so reopening the file carries the issue over to the List View.
Take this line from List View, for example:
{\an8}This whole line will appear on the top of the screen.
The JSON in Source View will read like so:
{"start":4.468,"end":9.428,"text":"an8}This whole line will appear on the top of the screen."}
And after saving/reopening, the line will read in List View:
an8}This whole line will appear on the top of the screen.
Find-replace won't work for groups replacing:
E.g:
Text: Hello world!
Find what: (Hello) (world!).
Replace with: $2 $1.
It seems currently we cannot merge 3 or 3+ lines while keeping the original line breaks. Is that made by design? I thought it should work same as the "Merge Dialogue" feature, just don't need dashes.
Thanks!
I can tell the current Split line at cursor selection feature seems very intelligent, which can perform the split based on the line length propotionally. But let's see how to enhance it :)
Normally, for a long line, we will surely know which word we should split the line after, just by playing and pausing by a certain point inbetween. In this case, we've got the right split position in textbox, and the right time point in the wave view (which is the current time), so, we've got the most accurate conditions this time than asking SE to intelligently guess the split time point.
(PS: However, I think the automatic split method can also be useful, in some cases, too. So it may be nice to provide this as a new option other than replacing the older one) FYI. Thanks!
just tried to OCR subtitles from TS file (recorded from DVB-S). The best results i got is to set transparency to 250, activate grayscale and color checkboxes.
After activation of "Use color" checkbox the subtitle images are split into lines, and some of lines have just cuts of chars for the next subpicture. That cutted parts of letters are OCRing into unwanted dashes or underscores.
Is it possible to fine-tune line splitting to remove these letter cuts?
I can upload a sample if ou need it.
I've seen that there is a similar suggestion here. I just want to talk about my humble option:
I agree with this idea, and I believe it will work as a better workflow. Currently, I can see that we can double click on a wave clip to select that line actually, but it got three issues:
Considering the current Ctrl / Shift / Alt + LMB have already in use, my idea is: how about using RMB for wave selection? For example:
etc.
FYI. Thanks.! :)
We need a higher resolution logo to use in the program itself and on GitHub.
In 3.3.12 version missing option to manually select video engine library like MPlayer or VLC (if are installed as portable).
I am having issues with version 3.3.14. I am using the portable 32bit Windows version (tested in Win 7 and 8.1).
After ocring a vobsub subtitle if I click on an entry on the All Fixes window and try to navigate between entries using the arrow keys I get an error: "Common Language Runtime detected an invalid program".
Here is the debug log:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.InvalidProgramException: Common Language Runtime detected an invalid program.
at Nikse.SubtitleEdit.Forms.VobSubOcr.listBoxCopyToClipboard_KeyDown(Object , KeyEventArgs )
at System.Windows.Forms.Control.OnKeyDown(KeyEventArgs e)
at System.Windows.Forms.Control.ProcessKeyEventArgs(Message& m)
at System.Windows.Forms.Control.ProcessKeyMessage(Message& m)
at System.Windows.Forms.Control.WmKeyChar(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ListBox.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5466 (Win7SP1GDR.050727-5400)
SubtitleEdit
Assembly Version: 3.3.14.0
Win32 Version: 3.3.14.0
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5468 (Win7SP1GDR.050727-5400)
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5467 (Win7SP1GDR.050727-5400)
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5467 (Win7SP1GDR.050727-5400)
System.Xml
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
OpenSubtitlesUpload
Assembly Version: 1.0.0.0
Win32 Version: 3.3.14.0
WordSpellCheck
Assembly Version: 1.0.0.0
Win32 Version: 3.3.14.0
OpenSubtitlesUpload
Assembly Version: 1.0.0.0
Win32 Version: 3.3.14.0
WordSpellCheck
Assembly Version: 1.0.0.0
Win32 Version: 3.3.14.0
NHunspell
Assembly Version: 1.1.1.0
Win32 Version: 1.1.1.0
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
What do you think about preventing user to drop same subfile more than once in [Batch convert] listViewInputFiles?!
I've noticed a problem with "remove text for hearing impaired"
Let says Paragraph look like this:
Okay. Ivandro: Hello!
After removing HI:
Hello!
The correct text:
Okay. Hello!
this like:
♪
(rooster crowing
won't fix in in: Fix common errors
Note: text is like: "♪ \r\n(rooster crowing" , there is a space after the music symbol
Also remove leading will not remove text if like:
- ...romantic dinner?
- <i> Something like that.</i>
which should be:
- romantic dinner?
- <i> Something like that.</i>
ivandrofly@99c6b4b
Remove my last pull request so I can pull this one
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.