|
|
|
|
|
by social_quotient
465 days ago
|
|
I spend a ton of time in FFmpeg, and I’m still blown away by how it uses abstractions to stay modular—especially for a project that’s been around forever and still feels so relevant. Those filtergraphs pulling off polymorphism-like tricks in C? It’s such an elegant way to manage complex pipelines. e.g. ffmpeg -i input.wav -filter_complex "
[0:a]asplit=2[a1][a2];
[a1]lowpass=f=500[a1_low];
[a2]highpass=f=500[a2_high];
[a1_low]volume=0.5[a1_low_vol];
[a2_high]volume=1.5[a2_high_vol];
[a1_low_vol][a2_high_vol]amix=inputs=2[a_mixed];
[a_mixed]aecho=0.8:0.9:1000:0.3[a_reverb]
" -map "[a_reverb]" output.wav That said, keeping those interfaces clean and consistent as the codebase grows (and ages) takes some real dedication. Also recently joined the mailing lists and it’s been awesome to get a step closer to the pulse of the project. I recommend if you want to casually get more exposure to the breadth of the project. https://ffmpeg.org/mailman/listinfo |
|