Compare commits

...

62 Commits

Author SHA1 Message Date
Ashley
3984c8aae3 Merge pull request #425 from amiaopensource/rm-jquery
Remove jQuery
2020-05-14 08:24:18 -04:00
Ashley Blewer
f9ef8dbae3 Update lets as consts 2020-05-13 17:12:28 -04:00
Ashley Blewer
f814abbc0a Move js up into body 2020-05-13 10:05:31 -04:00
Ashley Blewer
843f05cc73 Remove jQuery library and use vanilla js 2020-05-13 09:35:16 -04:00
Ashley Blewer
54577f4b28 Add missing link tag 2020-05-13 09:34:28 -04:00
Ashley
aa5d63f4c4 Merge pull request #423 from amiaopensource/recipe_list
add Fade both video and audio streams to recipe list
2020-05-02 12:06:47 -04:00
Reto Kromer
dd257331fe add Fade video and audio streams to recipe list 2020-05-02 07:33:52 +02:00
Ashley
feac0ded9b Merge pull request #422 from DaleLore/fade
Update: Adding fade/afade to streams
2020-05-01 23:10:36 -04:00
Lorena A Ramírez-López
a33ed1d24f Apply suggestions from code review
Good point. Thanks

Co-authored-by: Ashley <ashley.blewer@gmail.com>
2020-05-01 23:09:49 -04:00
Lorena A Ramírez-López
020b9fbe73 Update: Adding fade/afade to streams 2020-05-01 23:03:25 -04:00
Ashley
1df442f6dd Merge pull request #421 from amiaopensource/prores
add all containers for ProRes
2020-05-01 22:17:31 -04:00
Reto Kromer
3a05c8f440 add all containers for ProRes 2020-05-01 09:47:57 +02:00
Ashley
89642fdd56 Merge pull request #420 from amiaopensource/BWF
add BWF to recipe list
2020-04-16 08:45:15 -04:00
Reto Kromer
a9ec972aef add BWF to recipe list 2020-04-16 14:31:13 +02:00
Reto Kromer
91540a2fb8 Merge pull request #415 (use same wording in ToC and title) 2020-01-04 10:58:41 +01:00
Reto Kromer
2becad3d9c use same wording in ToC and title 2019-12-25 10:32:15 +01:00
Ashley
e4c327bbac Merge pull request #414 from amiaopensource/kfrn/tweaks
Tweaks: naming, whitespace, collapse all recipes
2019-12-17 11:48:57 -05:00
kfrn
4359d6dd4a Update 'show/hide recipes' (expand/collapse) functionality
Previously, it would expand the recipe if currently collapsed, and vice versa.
Now, if any recipes are currently expanded, it will collapse all; otherwise, all recipes will be expanded.

