Compare commits
	
		
			238 Commits
		
	
	
		
			v2017-03-0
			...
			v2017-10-2
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 46ffb01181 | ||
|  | fe937d7e4a | ||
|  | 2cc48104b1 | ||
|  | 7e7942149e | ||
|  | 35a217c20b | ||
|  | ac0697f1c4 | ||
|  | 44ee05bcaf | ||
|  | 2e3c0b861b | ||
|  | f34858d644 | ||
|  | c18a193973 | ||
|  | 8cce1275a8 | ||
|  | fa08a2dbe8 | ||
|  | 09e637e6c4 | ||
|  | 5cb449afcc | ||
|  | b0f2b62767 | ||
|  | 48a51a6f6a | ||
|  | c552ffe699 | ||
|  | f4850a6010 | ||
|  | 0bddb123e1 | ||
|  | 66139ce781 | ||
|  | 921b75bb2e | ||
|  | 1e705b4914 | ||
|  | cf8756ced7 | ||
|  | c6a579a0bf | ||
|  | 494993d4c2 | ||
|  | a472a09597 | ||
|  | 05460bde51 | ||
|  | 0c32e03f3a | ||
|  | 1ac02df52a | ||
|  | 24b8c5ac35 | ||
|  | 9fceb27952 | ||
|  | 1e9629051f | ||
|  | b5e95143ca | ||
|  | 0a2e1ca63a | ||
|  | 21a019612c | ||
|  | 80ba7cfaa6 | ||
|  | 132a00f9e7 | ||
|  | d73ae6a382 | ||
|  | f427a05c89 | ||
|  | 3555a692dc | ||
|  | 11bf8d4de2 | ||
|  | 4ccf83b953 | ||
|  | f6be6aa37e | ||
|  | 04432d0323 | ||
|  | ea323d4b01 | ||
|  | 082f9a1175 | ||
|  | 04776428c8 | ||
|  | b1f7f5cad4 | ||
|  | 6d41096dd5 | ||
|  | 77c31a7c5c | ||
|  | 0c9086d70d | ||
|  | 2b6dfac5b0 | ||
|  | ba21f8b88d | ||
|  | b483acdb6d | ||
|  | d91fb336b9 | ||
|  | 97f62ae600 | ||
|  | 98d2459b79 | ||
|  | 719e3a73f5 | ||
|  | 439f1933da | ||
|  | 0f52cde91a | ||
|  | 8a14c6e5fb | ||
|  | 8c04a58949 | ||
|  | 6e93313528 | ||
|  | b7bc7218b8 | ||
|  | 7ec21fb6d2 | ||
|  | 1e2b2dd18f | ||
|  | 9d4e18e6ef | ||
|  | 61681c8dd3 | ||
|  | 71e68b5e2e | ||
|  | 872eec2aa7 | ||
|  | 863f70054d | ||
|  | 16c8d68e39 | ||
|  | 08593bb221 | ||
|  | 516a78d397 | ||
|  | 89ea7a28bd | ||
|  | 763e9c594f | ||
|  | fd7528a6bd | ||
|  | efd9e55b66 | ||
|  | da94557324 | ||
|  | f5887473f3 | ||
|  | 17ea63f7b9 | ||
|  | d7db07bcab | ||
|  | e92a1cf713 | ||
|  | 96903f018c | ||
|  | fcc95ce518 | ||
|  | 8c349b8282 | ||
|  | 93627e0da2 | ||
|  | 593bb63e23 | ||
|  | 3a58b6ae82 | ||
|  | 11848054a3 | ||
|  | c0e9a05e1d | ||
|  | 7cbdd6a074 | ||
|  | fa1cda441e | ||
|  | 7d07c3818a | ||
|  | 3374812782 | ||
|  | 9c871d760a | ||
|  | 22fa09470b | ||
|  | 9bae51d6a4 | ||
|  | b598ed1040 | ||
|  | 23148d4721 | ||
|  | df422912d6 | ||
|  | e5f6f5cf2d | ||
|  | 96c382943b | ||
|  | ef6e5d07dc | ||
|  | bf260c2ee2 | ||
|  | 7f1a765dd8 | ||
|  | 6c85518288 | ||
|  | 63abcd36d0 | ||
|  | 905b75547b | ||
|  | 7aa124c3d1 | ||
|  | 50185eb04e | ||
|  | 975766188f | ||
|  | fd1d596f50 | ||
|  | 18a80c10f1 | ||
|  | c6f7593d65 | ||
|  | e6962b3ca4 | ||
|  | 0ba25be082 | ||
|  | e4611d8b6b | ||
|  | d609a9b943 | ||
|  | d132e86f1d | ||
|  | e1e1060904 | ||
|  | 8b5fa8aa6a | ||
|  | 7bd05a8163 | ||
|  | 126fb1d284 | ||
|  | 9799316c19 | ||
|  | 6e4ed74841 | ||
|  | 0a6204264c | ||
|  | c835746c24 | ||
|  | 86e53b92c8 | ||
|  | 41423e0917 | ||
|  | 9a0875b692 | ||
|  | 0473e85448 | ||
|  | b57349a3ec | ||
|  | 9f3b56305c | ||
|  | 5593b86ab7 | ||
|  | 3544828fb1 | ||
|  | c8691285cc | ||
|  | e4a660967b | ||
|  | 86138a55e1 | ||
|  | 4c14af3209 | ||
|  | 8d18077af5 | ||
|  | 8871868eda | ||
|  | e1fb86ec94 | ||
|  | 7fe503d324 | ||
|  | 513631c80b | ||
|  | 22ff2368ad | ||
|  | c81827d98f | ||
|  | 19d249a09b | ||
|  | 04abe26b53 | ||
|  | ab3a8b25cf | ||
|  | 40e8f8c73c | ||
|  | 129540fbfc | ||
|  | 8578f01e1c | ||
|  | 0158a85a4b | ||
|  | cc724200d1 | ||
|  | 0c03f57df6 | ||
|  | 659e920e0b | ||
|  | 2037ec922f | ||
|  | c745152f8e | ||
|  | e12bbb0c6d | ||
|  | 2c0e555dc1 | ||
|  | ed81a16458 | ||
|  | 172657b1bb | ||
|  | 7af1a3de2c | ||
|  | 3f76abc053 | ||
|  | e3d11b3e7c | ||
|  | dbe9e1a049 | ||
|  | 0fe609a683 | ||
|  | 704a87f22c | ||
|  | b1a5f14e8c | ||
|  | 55b34452f7 | ||
|  | 18e2c17ab4 | ||
|  | e4309d6664 | ||
|  | 750810d392 | ||
|  | b2a04d138f | ||
|  | b53f6c9984 | ||
|  | 64a362314c | ||
|  | 2a71179776 | ||
|  | 77e346c067 | ||
|  | b995fb05c5 | ||
|  | d30741e378 | ||
|  | e3b01e2aa8 | ||
|  | 750a763157 | ||
|  | 0a6e5a4a7a | ||
|  | 54a8ab6057 | ||
|  | e762c7dc42 | ||
|  | cb7f001444 | ||
|  | 89039f55b3 | ||
|  | 59e6c6d879 | ||
|  | 195bc5446e | ||
|  | a1cc5a4428 | ||
|  | 58663a869f | ||
|  | 05d16367f0 | ||
|  | 9477bcfe0a | ||
|  | ad439d3b78 | ||
|  | 736b01e426 | ||
|  | 57166fe61d | ||
|  | ec26d2038a | ||
|  | 321d998b5a | ||
|  | 009670eed1 | ||
|  | d3a941a725 | ||
|  | d334d7b4de | ||
|  | d08cf349f6 | ||
|  | b5b06021b0 | ||
|  | e0ceeb0d73 | ||
|  | dc47dbc618 | ||
|  | 28ae979652 | ||
|  | 0e2a2c2bfe | ||
|  | 388b107a3f | ||
|  | 117ebf506d | ||
|  | 9356f9af93 | ||
|  | 4d2d5c7c81 | ||
|  | db202300e4 | ||
|  | bf55928a63 | ||
|  | 6cea5862d6 | ||
|  | dca518a9b6 | ||
|  | 45828357c9 | ||
|  | 10765da46a | ||
|  | ab2e6fb789 | ||
|  | e3e48ded1a | ||
|  | 9d58f313d4 | ||
|  | 1371b380c9 | ||
|  | dcb74e8da6 | ||
|  | bd0ac73d78 | ||
|  | 7e7da29093 | ||
|  | 47acc400ce | ||
|  | c117e18c0c | ||
|  | 0921bd68d5 | ||
|  | d0e13f3eb6 | ||
|  | 82a1cfeb8b | ||
|  | 472fcfe833 | ||
|  | 0907590913 | ||
|  | 0ed5cfff65 | ||
|  | e3deb3af4e | ||
|  | 5869850d4b | ||
|  | a5a49e1f28 | ||
|  | cdd65fd765 | ||
|  | c85d6c5874 | 
							
								
								
									
										7
									
								
								css/bootstrap.min.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
							
								
								
									
										230
									
								
								css/css.css
									
									
									
									
									
								
							
							
						
						| @@ -1,84 +1,211 @@ | ||||
