Compare commits
	
		
			56 Commits
		
	
	
		
			685365388e
			...
			master
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | cb019413cc | ||
|  | 40ca3e136b | ||
|  | 367cb440d8 | ||
|  | c565699875 | ||
|  | 75f227786f | ||
|  | 960de11b1b | ||
|  | e192c66157 | ||
|  | 23f1db5ffa | ||
|  | 362844f8a1 | ||
|  | 6ad2c3b50a | ||
|  | ddec8633e3 | ||
|  | c3943ff70e | ||
|  | 926ee16433 | ||
|  | 489435a87f | ||
|  | efceec0e48 | ||
|  | 10234d67da | ||
|  | 7e5a500279 | ||
|  | 8aca12c422 | ||
|  | b94f865831 | ||
|  | 48cc4f8a27 | ||
|  | 889b8dd6dc | ||
|  | ffce9aecdf | ||
|  | 4dbf9d9c03 | ||
|  | 03922a76d2 | ||
|  | f23423ca8d | ||
|  | 3681ff33f3 | ||
|  | 59b55bac6c | ||
|  | 2bf9b467bb | ||
|  | 6959e83327 | ||
|  | 2f425aa9cf | ||
|  | 556d88d73a | ||
|  | af52c80a8e | ||
|  | 04d23ca1b2 | ||
|  | 88d9d15496 | ||
|  | b1c58fc53a | ||
|  | 4070f34a60 | ||
|  | cb600b920d | ||
|  | bb5333ffca | ||
|  | 1ed4bbf6df | ||
|  | 9a8f97a278 | ||
|  | 650724c966 | ||
|  | 40592dcec2 | ||
|  | da13f3e9c8 | ||
|  | b4e304d9ab | ||
|  | 44d47a564c | ||
|  | b8394069fb | ||
|  | 124772aaeb | ||
|  | 076e3c990b | ||
|  | d549311e20 | ||
|  | 4a1bf64bda | ||
|  | 58ec094cfc | ||
|  | 0f46dc9fda | ||
|  | cf4850c8dc | ||
|  | ed0494b540 | ||
|  | 22592214bb | ||
|  | 0678716c1c | 
							
								
								
									
										6
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | *.pcm | ||||||
|  | *.ppm | ||||||
|  | *.ts | ||||||
|  | *.mkv | ||||||
|  | part* | ||||||
|  | venv/ | ||||||
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | clean: | ||||||
|  | 	rm -f *.ppm *.pcm part* *.srt *-ts.txt *-full.h264 *-novideo.mkv fre.*  | ||||||
							
								
								
									
										27
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								README.md
									
									
									
									
									
								
							| @@ -15,12 +15,37 @@ to a reference frame (so called I-frames). These frames are only present roughly | |||||||
| which corresponds to quite long duration (in the order of a second). | which corresponds to quite long duration (in the order of a second). | ||||||
|  |  | ||||||
| I really want to cut the movie with a better precision. So I have written a Python script | I really want to cut the movie with a better precision. So I have written a Python script | ||||||
| that leverages _ffmpeg_, _ffprobe_ and _mkvmerge_ to do the job with the required precision. | that leverages _ffmpeg_, _ffprobe_ and _mkvmerge_, _subvodocr_ to do the job with the required precision. | ||||||
|  |  | ||||||
| # Parameters | # Parameters | ||||||
|  |  | ||||||
| # How does it work ? | # How does it work ? | ||||||
|  |  | ||||||
|  | The processing follows a quite long pipeline: | ||||||
|  |  | ||||||
|  | 1. The original .ts file is first transformed into an .mp4 file using _ffmpeg_ to correct timestamps: | ||||||
|  |  | ||||||
|  | 2. The .mp4 is then transformed into a Matroska container (which is the default container) still using _ffmpeg_: | ||||||
|  |  | ||||||
|  | 3. Then the movie is then cut using the indications passed as parameters. It is possible to give as many parts as needed. | ||||||
|  |  | ||||||
|  | Each part is treated with the same algorithm. | ||||||
|  | Trouver l'estampille de la trame 'I' la plus proche (mais postérieure) au début de la portion. | ||||||
|  | Trouver l'estampille de la trame 'I' la plus proche (mais antérieure) à la fin de la portion. | ||||||
|  | On a alors | ||||||
|  | debut  -----    trame  --------- trame  ---------  fin. | ||||||
|  | 'B/P'  'B/P'*   'I'               'I'   'B/P'*   'B/P' | ||||||
|  | Si la trame de début est déjà 'I', il n'y a rien à faire (idem pour la fin). | ||||||
|  | Sinon on extrait les trames 'B' ou 'P' depuis le début jusqu'à la trame 'I' non incluse | ||||||
|  |  | ||||||
|  | 4. Then each part that have been previously obtained are merged using _mkvmerge_: | ||||||
|  |  | ||||||
|  | 5. The subtitles (image based) are then extracted using _mkvextract_: | ||||||
|  |  | ||||||
|  | 6. These images are then processed using _vobsubocr_ to create SRT files: | ||||||
|  |  | ||||||
|  | 7. The SRT files are then remuxed inside the Matroska container using _mkvmerge_: | ||||||
|  |  | ||||||
| # How to determine where to cuts | # How to determine where to cuts | ||||||
|  |  | ||||||
| Use `mpv --osd-fractions --osd-level=3 ./movie.ts` | Use `mpv --osd-fractions --osd-level=3 ./movie.ts` | ||||||
|   | |||||||
							
								
								
									
										3607
									
								
								removeads.py
									
									
									
									
									
								
							
							
						
						
									
										3607
									
								
								removeads.py
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,5 +1,6 @@ | |||||||
| xmltodict | xmltodict | ||||||
| requests | requests | ||||||
| pygame |  | ||||||
| coloredlogs | coloredlogs | ||||||
| tqdm | tqdm | ||||||
|  | iso639-lang | ||||||
|  | hexdump | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user