The 'expand all' functionality is necessary for full-text searching.
2019-12-18 05:42:29 +13:00
kfrn
d184ed2fe9 Code style: remove trailing whitespace 2019-12-17 22:36:47 +13:00
kfrn
089725a753 Crop video recipe: correct name/description of example images 2019-12-17 22:34:37 +13:00
Ashley
897f1b1616 Merge pull request #413 from amiaopensource/update-contributors
Update contributors list with octohatrack
2019-12-11 12:08:30 -05:00
Ashley
358a2ec23b add "last updated" 2019-12-11 12:04:09 -05:00
Ashley Blewer
de6c08a58d Update contributors list with octohatrack 2019-12-10 17:56:18 -05:00
Ashley
0d1fc1bfe8 Merge pull request #412 from amiaopensource/BWF_name
fix BWF name
2019-12-10 10:41:34 -05:00
Reto Kromer
cbca3ac7ad fix BWF name 2019-12-10 10:04:07 +01:00
Ashley
bcc425a955 Merge pull request #410 from amiaopensource/add-bext
add BWF embedding recipe
2019-12-09 12:15:51 -05:00
weaver
0353c1761e ch ch ch changes 2019-12-06 08:37:11 -08:00
weaver
e3aa81fb95 add BWF 2019-12-05 16:28:58 -08:00
Ashley
633374f22d Merge pull request #409 from macasaurusrex/issue-399-meta-tag-validation
Update index.html
2019-11-20 10:39:49 -05:00
Maura
1d60060eed Update index.html
fix for ticket 399: meta tag validation error. w3 doesn't like chartset in the same tag as viewport so I split them out based on what was described in the ticket
2019-11-19 18:07:41 -05:00
Reto Kromer
6cfe7f7a47 style cleaning 2019-11-07 10:37:45 +01:00
Reto Kromer
fc63116e2f Merge pull request #407 (add streamhash to recipe list) 2019-11-07 10:26:06 +01:00
Reto Kromer
f74f0cde93 add streamhash to recipe list 2019-11-06 06:57:37 +01:00
Ashley
832026b57c Merge pull request #406 from pjotrek-b/gh-pages
Added "streamhash" recipe.
2019-11-05 17:25:57 -05:00
Peter Bubestinger-Steindl
db330a3a0c Indent <p> inwards and add missing </p>. 2019-11-05 08:41:19 +01:00
Peter Bubestinger-Steindl
c88008a68f Added "streamhash" recipe. 2019-11-04 22:55:07 +01:00
Ashley
b45b2d79e1 Merge pull request #405 from amiaopensource/recipe_list
update recipe list
2019-10-18 13:18:36 -04:00
Reto Kromer
e95d915869 update recipe list 2019-10-18 19:15:12 +02:00
Ashley
059faba357 Merge pull request #403 from amiaopensource/weaver-branch
standardize dither method
2019-10-18 12:59:40 -04:00
Ashley
614b28fd9a Merge pull request #404 from amiaopensource/update_to_h5
update to `<h5>`
2019-10-18 12:51:58 -04:00
Reto Kromer
e51199bc53 update to h5 2019-10-18 18:46:43 +02:00
weaver
c1aff3fd69 standardize dither method 2019-10-17 13:28:55 -07:00
Ashley
ca0f2a8d0a Merge pull request #402 from EG-tech/qemu-qed
add QEMU QED to sister projects
2019-10-09 11:30:39 -04:00
EG-tech
640672b6f6 fix markdown render
forgot to add double space in README for proper line break
2019-10-09 10:58:00 -04:00
EG-tech
84c6f127a2 add QEMU QED to sister projects
in README and main index.html
2019-10-09 10:52:29 -04:00
Ashley
d180012261 Merge pull request #401 from amiaopensource/kfrn/fix
Docs: correct nesting in Articles list, fix typo
2019-10-08 09:18:29 -04:00
Katherine Frances Nagels
6d9d4fc596 Fix typo 2019-10-08 18:45:58 +13:00
Katherine Frances Nagels
4e0e369bbb Docs: correct nesting in Articles list 2019-10-08 18:43:23 +13:00
Katherine Frances Nagels
96b221642f Merge pull request #400 from amiaopensource/kn/cool-things
Add articles and mentions and cool things
2019-10-08 18:42:00 +13:00
Katherine Frances Nagels
309a8e7c8d Fix typo 2019-10-08 18:37:52 +13:00
kfrn
9c3c807af0 Docs: add Table of Contents 2019-10-07 21:08:11 +13:00
kfrn
aee386d889 Docs: add list of articles, successes, and cool things
Let's celebrate our successes :)
2019-10-07 21:08:06 +13:00
Ashley
6267c1c19a Merge pull request #398 from Anushka-codergirl/gh-pages
Changes h3 to h5
2019-10-03 11:39:36 -04:00
Anushka Raj
5a1aee1cf2 Update index.html 2019-10-03 11:43:42 +05:30
Anushka Raj
46fad11207 Update index.html 2019-10-03 11:22:39 +05:30
Ashley
782b1a992a Merge pull request #396 from amiaopensource/extract_recipes
simplify recipe extraction
2019-09-26 14:54:35 -04:00
Reto Kromer
9f6e6846e0 change h3 to h5 2019-09-26 18:07:51 +02:00
Reto Kromer
c4bd6a9191 add h5 2019-09-26 18:04:55 +02:00
Katherine Frances Nagels
8b48abf751 Merge pull request #394 from amiaopensource/kn/stream-mapping
Add note to Stream Mapping entry about mapping with a failsafe
2019-08-07 07:42:46 +12:00
kfrn
54aab85937 Add note to Stream Mapping entry about mapping with a failsafe
Following Ben Turkus' comment here:
https://github.com/amiaopensource/ffmprovisr/issues/383#issuecomment-516847829
2019-08-03 13:10:04 +12:00
kfrn
51ca7a4200 Revert "Add note to Stream Mapping entry about mapping with a failsafe"
This reverts commit 76c3fe1f88.
2019-08-02 19:25:27 +12:00
kfrn
76c3fe1f88 Add note to Stream Mapping entry about mapping with a failsafe
Following Ben Turkus' comment here:
https://github.com/amiaopensource/ffmprovisr/issues/383#issuecomment-516847829
2019-08-02 19:21:58 +12:00
7 changed files with 357 additions and 190 deletions

View File

