Fix H.265 2-Pass command, Fixed sidebar size
Build / build (push) Successful in 1m57s

This commit is contained in:
2025-08-18 14:05:51 +07:00
parent 209168dbf3
commit 01306a9688
5 changed files with 139 additions and 90 deletions
+50
View File
@@ -10,6 +10,9 @@ Breeze icons
- `./solid-src/src/assets/breeze[-dark]`: Icons used by TSX files
- `./solid-src/public/breeze[-dark]`: Icons used by CSS files
Vencoder is tested with FFmpeg 7.1.1, should be compatible with older versions
but is not guaranteed.
## Running
In the project's root, To run a basic development setup, you'll need to do the
@@ -33,6 +36,53 @@ cd ..
neu build
```
## Unimplemented Features
The Settings page doesn't work yet.
## Encoder Support
Vencoder will only support predefined options for "common" codecs. What is
considered common depends solely on the needs of the program's users.
Note that, not all of these encoders will show up in the program. Only the
encoders supported by your FFmpeg install will show up.
- [ ] AV1
- [x] libaom-av1
- [x] librav1e (Partial support)
- [ ] libsvtav1
- [ ] av1_amf
- [ ] av1_nvenc
- [ ] av1_qsv
- [ ] av1_vaapi
- [ ] DNxHD
- [ ] H.264
- [x] libx264
- [x] libx264rgb (Untested, but _should_ work)
- [ ] h264_amf
- [ ] h264_nvenc
- [ ] h264_qsv
- [ ] h264_v4l2m2m
- [ ] h264_vaapi
- [ ] h264_vulkan
- [ ] H.265
- [x] libx265
- [ ] h264_amf
- [ ] h264_nvenc
- [ ] h264_qsv
- [ ] h264_v4l2m2m
- [ ] h264_vaapi
- [ ] h264_vulkan
- [ ] VP8
- [ ] libvpx
- [ ] vp8_v4l2m2m
- [ ] vp8_vaapi
- [ ] VP9
- [ ] libvpx-vp9
- [ ] vp9_vaapi
- [ ] vp9_qsv
## Gitea Actions
If you saw this line:
+84 -84
View File
@@ -296,103 +296,103 @@ packages:
'@neutralinojs/lib@6.2.0':
resolution: {integrity: sha512-BpnZjaSWKLJMSSLwfrhiBwgEwuSR5fZsroFH0Tfx6aTCx9AXbKkIQ5wj/JKWH7jyRet7K/+KYzbK8C+UKOgecw==}
'@rollup/rollup-android-arm-eabi@4.46.2':
resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==}
'@rollup/rollup-android-arm-eabi@4.46.3':
resolution: {integrity: sha512-UmTdvXnLlqQNOCJnyksjPs1G4GqXNGW1LrzCe8+8QoaLhhDeTXYBgJ3k6x61WIhlHX2U+VzEJ55TtIjR/HTySA==}
cpu: [arm]
os: [android]
'@rollup/rollup-android-arm64@4.46.2':
resolution: {integrity: sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==}
'@rollup/rollup-android-arm64@4.46.3':
resolution: {integrity: sha512-8NoxqLpXm7VyeI0ocidh335D6OKT0UJ6fHdnIxf3+6oOerZZc+O7r+UhvROji6OspyPm+rrIdb1gTXtVIqn+Sg==}
cpu: [arm64]
os: [android]
'@rollup/rollup-darwin-arm64@4.46.2':
resolution: {integrity: sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==}
'@rollup/rollup-darwin-arm64@4.46.3':
resolution: {integrity: sha512-csnNavqZVs1+7/hUKtgjMECsNG2cdB8F7XBHP6FfQjqhjF8rzMzb3SLyy/1BG7YSfQ+bG75Ph7DyedbUqwq1rA==}
cpu: [arm64]
os: [darwin]
'@rollup/rollup-darwin-x64@4.46.2':
resolution: {integrity: sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==}
'@rollup/rollup-darwin-x64@4.46.3':
resolution: {integrity: sha512-r2MXNjbuYabSIX5yQqnT8SGSQ26XQc8fmp6UhlYJd95PZJkQD1u82fWP7HqvGUf33IsOC6qsiV+vcuD4SDP6iw==}
cpu: [x64]
os: [darwin]
'@rollup/rollup-freebsd-arm64@4.46.2':
resolution: {integrity: sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==}
'@rollup/rollup-freebsd-arm64@4.46.3':
resolution: {integrity: sha512-uluObTmgPJDuJh9xqxyr7MV61Imq+0IvVsAlWyvxAaBSNzCcmZlhfYcRhCdMaCsy46ccZa7vtDDripgs9Jkqsw==}
cpu: [arm64]
os: [freebsd]
'@rollup/rollup-freebsd-x64@4.46.2':
resolution: {integrity: sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==}
'@rollup/rollup-freebsd-x64@4.46.3':
resolution: {integrity: sha512-AVJXEq9RVHQnejdbFvh1eWEoobohUYN3nqJIPI4mNTMpsyYN01VvcAClxflyk2HIxvLpRcRggpX1m9hkXkpC/A==}
cpu: [x64]
os: [freebsd]
'@rollup/rollup-linux-arm-gnueabihf@4.46.2':
resolution: {integrity: sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==}
'@rollup/rollup-linux-arm-gnueabihf@4.46.3':
resolution: {integrity: sha512-byyflM+huiwHlKi7VHLAYTKr67X199+V+mt1iRgJenAI594vcmGGddWlu6eHujmcdl6TqSNnvqaXJqZdnEWRGA==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm-musleabihf@4.46.2':
resolution: {integrity: sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==}
'@rollup/rollup-linux-arm-musleabihf@4.46.3':
resolution: {integrity: sha512-aLm3NMIjr4Y9LklrH5cu7yybBqoVCdr4Nvnm8WB7PKCn34fMCGypVNpGK0JQWdPAzR/FnoEoFtlRqZbBBLhVoQ==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm64-gnu@4.46.2':
resolution: {integrity: sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==}
'@rollup/rollup-linux-arm64-gnu@4.46.3':
resolution: {integrity: sha512-VtilE6eznJRDIoFOzaagQodUksTEfLIsvXymS+UdJiSXrPW7Ai+WG4uapAc3F7Hgs791TwdGh4xyOzbuzIZrnw==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-arm64-musl@4.46.2':
resolution: {integrity: sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==}
'@rollup/rollup-linux-arm64-musl@4.46.3':
resolution: {integrity: sha512-dG3JuS6+cRAL0GQ925Vppafi0qwZnkHdPeuZIxIPXqkCLP02l7ka+OCyBoDEv8S+nKHxfjvjW4OZ7hTdHkx8/w==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-loongarch64-gnu@4.46.2':
resolution: {integrity: sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==}
'@rollup/rollup-linux-loongarch64-gnu@4.46.3':
resolution: {integrity: sha512-iU8DxnxEKJptf8Vcx4XvAUdpkZfaz0KWfRrnIRrOndL0SvzEte+MTM7nDH4A2Now4FvTZ01yFAgj6TX/mZl8hQ==}
cpu: [loong64]
os: [linux]
'@rollup/rollup-linux-ppc64-gnu@4.46.2':
resolution: {integrity: sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==}
'@rollup/rollup-linux-ppc64-gnu@4.46.3':
resolution: {integrity: sha512-VrQZp9tkk0yozJoQvQcqlWiqaPnLM6uY1qPYXvukKePb0fqaiQtOdMJSxNFUZFsGw5oA5vvVokjHrx8a9Qsz2A==}
cpu: [ppc64]
os: [linux]
'@rollup/rollup-linux-riscv64-gnu@4.46.2':
resolution: {integrity: sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==}
'@rollup/rollup-linux-riscv64-gnu@4.46.3':
resolution: {integrity: sha512-uf2eucWSUb+M7b0poZ/08LsbcRgaDYL8NCGjUeFMwCWFwOuFcZ8D9ayPl25P3pl+D2FH45EbHdfyUesQ2Lt9wA==}
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-riscv64-musl@4.46.2':
resolution: {integrity: sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==}
'@rollup/rollup-linux-riscv64-musl@4.46.3':
resolution: {integrity: sha512-7tnUcDvN8DHm/9ra+/nF7lLzYHDeODKKKrh6JmZejbh1FnCNZS8zMkZY5J4sEipy2OW1d1Ncc4gNHUd0DLqkSg==}
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-s390x-gnu@4.46.2':
resolution: {integrity: sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==}
'@rollup/rollup-linux-s390x-gnu@4.46.3':
resolution: {integrity: sha512-MUpAOallJim8CsJK+4Lc9tQzlfPbHxWDrGXZm2z6biaadNpvh3a5ewcdat478W+tXDoUiHwErX/dOql7ETcLqg==}
cpu: [s390x]
os: [linux]
'@rollup/rollup-linux-x64-gnu@4.46.2':
resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==}
'@rollup/rollup-linux-x64-gnu@4.46.3':
resolution: {integrity: sha512-F42IgZI4JicE2vM2PWCe0N5mR5vR0gIdORPqhGQ32/u1S1v3kLtbZ0C/mi9FFk7C5T0PgdeyWEPajPjaUpyoKg==}
cpu: [x64]
os: [linux]
'@rollup/rollup-linux-x64-musl@4.46.2':
resolution: {integrity: sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==}
'@rollup/rollup-linux-x64-musl@4.46.3':
resolution: {integrity: sha512-oLc+JrwwvbimJUInzx56Q3ujL3Kkhxehg7O1gWAYzm8hImCd5ld1F2Gry5YDjR21MNb5WCKhC9hXgU7rRlyegQ==}
cpu: [x64]
os: [linux]
'@rollup/rollup-win32-arm64-msvc@4.46.2':
resolution: {integrity: sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==}
'@rollup/rollup-win32-arm64-msvc@4.46.3':
resolution: {integrity: sha512-lOrQ+BVRstruD1fkWg9yjmumhowR0oLAAzavB7yFSaGltY8klttmZtCLvOXCmGE9mLIn8IBV/IFrQOWz5xbFPg==}
cpu: [arm64]
os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.46.2':
resolution: {integrity: sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==}
'@rollup/rollup-win32-ia32-msvc@4.46.3':
resolution: {integrity: sha512-vvrVKPRS4GduGR7VMH8EylCBqsDcw6U+/0nPDuIjXQRbHJc6xOBj+frx8ksfZAh6+Fptw5wHrN7etlMmQnPQVg==}
cpu: [ia32]
os: [win32]
'@rollup/rollup-win32-x64-msvc@4.46.2':
resolution: {integrity: sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==}
'@rollup/rollup-win32-x64-msvc@4.46.3':
resolution: {integrity: sha512-fi3cPxCnu3ZeM3EwKZPgXbWoGzm2XHgB/WShKI81uj8wG0+laobmqy5wbgEwzstlbLu4MyO8C19FyhhWseYKNQ==}
cpu: [x64]
os: [win32]
@@ -555,8 +555,8 @@ packages:
engines: {node: '>=14'}
hasBin: true
rollup@4.46.2:
resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==}
rollup@4.46.3:
resolution: {integrity: sha512-RZn2XTjXb8t5g13f5YclGoilU/kwT696DIkY3sywjdZidNSi3+vseaQov7D7BZXVJCPv3pDWUN69C78GGbXsKw==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -880,64 +880,64 @@ snapshots:
'@neutralinojs/lib@6.2.0': {}
'@rollup/rollup-android-arm-eabi@4.46.2':
'@rollup/rollup-android-arm-eabi@4.46.3':
optional: true
'@rollup/rollup-android-arm64@4.46.2':
'@rollup/rollup-android-arm64@4.46.3':
optional: true
'@rollup/rollup-darwin-arm64@4.46.2':
'@rollup/rollup-darwin-arm64@4.46.3':
optional: true
'@rollup/rollup-darwin-x64@4.46.2':
'@rollup/rollup-darwin-x64@4.46.3':
optional: true
'@rollup/rollup-freebsd-arm64@4.46.2':
'@rollup/rollup-freebsd-arm64@4.46.3':
optional: true
'@rollup/rollup-freebsd-x64@4.46.2':
'@rollup/rollup-freebsd-x64@4.46.3':
optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.46.2':
'@rollup/rollup-linux-arm-gnueabihf@4.46.3':
optional: true
'@rollup/rollup-linux-arm-musleabihf@4.46.2':
'@rollup/rollup-linux-arm-musleabihf@4.46.3':
optional: true
'@rollup/rollup-linux-arm64-gnu@4.46.2':
'@rollup/rollup-linux-arm64-gnu@4.46.3':
optional: true
'@rollup/rollup-linux-arm64-musl@4.46.2':
'@rollup/rollup-linux-arm64-musl@4.46.3':
optional: true
'@rollup/rollup-linux-loongarch64-gnu@4.46.2':
'@rollup/rollup-linux-loongarch64-gnu@4.46.3':
optional: true
'@rollup/rollup-linux-ppc64-gnu@4.46.2':
'@rollup/rollup-linux-ppc64-gnu@4.46.3':
optional: true
'@rollup/rollup-linux-riscv64-gnu@4.46.2':
'@rollup/rollup-linux-riscv64-gnu@4.46.3':
optional: true
'@rollup/rollup-linux-riscv64-musl@4.46.2':
'@rollup/rollup-linux-riscv64-musl@4.46.3':
optional: true
'@rollup/rollup-linux-s390x-gnu@4.46.2':
'@rollup/rollup-linux-s390x-gnu@4.46.3':
optional: true
'@rollup/rollup-linux-x64-gnu@4.46.2':
'@rollup/rollup-linux-x64-gnu@4.46.3':
optional: true
'@rollup/rollup-linux-x64-musl@4.46.2':
'@rollup/rollup-linux-x64-musl@4.46.3':
optional: true
'@rollup/rollup-win32-arm64-msvc@4.46.2':
'@rollup/rollup-win32-arm64-msvc@4.46.3':
optional: true
'@rollup/rollup-win32-ia32-msvc@4.46.2':
'@rollup/rollup-win32-ia32-msvc@4.46.3':
optional: true
'@rollup/rollup-win32-x64-msvc@4.46.2':
'@rollup/rollup-win32-x64-msvc@4.46.3':
optional: true
'@solidjs/router@0.15.3(solid-js@1.9.9)':
@@ -1095,30 +1095,30 @@ snapshots:
prettier@3.6.2: {}
rollup@4.46.2:
rollup@4.46.3:
dependencies:
'@types/estree': 1.0.8
optionalDependencies:
'@rollup/rollup-android-arm-eabi': 4.46.2
'@rollup/rollup-android-arm64': 4.46.2
'@rollup/rollup-darwin-arm64': 4.46.2
'@rollup/rollup-darwin-x64': 4.46.2
'@rollup/rollup-freebsd-arm64': 4.46.2
'@rollup/rollup-freebsd-x64': 4.46.2
'@rollup/rollup-linux-arm-gnueabihf': 4.46.2
'@rollup/rollup-linux-arm-musleabihf': 4.46.2
'@rollup/rollup-linux-arm64-gnu': 4.46.2
'@rollup/rollup-linux-arm64-musl': 4.46.2
'@rollup/rollup-linux-loongarch64-gnu': 4.46.2
'@rollup/rollup-linux-ppc64-gnu': 4.46.2
'@rollup/rollup-linux-riscv64-gnu': 4.46.2
'@rollup/rollup-linux-riscv64-musl': 4.46.2
'@rollup/rollup-linux-s390x-gnu': 4.46.2
'@rollup/rollup-linux-x64-gnu': 4.46.2
'@rollup/rollup-linux-x64-musl': 4.46.2
'@rollup/rollup-win32-arm64-msvc': 4.46.2
'@rollup/rollup-win32-ia32-msvc': 4.46.2
'@rollup/rollup-win32-x64-msvc': 4.46.2
'@rollup/rollup-android-arm-eabi': 4.46.3
'@rollup/rollup-android-arm64': 4.46.3
'@rollup/rollup-darwin-arm64': 4.46.3
'@rollup/rollup-darwin-x64': 4.46.3
'@rollup/rollup-freebsd-arm64': 4.46.3
'@rollup/rollup-freebsd-x64': 4.46.3
'@rollup/rollup-linux-arm-gnueabihf': 4.46.3
'@rollup/rollup-linux-arm-musleabihf': 4.46.3
'@rollup/rollup-linux-arm64-gnu': 4.46.3
'@rollup/rollup-linux-arm64-musl': 4.46.3
'@rollup/rollup-linux-loongarch64-gnu': 4.46.3
'@rollup/rollup-linux-ppc64-gnu': 4.46.3
'@rollup/rollup-linux-riscv64-gnu': 4.46.3
'@rollup/rollup-linux-riscv64-musl': 4.46.3
'@rollup/rollup-linux-s390x-gnu': 4.46.3
'@rollup/rollup-linux-x64-gnu': 4.46.3
'@rollup/rollup-linux-x64-musl': 4.46.3
'@rollup/rollup-win32-arm64-msvc': 4.46.3
'@rollup/rollup-win32-ia32-msvc': 4.46.3
'@rollup/rollup-win32-x64-msvc': 4.46.3
fsevents: 2.3.3
semver@6.3.1: {}
@@ -1182,7 +1182,7 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
postcss: 8.5.6
rollup: 4.46.2
rollup: 4.46.3
tinyglobby: 0.2.14
optionalDependencies:
'@types/node': 24.3.0
+1 -3
View File
@@ -40,9 +40,7 @@ function App() {
const [windowFocused, setWindowFocused] = createSignal(true);
const [displayedCodecs, setDisplayedCodecs]: Signal<CodecInfo[]> =
createSignal([] as CodecInfo[]);
const [fileList, setFileList] = createSignal([
"/home/satakunu/Videos/litetask_demo.mkv",
]);
const [fileList, setFileList] = createSignal([] as string[]);
const [selectedClip, setSelectedClip] = createSignal("");
const [outputCommand, setOutputCommand] = createSignal(
"ffmpeg -i {filename}",
+2 -1
View File
@@ -54,6 +54,7 @@ ul.k-list-view {
list-style: none;
padding: var(--k-small-spacing);
margin: 0;
overflow: scroll;
&.bordered {
border: 1px solid var(--k-border-color);
@@ -78,7 +79,7 @@ ul.k-list-view {
.k-white-sidebar {
background-color: var(--k-primary-highlight);
min-width: 32.5vw;
width: 32.5vw;
&.k-rborder {
border-right: 1px solid var(--k-border-color);
+2 -2
View File
@@ -116,11 +116,11 @@ export function generateOutputCommand(params: FFmpegParams) {
params.preset === undefined ? "" : ` -preset ${params.preset}`
} -progress -`;
return `ffmpeg -hwaccel auto -y ${commonOpts} ${params.vcodec === "h265" ? "-x265-params pass=1" : "-pass 1"} ${
return `ffmpeg -hwaccel auto -y ${commonOpts} ${params.vcodec === "hevc" ? "-x265-params pass=1" : "-pass 1"} ${
params.doNotUseAn ? "-vsync cfr" : "-an"
} -f null ${NULL_LOCATION} &&
ffmpeg -y -hwaccel auto ${commonOpts} ${
params.vcodec === "h265" ? "-x265-params pass=2" : "-pass 2"
params.vcodec === "hevc" ? "-x265-params pass=2" : "-pass 2"
} -c:a ${
params.acodec ?? "copy"
}${params.abitrate === undefined ? "" : ` -b:a ${params.abitrate}k`} "${params.outputFile ?? "{output}"}"`;