| h1,h2,h3,h4,h5,h6 { | ||||
| html, body { | ||||
|   line-height: 1.5; | ||||
|   font-size: 16px; | ||||
|   color: #888888; | ||||
|   background-color: #060606; | ||||
|   margin: 0; | ||||
|   word-break: break-word; | ||||
| } | ||||
|  | ||||
| .grid { | ||||
|   display: grid; | ||||
|   align-content: center; | ||||
|   grid-template-areas: | ||||
|    "header" | ||||
|    "sidebar" | ||||
|    "content" | ||||
|    "footer"; | ||||
| } | ||||
|  | ||||
| .header { | ||||
|   grid-area: header; | ||||
|   text-align: center; | ||||
| } | ||||
|  | ||||
| .content { | ||||
|   grid-area: content; | ||||
| } | ||||
|  | ||||
| .sidebar { | ||||
|   grid-area: sidebar; | ||||
| } | ||||
|  | ||||
| .footer { | ||||
|   grid-area: footer; | ||||
|   text-align: center; | ||||
| } | ||||
|  | ||||
| @media only screen and (max-width: 999px) { | ||||
|   .grid { | ||||
|     grid-template-columns: 1fr; | ||||
|     grid-template-areas: | ||||
|     "header" | ||||
|     "sidebar" | ||||
|     "content" | ||||
|     "footer"; | ||||
|   } | ||||
| } | ||||
|  | ||||
| @media only screen and (min-width: 1000px) { | ||||
|   .grid { | ||||
|     grid-gap: 1rem; | ||||
|     grid-template-columns: 25% auto; | ||||
|     grid-template-areas: | ||||
|     "header  header" | ||||
|     "sidebar content" | ||||
|     "footer  footer"; | ||||
|   } | ||||
| } | ||||
|  | ||||
| @media only screen and (min-width: 1500px) { | ||||
|   .grid { | ||||
|     max-width: 70%; | ||||
|     margin: 0 auto; | ||||
|   } | ||||
| } | ||||
|  | ||||
| a { | ||||
|   color: #91cf91; | ||||
| } | ||||
|  | ||||
| a:hover { | ||||
|   color: #5cb85c; | ||||
| } | ||||
|  | ||||
| a:visited { | ||||
|   color: #449d44; | ||||
| } | ||||
|  | ||||
| .license img { | ||||
|   max-width: 10em; | ||||
|   display: inline; | ||||
| } | ||||
|  | ||||
| h1, h2, h3, h4, h5, h6 { | ||||
|   font-family: 'Montserrat', sans-serif; | ||||
| } | ||||
|  | ||||
| h1 { | ||||
|   letter-spacing: 0.1em; | ||||
|   font-size: 7vw; | ||||
| } | ||||
|  | ||||
| h2 { | ||||
|   font-size: 1.5em; | ||||
|   margin: 5px 8px 8px 8px; | ||||
| } | ||||
|  | ||||
| .heading { | ||||
|   font-size: 2em; | ||||
|   margin: 6px 0px 12px 0px; | ||||
| } | ||||
|  | ||||
| h3 { | ||||
|   font-size: 1.5em; | ||||
| } | ||||
|  | ||||
| .intro-lead { | ||||
|   font-family: 'Montserrat', sans-serif; | ||||
|   font-size: 1em; | ||||
| } | ||||
|  | ||||
| code { | ||||
|   padding: 2px 4px; | ||||
|   color: #c7254e; | ||||
|   background-color: #f9f2f4; | ||||
|   border-radius: 4px; | ||||
|   word-break: break-all; | ||||
|   word-wrap: break-word; | ||||
| } | ||||
|  | ||||
| dd { | ||||
|   padding-left:24px; | ||||
|   padding-left: 24px; | ||||
| } | ||||
|  | ||||
| dt { | ||||
|   font-family: Menlo,Monaco,Consolas,"Courier New",monospace; | ||||
|   font-family: Menlo, Monaco, Consolas, "Courier New", monospace; | ||||
| } | ||||
|  | ||||
| img { | ||||
|   display: block; | ||||
|   margin-left: auto; | ||||
|   margin-right: auto; | ||||
|   width: 100%; | ||||
| } | ||||
|  | ||||
| .sample-image { | ||||
|   margin-bottom: 18px; | ||||
| } | ||||
|  | ||||
| h1 { | ||||
|   letter-spacing:8px; | ||||
|   font-size:86px; | ||||
|   line-height:120px; | ||||
| } | ||||
|  | ||||
| div { | ||||
|   font-family: 'Merriweather', serif; | ||||
|   color: white; | ||||
| } | ||||
|  | ||||
| .btn { | ||||
|   margin: 8px; | ||||
| .sidebar a { | ||||
|   text-decoration: none; | ||||
| } | ||||
|  | ||||
| .btn { | ||||
|   display: inline-block; | ||||
|   vertical-align: middle; | ||||
|   -webkit-transform: translateZ(0); | ||||
|   transform: translateZ(0); | ||||
|   box-shadow: 0 0 1px rgba(0, 0, 0, 0); | ||||
|   -webkit-backface-visibility: hidden; | ||||
|   backface-visibility: hidden; | ||||
|   -moz-osx-font-smoothing: grayscale; | ||||
| .recipe, .contents-list { | ||||
|   color: white; | ||||
|   background-color: #383838; | ||||
|   padding: 14px; | ||||
|   font-family: "Montserrat"; | ||||
|   letter-spacing: 0.05em; | ||||
|   border: 1px solid black; | ||||
|   cursor: pointer; | ||||
|   position: relative; | ||||
|   padding-left: 2.5em; | ||||
|   -webkit-transition-duration: 0.3s; | ||||
|   transition-duration: 0.3s; | ||||
|   padding-left: 2.8em; | ||||
|   transition: all .5s ease-out; | ||||
| } | ||||
| .btn:before { | ||||
|  | ||||
| .contents-list { | ||||
|   font-size: 0.9em; | ||||
| } | ||||
|  | ||||
| nav .heading { | ||||
|   word-break: normal; | ||||
| } | ||||
|  | ||||
| .recipe { | ||||
|   display: block; | ||||
|   width: 90%; | ||||
| } | ||||
|  | ||||
| .recipe:hover, .contents-list:hover { | ||||
|   background-color: #449d44; | ||||
| } | ||||
|  | ||||
| .recipe:before { | ||||
|   content: "💫"; | ||||
| } | ||||
|  | ||||
| .contents-list:before { | ||||
|   content: "📼"; | ||||
| } | ||||
|  | ||||
| .recipe:before, .contents-list:before { | ||||
|   position: absolute; | ||||
|   left: 1em; | ||||
|   padding: 0 1px; | ||||
|   -webkit-transform: translateZ(0); | ||||
|   transform: translateZ(0); | ||||
|   -webkit-transition-duration: 0.3s; | ||||
|   transition-duration: 0.3s; | ||||
|   -webkit-transition-property: transform; | ||||
|   transition-property: transform; | ||||
|   -webkit-transition-timing-function: ease-out; | ||||
|   transition-timing-function: ease-out; | ||||
|   padding-right: 1em; | ||||
| } | ||||
| .btn:hover:before, .btn:focus:before, .btn:active:before { | ||||
|   -webkit-transform: scale(1.3) translateZ(0); | ||||
|   transform: scale(1.3) translateZ(0); | ||||
|  | ||||
| .recipe:hover:before, .recipe:focus:before, .recipe:active:before { | ||||
|   transform: scale(1.5) translateX(0.1em); | ||||
|   transition: 0.5s; | ||||
| } | ||||
|  | ||||
| .contents-list:hover:before, .contents-list:focus:before, .contents-list:active:before { | ||||
|   transform: scale(1.8) translateX(0.3em); | ||||
|   transition: 0.5s; | ||||
| } | ||||
|  | ||||
| .codeblock { | ||||
|   font-family: monospace | ||||
|   padding: 2px 4px; | ||||
|   font-size: 90%; | ||||
|   color: #c7254e; | ||||
|   background-color: #f9f2f4; | ||||
|   border-radius: 4px | ||||
|   border-radius: 4px; | ||||
| } | ||||
|  | ||||
| .beware { | ||||
| @@ -88,3 +215,30 @@ div { | ||||
| .footnote { | ||||
|   font-size: 90%; | ||||
| } | ||||
|  | ||||
| .well { | ||||
|   padding: 1em; | ||||
|   margin-bottom: 0.5em; | ||||
|   background-color: #151515; | ||||
|   border: 1px solid #030303; | ||||
|   border-radius: 8px; | ||||
|   box-shadow: inset 0 1px 1px rgba(0,0,0,0.05); | ||||
| } | ||||
|  | ||||
| .hiding { | ||||
|   opacity: 0; | ||||
| 	height: 0; | ||||
|   overflow: hidden; | ||||
| } | ||||
|  | ||||
| input { | ||||
| 	position: absolute; | ||||
| 	left: -999em | ||||
| } | ||||
|  | ||||
| input[type=checkbox]:checked + div { | ||||
| 	opacity: 1; | ||||
|   height: auto; | ||||
|   overflow: hidden; | ||||
|   transition: opacity .5s linear, height .5s linear; | ||||
| } | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								img/16_32_abitscope.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 450 KiB | 
							
								
								
									
										
											BIN
										
									
								
								img/brng.gif
									
									
									
									
									
								
							
							
						
						| Before Width: | Height: | Size: 7.6 MiB | 
							
								
								
									
										
											BIN
										
									
								
								img/cc.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.4 KiB | 
							
								
								
									
										
											BIN
										
									
								
								img/eia608_captions.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.1 MiB | 
							
								
								
									
										
											BIN
										
									
								
								img/ivtc_originalvideo.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.4 MiB | 
							
								
								
									
										
											BIN
										
									
								
								img/ivtc_result.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.4 MiB | 
							
								
								
									
										
											BIN
										
									
								
								img/outside_broadcast_range.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.9 MiB | 
							
								
								
									
										
											BIN
										
									
								
								img/vhs.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 15 KiB | 
							
								
								
									
										3758
									
								
								index.html
									
									
									
									
									
								
							
							
						
						
							
								
								
									
										6
									
								
								js/bootstrap.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
							
								
								
									
										32
									
								
								js/js.js
									
									
									
									
									
								
							
							
						
						| @@ -1,28 +1,20 @@ | ||||
| $(document).ready(function() { | ||||
|  | ||||
|   $(function () { | ||||
|     $('[data-toggle="tooltip"]').tooltip() | ||||
|   }); | ||||
|  | ||||
|   // open modal window if a hash is found in URL | ||||
|   // open recipe window if a hash is found in URL | ||||
|   if(window.location.hash) { | ||||
|     $(window.location.hash).modal('show'); | ||||
|     // add direct link to modal window | ||||
|     $(".link").empty(); | ||||
|     $(".link").append("<small>Link to this command: <a href="+window.location.href+">"+window.location.href+"</a></small>"); | ||||
|     id = window.location.hash | ||||
|     document.getElementById(id.substring(1)).checked = true; | ||||
|     $('html, body').animate({ scrollTop: $(id).offset().top}, 1000); | ||||
|     $(id).closest('div').find('.link').empty(); | ||||
|     $(id).closest('div').find('.link').append("<small>Link to this command: <a href="+window.location.href+">"+window.location.href+"</a></small>"); | ||||
|   } | ||||
|  | ||||
|   // add hash to URL when modal is opened | ||||
|   $('span[data-toggle="modal"]').on("click", function(){ | ||||
|     window.location.hash = $(this).attr("data-target"); | ||||
|     // add direct link to modal window | ||||
|     $(".link").empty(); | ||||
|     $(".link").append("<small>Link to this command: <a href="+window.location.href+">"+window.location.href+"</a></small>"); | ||||
|   }); | ||||
|  | ||||
|   // remove hash from URL when modal is closed | ||||
|   $(document).on('hide.bs.modal', function (e) { | ||||
|     history.pushState("", document.title, window.location.pathname); | ||||
|   // add hash URL when recipe is opened | ||||
|   $('label[class="recipe"]').on("click", function(){ | ||||
|     id = $(this).attr("for"); | ||||
|     window.location.hash = ('#' + id) | ||||
|     $('#' + id).closest('div').find('.link').empty(); | ||||
|     $('#' + id).closest('div').find('.link').append("<small>Link to this command: <a href="+window.location.href+">"+window.location.href+"</a></small>"); | ||||
|   }); | ||||
|  | ||||
| }); | ||||
|   | ||||
							
								
								
									
										67
									
								
								readme.md
									
									
									
									
									
								
							
							
						
						| @@ -1,37 +1,55 @@ | ||||
| # [ffmprovisr](http://amiaopensource.github.io/ffmprovisr) | ||||
|  | ||||
| Repository of useful FFmpeg command lines for archivists! [AMIA hackday](http://wiki.curatecamp.org/index.php/Association_of_Moving_Image_Archivists_%26_Digital_Library_Federation_Hack_Day_2015) edition. | ||||
| Repository of useful FFmpeg command lines for archivists! | ||||
|  | ||||
| ## What is this? | ||||
|  | ||||
| Project Objective: To facilitate better understanding of FFmpeg through collaborative sharing of useful scripts and detailed flag-level description of how each script works so archivists can copy-paste and produce their own scripts but also understand how and why they work. | ||||
| #### Project Objective | ||||
|  | ||||
| To facilitate better understanding of FFmpeg through collaborative sharing of useful scripts and detailed flag-level description of how each script works, so archivists can copy-paste and produce their own scripts, but also understand how and why they work. | ||||
|  | ||||
| ## How do I see it? | ||||
|  | ||||
| Code stuff in the gh-pages branch (the default primary branch). Readme is right here. The site is live and lives on github pages. You can see it [here](http://amiaopensource.github.io/ffmprovisr), or you can download a [release](https://github.com/amiaopensource/ffmprovisr/releases) and use it locally. | ||||
| The code is found in the gh-pages branch (the default primary branch). Readme is right here. You can see the site live on [GitHub pages](http://amiaopensource.github.io/ffmprovisr). | ||||
|  | ||||
| You can also install the latest [release](https://github.com/amiaopensource/ffmprovisr/releases) on your computer with the command: | ||||
| ``` | ||||
| brew install amiaopensource/amiaos/ffmprovisr | ||||
| ``` | ||||
| and then call it locally with the command: | ||||
| ``` | ||||
| ffmprovisr | ||||
| ``` | ||||
| This works currently under macOS, Linux and the Linux subsystem on Windows. On classic Windows you can install the last [release](https://github.com/amiaopensource/ffmprovisr/releases) manually and the open `index.html` in a browser. | ||||
|  | ||||
| ## How do I contribute? | ||||
|  | ||||
| You are welcome to edit the codebase yourself or just supply the information and ask it to be added to the site. | ||||
| You are welcome to edit the codebase yourself, or just supply the information and ask it to be added to the site. | ||||
|  | ||||
| To contribute to this project directly (and more quickly), clone this repository and create a new branch (`git checkout -b your-branch-name`) and add or modify a new block in index.html. Then submit a pull request and someone can review and integrate your code. There is a commented-out sample available at the bottom of index.html that can be used to build your own block. | ||||
| #### Edit codebase | ||||
|  | ||||
| If you are having trouble with the coding it yourself or with github, feel free to [submit an issue](https://github.com/amiaopensource/ffmprovisr/issues) with the kind of command you would like to see added to the site. | ||||
| To contribute to this project directly (and more quickly), clone this repository and create a new branch (`git checkout -b your-branch-name`) and add or modify a new block in `index.html`. Then [submit a pull request](https://github.com/amiaopensource/ffmprovisr/pulls) and the maintainers will review and integrate your code. There is a commented-out sample block available at the bottom of `index.html` that can be as a guideline for your command. | ||||
|  | ||||
| #### Make a request | ||||
|  | ||||
| If you are having trouble with coding it yourself or with GitHub, feel free to [submit an issue](https://github.com/amiaopensource/ffmprovisr/issues) with the kind of command you would like to see added to the site. | ||||
|  | ||||
| #### General help | ||||
|  | ||||
| If you want to help but don't have a new script to add, you can help us by testing out the scripts available, by refining or clarifying the documentation, or [creating an issue](https://github.com/amiaopensource/ffmprovisr/issues) for anything that sounds confusing and requires clarification. | ||||
|  | ||||
| ## License | ||||
|  | ||||
| <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a><br />This <span xmlns:dct="http://purl.org/dc/terms/" href="http://purl.org/dc/dcmitype/InteractiveResource" rel="dct:type">work</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="http://amiaopensource.github.io/ffmprovisr/" property="cc:attributionName" rel="cc:attributionURL">ffmprovisr</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.<br />Based on a work at <a xmlns:dct="http://purl.org/dc/terms/" href="https://github.com/amiaopensource/ffmprovisr" rel="dct:source">https://github.com/amiaopensource/ffmprovisr</a>. | ||||
|  | ||||
| ## Code of Conduct | ||||
|  | ||||
| You can read our contributor code of conduct [here](https://github.com/amiaopensource/ffmprovisr/blob/gh-pages/code_of_conduct.md). | ||||
|  | ||||
| ## Maintainers | ||||
|  | ||||
| [Ashley Blewer](https://github.com/ablwr), [Katherine Frances Nagels](https://github.com/kfrn), [Kieran O'Leary](https://github.com/kieranjol) and [Reto Kromer](https://github.com/retokromer) | ||||
|  | ||||
| ## Contributors | ||||
| * Gathered using [octohatrack](https://github.com/LABHR/octohatrack) | ||||
|  | ||||
| GitHub Contributors:   | ||||
| *GitHub Contributors*:   | ||||
| ablwr (Ashley)   | ||||
| dericed (Dave Rice)   | ||||
| edsu (Ed Summers)   | ||||
| @@ -40,39 +58,50 @@ kfrn (Katherine Frances Nagels) | ||||
| kgrons (Kathryn Gronsbell)   | ||||
| kieranjol (Kieran O'Leary)   | ||||
| llogan (Lou)   | ||||
| pjotrek-b (Peter B.)   | ||||
| privatezero (Andrew Weaver)   | ||||
| retokromer (Reto Kromer)   | ||||
| rfraimow   | ||||
|  | ||||
| All Contributors:   | ||||
|    | ||||
| *All Contributors*:   | ||||
| ablwr (Ashley)   | ||||
| audiovisualopen   | ||||
| brainwane (Sumana Harihareswara)   | ||||
| bturkus   | ||||
| dericed (Dave Rice)   | ||||
| edsu (Ed Summers)   | ||||
| Fizz24   | ||||
| jamessam (Jim)   | ||||
| jamessam (Jim Sam)   | ||||
| jfarbowitz (Jonathan Farbowitz)   | ||||
| jronallo (Jason Ronallo)   | ||||
| kellyhaydon (metacynic)   | ||||
| kfrn (Katherine Frances Nagels)   | ||||
| kgrons (Kathryn Gronsbell)   | ||||
| kieranjol (Kieran O'Leary)   | ||||
| llogan (Lou)   | ||||
| mulvya   | ||||
| pjotrek-b (Peter B.)   | ||||
| privatezero (Andrew Weaver)   | ||||
| retokromer (Reto Kromer)   | ||||
| rfraimow   | ||||
| richardpl (Paul B Mahol)   | ||||
| todrobbins (Tod Robbins)   | ||||
|  | ||||
|    | ||||
| Repo: amiaopensource/ffmprovisr   | ||||
| GitHub Contributors: 11   | ||||
| All Contributors: 18   | ||||
| GitHub Contributors: 12   | ||||
| All Contributors: 22   | ||||
|  | ||||
| ## AVHack Team: | ||||
| ## AVHack Team | ||||
|  | ||||
| [Ashley Blewer](https://github.com/ablwr), Eddy Colloton, Rebecca Dillmeier, [Jonathan Farbowitz](https://github.com/jfarbowitz), Rebecca Fraimow, Samuel Gutterman, Kelly Haydon, [Reto Kromer](https://github.com/retokromer), Nicole Martin, [Katherine Frances Nagels](https://github.com/kfrn), [Kieran O'Leary](https://github.com/kieranjol), Catriona Schlosser, Ben Turkus | ||||
| [Association of Moving Image Archivists & Digital Library Federation Hack Day 2015](http://wiki.curatecamp.org/index.php/Association_of_Moving_Image_Archivists_%26_Digital_Library_Federation_Hack_Day_2015) | ||||
|  | ||||
| [Ashley Blewer](https://github.com/ablwr), [Eddy Colloton](https://github.com/eddycolloton), Rebecca Dillmeier, [Jonathan Farbowitz](https://github.com/jfarbowitz), [Rebecca Fraimow](https://github.com/rfraimow), Samuel Gutterman, [Kelly Haydon](https://github.com/kellyhaydon), [Reto Kromer](https://github.com/retokromer), Nicole Martin, [Katherine Frances Nagels](https://github.com/kfrn), [Kieran O'Leary](https://github.com/kieranjol), Catriona Schlosser, [Ben Turkus](https://github.com/bturkus) | ||||
|  | ||||
| ## Sister projects | ||||
|  | ||||
| [Script Ahoy](http://dd388.github.io/crals/): Community Resource for Archivists and Librarians Scripting   | ||||
| [sourcecaster](https://datapraxis.github.io/sourcecaster/): helps you use the command line to work through common challenges that come up when working with digital primary sources. | ||||
|  | ||||
| ## License | ||||
|  | ||||
| <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a><br />This <span xmlns:dct="http://purl.org/dc/terms/" href="http://purl.org/dc/dcmitype/InteractiveResource" rel="dct:type">work</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="http://amiaopensource.github.io/ffmprovisr/" property="cc:attributionName" rel="cc:attributionURL">ffmprovisr</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.<br />Based on a work at <a xmlns:dct="http://purl.org/dc/terms/" href="https://github.com/amiaopensource/ffmprovisr" rel="dct:source">https://github.com/amiaopensource/ffmprovisr</a>. | ||||
|   | ||||
							
								
								
									
										37
									
								
								check_framemd5.sh → scripts/check_audio_framemd5.sh
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| @@ -1,19 +1,19 @@ | ||||
| #!/usr/bin/env bash | ||||
|   SCRIPT=$(basename "${0}") | ||||
|  VERSION='2016-12-31' | ||||
|  VERSION='2017-07-08' | ||||
|   AUTHOR='ffmprovisr' | ||||
|      RED='\033[1;31m' | ||||
|     BLUE='\033[1;34m' | ||||
|       NC='\033[0m' | ||||
| 
 | ||||
| if [[ ${OSTYPE} = "cygwin" ]] || [ ! $(which diff) ]; then | ||||
| if [[ "${OSTYPE}" = "cygwin" ]] || [ ! $(which diff) ]; then | ||||
|     echo -e "${RED}Error: 'diff' is not installed by default. Please install 'diffutils' from Cygwin.${NC}" | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
| _output_prompt(){ | ||||
|     cat <<EOF | ||||
| Usage: ${SCRIPT} [-h] | [ -i <av_file> -m <md5_file> ] | ||||
| Usage: ${SCRIPT} -i <av_file> -m <md5_file> | -h | ||||
| EOF | ||||
|     exit 1 | ||||
| } | ||||
| @@ -21,18 +21,16 @@ EOF | ||||
| _output_help(){ | ||||
|     cat <<EOF | ||||
| Syntax: | ||||
|   ${SCRIPT} | ||||
|     Prompts a short help message. | ||||
|   ${SCRIPT} -h | ||||
|     This help. | ||||
|   ${SCRIPT} -i <av_file> -m <md5_file> | ||||
|     Pass to the script the audio-visual file and the corresponding MD5 | ||||
|     file to check. | ||||
|   ${SCRIPT} -h | ||||
|     This help. | ||||
| Dependency: | ||||
|   ffmpeg | ||||
| About: | ||||
|   Version: ${VERSION} | ||||
|   Website: https://github.com/amiaopensource/ffmprovisr/blob/gh-pages/check_framemd5.sh | ||||
|   Website: https://github.com/amiaopensource/ffmprovisr/blob/gh-pages/scripts/check_audio_framemd5.sh | ||||
| EOF | ||||
|     exit 0 | ||||
| } | ||||
| @@ -40,11 +38,11 @@ EOF | ||||
| unset input_file | ||||
| unset input_hash | ||||
| 
 | ||||
| while getopts ":hi:m:" opt; do | ||||
| while getopts ":i:m:h" opt; do | ||||
|     case "${opt}" in | ||||
|         i) input_file=${OPTARG} ;; | ||||
|         m) input_hash=${OPTARG} ;; | ||||
|         h) _output_help ;; | ||||
|         i) input_file=$OPTARG ;; | ||||
|         m) input_hash=$OPTARG ;; | ||||
|         :) echo -e "${RED}Error: option -${OPTARG} requires an argument${NC}" ; _output_prompt ;; | ||||
|         *) echo -e "${RED}Error: bad option -${OPTARG}${NC}" ; _output_prompt ;; | ||||
|     esac | ||||
| @@ -54,21 +52,24 @@ done | ||||
| echo -e "${BLUE}Please wait...${NC}" | ||||
| unset md5_tmp | ||||
| if [[ $OSTYPE = "cygwin" ]]; then | ||||
|     md5_tmp=""${USERPROFILE}/$(basename ${input_hash}).tmp"" | ||||
|     md5_tmp="${USERPROFILE}/$(basename "${input_hash}").tmp" | ||||
| else | ||||
|     md5_tmp="${HOME}/$(basename ${input_hash}).tmp" | ||||
|     md5_tmp="${HOME}/$(basename "${input_hash}").tmp" | ||||
| fi | ||||
| $(ffmpeg -i ${input_file} -loglevel 0 -f framemd5 -an ${md5_tmp}) | ||||
| # Find audio frame size for hash calculation | ||||
| unset sample_rate | ||||
| sample_rate=$(grep -v '^#' "${input_hash}" | head -n 1 | tr -d ' ' | cut -d',' -f4) | ||||
| ffmpeg -i "${input_file}" -loglevel 0 -af "asetnsamples=n='$sample_rate'" -f framemd5 -vn "${md5_tmp}" | ||||
| [[ ! -f ${md5_tmp} ]] && { echo -e "${RED}Error: '${input_file}' is not a valid audio-visual file.${NC}" ; _output_prompt ; } | ||||
| unset old_file | ||||
| unset tmp_file | ||||
| old_file=$(grep -v '^#' ${input_hash}) | ||||
| tmp_file=$(grep -v '^#' ${md5_tmp}) | ||||
| old_file=$(grep -v '^#' "${input_hash}") | ||||
| tmp_file=$(grep -v '^#' "${md5_tmp}") | ||||
| if [[ "${old_file}" = "${tmp_file}" ]]; then | ||||
|     echo -e "${BLUE}'$(basename ${input_file})' matches '$(basename ${input_hash})'${NC}" | ||||
|     echo -e "${BLUE}'$(basename "${input_file}")' matches '$(basename "${input_hash}")'${NC}" | ||||
|     rm "${md5_tmp}" | ||||
| else | ||||
|     echo -e "${RED}The following differences were detected between '$(basename ${input_file})' and '$(basename ${input_hash})':${NC}" | ||||
|     echo -e "${RED}The following differences were detected between '$(basename "${input_file}")' and '$(basename "${input_hash}")':${NC}" | ||||
|     diff "${input_hash}" "${md5_tmp}" | ||||
|     rm "${md5_tmp}" | ||||
| fi | ||||
							
								
								
									
										72
									
								
								scripts/check_video_framemd5.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,72 @@ | ||||
| #!/usr/bin/env bash | ||||
|   SCRIPT=$(basename "${0}") | ||||
|  VERSION='2017-07-08' | ||||
|   AUTHOR='ffmprovisr' | ||||
|      RED='\033[1;31m' | ||||
|     BLUE='\033[1;34m' | ||||
|       NC='\033[0m' | ||||
|  | ||||
| if [[ "${OSTYPE}" = "cygwin" ]] || [ ! $(which diff) ]; then | ||||
|     echo -e "${RED}Error: 'diff' is not installed by default. Please install 'diffutils' from Cygwin.${NC}" | ||||
|     exit 1 | ||||
| fi | ||||
|  | ||||
| _output_prompt(){ | ||||
|     cat <<EOF | ||||
| Usage: ${SCRIPT} -i <av_file> -m <md5_file> | -h | ||||
| EOF | ||||
|     exit 1 | ||||
| } | ||||
|  | ||||
| _output_help(){ | ||||
|     cat <<EOF | ||||
| Syntax: | ||||
|   ${SCRIPT} -i <av_file> -m <md5_file> | ||||
|     Pass to the script the audio-visual file and the corresponding MD5 | ||||
|     file to check. | ||||
|   ${SCRIPT} -h | ||||
|     This help. | ||||
| Dependency: | ||||
|   ffmpeg | ||||
| About: | ||||
|   Version: ${VERSION} | ||||
|   Website: https://github.com/amiaopensource/ffmprovisr/blob/gh-pages/scripts/check_video_framemd5.sh | ||||
| EOF | ||||
|     exit 0 | ||||
| } | ||||
|  | ||||
| unset input_file | ||||
| unset input_hash | ||||
|  | ||||
| while getopts ":i:m:h" opt; do | ||||
|     case "${opt}" in | ||||
|         i) input_file=${OPTARG} ;; | ||||
|         m) input_hash=${OPTARG} ;; | ||||
|         h) _output_help ;; | ||||
|         :) echo -e "${RED}Error: option -${OPTARG} requires an argument${NC}" ; _output_prompt ;; | ||||
|         *) echo -e "${RED}Error: bad option -${OPTARG}${NC}" ; _output_prompt ;; | ||||
|     esac | ||||
| done | ||||
|  | ||||
| [[ -z "${#}" || ! ${input_file} || ! ${input_hash} ]] && _output_prompt | ||||
| echo -e "${BLUE}Please wait...${NC}" | ||||
| unset md5_tmp | ||||
| if [[ "${OSTYPE}" = "cygwin" ]]; then | ||||
|     md5_tmp="${USERPROFILE}/$(basename "${input_hash}").tmp" | ||||
| else | ||||
|     md5_tmp="${HOME}/$(basename "${input_hash}").tmp" | ||||
| fi | ||||
| ffmpeg -i "${input_file}" -loglevel 0 -f framemd5 -an "${md5_tmp}" | ||||
| [[ ! -f "${md5_tmp}" ]] && { echo -e "${RED}Error: '${input_file}' is not a valid audio-visual file.${NC}" ; _output_prompt ; } | ||||
| unset old_file | ||||
| unset tmp_file | ||||
| old_file=$(grep -v '^#' "${input_hash}") | ||||
| tmp_file=$(grep -v '^#' "${md5_tmp}") | ||||
| if [[ "${old_file}" = "${tmp_file}" ]]; then | ||||
|     echo -e "${BLUE}'$(basename "${input_file}")' matches '$(basename "${input_hash}")'${NC}" | ||||
|     rm "${md5_tmp}" | ||||
| else | ||||
|     echo -e "${RED}The following differences were detected between '$(basename "${input_file}")' and '$(basename "${input_hash}")':${NC}" | ||||
|     diff "${input_hash}" "${md5_tmp}" | ||||
|     rm "${md5_tmp}" | ||||
| fi | ||||
							
								
								
									
										27
									
								
								scripts/ffmprovisr
									
									
									
									
									
										Executable file
									
								
							
							
						
						| @@ -0,0 +1,27 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| # This allows to open the online version of the ffmprovisr, when the computer is | ||||
| # connected to the Web, and the local version otherwise. | ||||
|  | ||||
| if [[ "$(uname -s)" = "Darwin" ]] ; then | ||||
|     default_browser=$(plutil -convert json ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist -r -o - | grep https -b1 | tail -n1 | cut -d'"' -f4) | ||||
|     if ping -c 1 amiaopensource.github.io >/dev/null 2>&1 ; then | ||||
|         ffmprovisr_path='https://amiaopensource.github.io/ffmprovisr/' | ||||
|     else | ||||
|         ffmprovisr_path=$(find /usr/local/Cellar/ffmprovisr -iname 'index.html' | sort -M | tail -n1) | ||||
|     fi | ||||
|     if [ -n "${default_browser}" ] ; then | ||||
|         open -b "${default_browser}" "${ffmprovisr_path}" | ||||
|     else | ||||
|         open "${ffmprovisr_path}" | ||||
|     fi | ||||
| elif [[ "$(uname -s)" = "Linux" ]] ; then | ||||
|     if ping -c 1 amiaopensource.github.io >/dev/null 2>&1 ; then | ||||
|         ffmprovisr_path='https://amiaopensource.github.io/ffmprovisr/' | ||||
|     else | ||||
|         ffmprovisr_path=$(find ~/.linuxbrew/Cellar/ffmprovisr -iname 'index.html' | sort -M | tail -n1) | ||||
|     fi | ||||
|     xdg-open "${ffmprovisr_path}" | ||||
| else | ||||
|     echo "Please locate the 'ffmprovisr' folder, and open the 'index.html' file in a browser." | ||||
| fi | ||||