@@ -105,7 +105,7 @@ h2 {
margin: 6px 0px 12px 0px;
}
h3 {
h3, h5 {
font-size: 1.5em;
}

File diff suppressed because it is too large Load Diff

4
js/jquery.min.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -1,42 +1,96 @@
$(document).ready(function() {
function scrollTo(element, to, duration) {
var start = element.scrollTop,
change = to - start,
currentTime = 0,
increment = 20;
var animateScroll = function(){
currentTime += increment;
var val = Math.easeInOutQuad(currentTime, start, change, duration);
element.scrollTop = val;
if(currentTime < duration) {
setTimeout(animateScroll, increment);
}
}
animateScroll()
}
//t = current time, b = start value, c = change in value, d = duration
Math.easeInOutQuad = function (t, b, c, d) {
t /= d/2;
if (t < 1) return c/2*t*t + b;
t--;
return -c/2 * (t*(t-2) - 1) + b;
}
function appendLink(id) {
$(id).next('div').find('.link').empty();
$(id).next('div').find('.link').append("<small>Link to this command: <a href='https://amiaopensource.github.io/ffmprovisr/index.html" + id + "'>https://amiaopensource.github.io/ffmprovisr/index.html" + id + "</a></small>");
const link = document.getElementById(id).nextElementSibling.querySelector('.link')
if (link) {
link.innerHTML = ("<small>Link to this command: <a href='https://amiaopensource.github.io/ffmprovisr/index.html#" + id + "'>https://amiaopensource.github.io/ffmprovisr/index.html#" + id + "</a></small>")
}
}
function moveToRecipe(id) {
document.getElementById(id.substring(1)).checked = true;
$('html, body').animate({ scrollTop: $(id).offset().top }, 1000);
document.getElementById(id).checked = true;
scrollTo(document.body, 0, 1000);
appendLink(id)
}
// open recipe window if a hash is found in URL
if (window.location.hash) {
id = window.location.hash
id = window.location.hash.slice(1)
moveToRecipe(id)
}
// add hash URL when recipe is opened
$('label[class="recipe"]').on("click", function(){
id = $(this).attr("for");
window.location.hash = ('#' + id)
appendLink('#' + id)
const recipes = document.querySelectorAll('label[class="recipe"]')
recipes.forEach(function(item, i){
item.addEventListener("click", function(){
id = this.getAttribute("for");
window.location.hash = (id)
appendLink(id)
})
})
// open recipe when clicked
$('a').on("click", function(){
intralink = $(this).attr("href")
const links = document.querySelectorAll('a')
links.forEach(function(item, i){
item.addEventListener("click", function(){
intralink = this.getAttribute("href")
if (intralink[0] == "#") {
moveToRecipe(intralink)
moveToRecipe(intralink.substring(1))
}
})
})
function getCheckedBoxes(checkboxes) {
var checkboxesChecked = [];
for (var i = 0; i < checkboxes.length; i++) {
if (checkboxes[i].checked) {
checkboxesChecked.push(checkboxes[i]);
}
}
return checkboxesChecked.length > 0 ? checkboxesChecked : null;
}
// Collapse all recipes when button is clicked
document.getElementById('toggle-expand-collapse-all').addEventListener("click", function(){
const checkboxes = document.querySelectorAll('input[type=checkbox]')
var checked = getCheckedBoxes(checkboxes);
if (checked) {
// Collapse all
document.querySelectorAll('input[type=checkbox]').forEach(function(item, i){
item.checked = false;
})
} else {
// Expand all
document.querySelectorAll('input[type=checkbox]').forEach(function(item, i){
item.checked = true;
})
}
})
// open all windows if button is clicked
$('#open-all').on("click", function(){
$('input[type=checkbox]').each(function(){
this.checked = !this.checked;
})
});
});

View File

@@ -2,6 +2,17 @@
Repository of useful FFmpeg command lines for archivists!
* [What is this?](#what-is-this)
* [How do I see it?](#how-do-i-see-it)
* [How do I contribute?](#how-do-i-contribute)
* [Code of conduct](#code-of-conduct)
* [Maintainers](#maintainers)
* [Contributors](#contributors)
* [AVHack Team](#avhack-team)
* [Sister projects](#sister-projects)
* [Articles and mentions](#articles-and-mentions)
* [License](#license)
## What is this?
#### Project Objective
@@ -72,31 +83,36 @@ You can read our contributor code of conduct [here](https://github.com/amiaopens
*Code Contributors*:
ablwr (Ashley)
alavigne12 (A. Lavigne)
Anushka-codergirl (Anushka Raj)
bastibeckr (Basti Becker)
b00giehead (Joanna White)
bturkus
dericed (Dave Rice)
digitensions (Joanna White)
edsu (Ed Summers)
jamessam (Jim Sam)
jfarbowitz (Jonathan Farbowitz)
kfrn (Katherine Frances Nagels)
kgrons (Kathryn Gronsbell)
kieranjol (Kieran O'Leary)
llogan (Lou)
llogan (Lou Logan)
macasaurusrex (Maura)
mgiraldo (Mauricio Giraldo)
pjotrek-b (Peter B.)
privatezero (Andrew Weaver)
retokromer (Reto Kromer)
rfraimow
*All Contributors*:
All Contributors:
ablwr (Ashley)
alavigne12 (A. Lavigne)
Anushka-codergirl (Anushka Raj)
audiovisualopen
bastibeckr (Basti Becker)
b00giehead (Joanna White)
brainwane (Sumana Harihareswara)
bturkus
dericed (Dave Rice)
digitensions (Joanna White)
drodz11 (Dave Rodriguez)
edsu (Ed Summers)
EG-tech (Ethan Gates)
@@ -111,7 +127,9 @@ kellyhaydon (metacynic)
kfrn (Katherine Frances Nagels)
kgrons (Kathryn Gronsbell)
kieranjol (Kieran O'Leary)
llogan (Lou)
llogan (Lou Logan)
macasaurusrex (Maura)
mercuryswitch
mgiraldo (Mauricio Giraldo)
mulvya
nkrabben (Nick Krabbenhoeft)
@@ -121,12 +139,13 @@ retokromer (Reto Kromer)
rfraimow
richardpl (Paul B Mahol)
ross-spencer (Ross Spencer)
taschenbach (Tommy Aschenbach)
todrobbins (Tod Robbins)
Repo: amiaopensource/ffmprovisr
Code Contributors: 17
All Contributors: 32
Last updated: 2019-02-11
GitHub Contributors: 20
All Contributors: 37
Last updated: 2019-12-11
## AVHack Team
@@ -137,9 +156,18 @@ Last updated: 2019-02-11
## Sister projects
[The Cable Bible](https://amiaopensource.github.io/cable-bible/): A Guide to Cables and Connectors Used for Audiovisual Tech
[QEMU QED](https://eaasi.gitlab.io/qemu-qed): instructions for using QEMU (Quick EMUlator), a command line application for computer emulation and virtualization
[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.
## Articles and mentions
* 2019-09: **Andrew Weaver & Ashley Blewer**, [Sustainability through community: ffmprovisr and the Case for Collaborative Knowledge Transfer](https://ipres2019.org/static/pdf/iPres2019_paper_97.pdf) (PDF), iPRES 2019
- Andrew Weaver [won](https://twitter.com/iPRES2019/status/1177136202144768000) iPres' Best First Time Contribution Award for his work on this paper :)
* 2018-11: ffmprovisr is mentioned in [a job advert](http://web.library.emory.edu/documents/pa_staff_Audiovisual%20Conservator_Nov2018.pdf)!
* 2017-10: **Ashley Blewer & Katherine Nagels**, [ffmprovisr gets a redesign](https://bits.ashleyblewer.com/blog/2017/10/31/ffmprovisr-redesign/)
* 2015-11: **AMIA & DLF Hack Day 2015**, [ffmprovsr](https://wiki.curatecamp.org/index.php/Association_of_Moving_Image_Archivists_&_Digital_Library_Federation_Hack_Day_2015#ffmprovsr) - the genesis of ffmprovisr (then spelled without the 'i')
## 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>

View File

@@ -1,5 +1,7 @@
# Basic rewrap command
ffmpeg -i input_file.ext -c copy -map 0 output_file.ext
# Generate Broadcast WAV
ffmpeg -i input_file.wav -c copy -write_bext 1 -metadata field_name='Content' output_file.wav
# Rewrap DV video to .dv file
ffmpeg -i input_file -f rawvideo -c:v copy output_file.dv
# Transcode to deinterlaced Apple ProRes LT
@@ -17,11 +19,11 @@ ffmpeg -i input_file -c:v libx265 -pix_fmt yuv420p -c:a copy output_file
# Transcode to an Ogg Theora
ffmpeg -i input_file -acodec libvorbis -b:v 690k output_file
# Convert WAV to MP3
ffmpeg -i input_file.wav -write_id3v1 1 -id3v2_version 3 -dither_method rectangular -out_sample_rate 48k -qscale:a 1 output_file.mp3
ffmpeg -i input_file.wav -write_id3v1 1 -id3v2_version 3 -dither_method triangular -out_sample_rate 48k -qscale:a 1 output_file.mp3
# Generate two access MP3s (with and without copyright).
ffmpeg -i input_file -i input_file_to_append -filter_complex "[0:a:0]asplit=2[a][b];[b]afifo[bb];[1:a:0][bb]concat=n=2:v=0:a=1[concatout]" -map "[a]" -codec:a libmp3lame -dither_method modified_e_weighted -qscale:a 2 output_file.mp3 -map "[concatout]" -codec:a libmp3lame -dither_method modified_e_weighted -qscale:a 2 output_file_appended.mp3
ffmpeg -i input_file -i input_file_to_append -filter_complex "[0:a:0]asplit=2[a][b];[b]afifo[bb];[1:a:0][bb]concat=n=2:v=0:a=1[concatout]" -map "[a]" -codec:a libmp3lame -dither_method triangular -qscale:a 2 output_file.mp3 -map "[concatout]" -codec:a libmp3lame -dither_method triangular -qscale:a 2 output_file_appended.mp3
# Convert WAV to AAC/MP4
ffmpeg -i input_file.wav -c:a aac -b:a 128k -dither_method rectangular -ar 44100 output_file.mp4
ffmpeg -i input_file.wav -c:a aac -b:a 128k -dither_method triangular -ar 44100 output_file.mp4
# Transform 4:3 aspect ratio into 16:9 with pillarbox
ffmpeg -i input_file -filter:v "pad=ih*16/9:ih:(ow-iw)/2:(oh-ih)/2" -c:a copy output_file
# Transform 16:9 aspect ratio video into 4:3 with letterbox
@@ -36,6 +38,8 @@ ffmpeg -i input_file -c:v copy -aspect 4:3 output_file
ffmpeg -i input_file -c:v libx264 -vf colormatrix=src:dst output_file
# Modify image and sound speed
ffmpeg -i input_file -r output_fps -filter_complex "[0:v]setpts=input_fps/output_fps*PTS[v]; [0:a]atempo=output_fps/input_fps[a]" -map "[v]" -map "[a]" output_file
# Fade both video and audio streams
ffmpeg -i input_file -filter:v "fade=in:st=0:d=1, fade=out:st=59:d=1" -filter:a "afade=in:st=0:d=1, afade=out:st=59:d=1" -c:v libx264 -c:a aac output_file
# Synchronize video and audio streams
ffmpeg -i input_file -itsoffset 0.125 -i input_file -map 1:v -map 0:a -c copy output_file
# Clarify stream properties
@@ -141,6 +145,8 @@ ffmpeg -i input_file -af "asetnsamples=n=48000" -f framemd5 -vn output_file
ffmpeg -i input_file -map 0:v:0 -c:v copy -f md5 output_file_1 -map 0:a:0 -c:a copy -f md5 output_file_2
# Get checksum for video/audio stream
ffmpeg -loglevel error -i input_file -map 0:v:0 -f hash -hash md5 -
# Get individual checksums for all video/audio streams ("Streamhash")
ffmpeg -i input_file -map 0 -f streamhash -hash md5 - -v quiet
# QCTools report (with audio)
ffprobe -f lavfi -i "movie=input_file:s=v+a[in0][in1], [in0]signalstats=stat=tout+vrep+brng, cropdetect=reset=1:round=1, idet=half_life=1, split[a][b];[a]field=top[a1];[b]field=bottom, split[b1][b2];[a1][b1]psnr[c1];[c1][b2]ssim[out0];[in1]ebur128=metadata=1, astats=metadata=1:reset=1:length=0.4[out1]" -show_frames -show_versions -of xml=x=1:q=1 -noprivate | gzip > input_file.qctools.xml.gz
# QCTools report (no audio)

View File

@@ -1 +1 @@
curl https://amiaopensource.github.io/ffmprovisr/ -s | grep -E '<h3>.*</h3>|<p><code>.*</code></p>' | sed 's/.*<code>\(.*\)<\/code>/\1/' | sed 's/.*<h3>\(.*\)<\/h3>/# \1/' | grep -v '\*\*\*' | sed -e 's/<[^>]*>//g'
curl https://amiaopensource.github.io/ffmprovisr/ -s | grep -E '<h5>.*</h5>|<p><code>.*</code></p>' | sed 's/.*<code>\(.*\)<\/code>/\1/' | sed 's/.*<h5>\(.*\)<\/h5>/# \1/' | grep -v '\*\*\*' | sed -e 's/<[^>]*>//g'