Skip to content

Commit cd80633

Browse files
authored
feat!: implement new API to also handle multiple transcoding outputs (#8)
* feat!: implement new and better API to also handle multiple transcoding outputs - Added new, more powerful (though less extensible) DSL to build ffmpeg commands. - Introduced new concept of long-lived presets and transcoders. - Removed full output storage during the transcoding process. - Added built-in presets that can be used out-of-the-box: - H.264 360p all the way up to 4K resolution. - AAC 128k all the way up to 320k bit rate. - DASH H.264 360p all the way up to 4K resolution. - DASH AAC 128k all the way up to 320k bit rate. - Dropped support for Ruby 3.0, Ruby 3.1 is now the minimum supported version. Refs: ARC-9901 * test: reduce flakyness in transcoder spec Refs: ARC-9901 * feat(presets): add preset to create simple thumbnails Refs: ARC-9901 * fix(logging): update logs to include the correct procname Refs: ARC-9901 * fix(io): allow IO timeout to actually be infinite when set to nil Refs: ARC-9901 * refactor(command-args): make the min_bit_rate method more readable Refs: ARC-9901 * refactor(reporters): simplify the match? method of the progress and silence reporters Refs: ARC-9901 * refactor(scale-filter): introduce constants for magic scale filter dimensions Refs: ARC-9901
1 parent a3404b8 commit cd80633

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+4749
-2105
lines changed

.github/workflows/ci.test.yml

+11-10
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,12 @@ jobs:
1414
runs-on: ubuntu-latest
1515
strategy:
1616
matrix:
17-
ruby-version: ['3.0', '3.1', '3.2', '3.3']
18-
ffmpeg-version: ['7.0.2', '6.0.1', '5.1.1', '4.4.1']
17+
ruby-version: ['3.1', '3.2', '3.3']
18+
ffmpeg-version: ['release', '6.0.1', '5.1.1', '4.4.1']
1919

2020
include:
21-
- ffmpeg-version: '7.0.2'
22-
download-path: 'releases'
23-
version-name: 'release'
21+
- ffmpeg-version: 'release'
22+
ffmpeg-download-path: 'releases'
2423

2524
steps:
2625
- uses: actions/checkout@v4
@@ -32,14 +31,16 @@ jobs:
3231
rubygems: latest
3332

3433
- name: Install FFMPEG
34+
working-directory: /tmp
3535
run: |
3636
sudo apt-get update
3737
sudo apt-get install -y wget
38-
wget https://johnvansickle.com/ffmpeg/${{ matrix.download-path || 'old-releases' }}/ffmpeg-${{ matrix.version-name || matrix.ffmpeg-version }}-amd64-static.tar.xz
39-
tar -xf ffmpeg-${{ matrix.version-name || matrix.ffmpeg-version }}-amd64-static.tar.xz
40-
sudo mv ffmpeg-${{ matrix.ffmpeg-version }}-amd64-static/ffmpeg /usr/local/bin/ffmpeg
41-
sudo mv ffmpeg-${{ matrix.ffmpeg-version }}-amd64-static/ffprobe /usr/local/bin/ffprobe
42-
rm -rf ffmpeg-${{ matrix.version-name || matrix.ffmpeg-version }}-amd64-static.tar.xz ffmpeg-${{ matrix.ffmpeg-version }}-amd64-static
38+
wget -O ffmpeg.tar.xz https://johnvansickle.com/ffmpeg/${{ matrix.ffmpeg-download-path || 'old-releases' }}/ffmpeg-${{ matrix.ffmpeg-version }}-amd64-static.tar.xz
39+
mkdir ffmpeg
40+
tar -xf ffmpeg.tar.xz --strip=1 -C ffmpeg
41+
sudo mv ffmpeg/ffmpeg /usr/local/bin/ffmpeg
42+
sudo mv ffmpeg/ffprobe /usr/local/bin/ffprobe
43+
rm -rf ffmpeg.tar.xz ffmpeg
4344
4445
- name: Run RSpec
4546
run: bundle exec rspec

.rubocop.yml

+4-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ inherit_from: .rubocop_todo.yml
33
AllCops:
44
NewCops: enable
55
SuggestExtensions: false
6-
TargetRubyVersion: 3.0
6+
TargetRubyVersion: 3.1
77

88
Metrics/AbcSize:
99
Enabled: false
@@ -38,5 +38,8 @@ Style/ArgumentsForwarding:
3838
Style/FloatDivision:
3939
Enabled: false
4040

41+
Style/RequireOrder:
42+
Enabled: true
43+
4144
Style/SafeNavigationChainLength:
4245
Enabled: false

.ruby-version

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
3.3.6

0 commit comments

Comments
 (0)