Skip to content

Commit 4ce5dfc

Browse files
committed
refactor diagnostics pages
1 parent 7e0e29d commit 4ce5dfc

9 files changed

Lines changed: 1231 additions & 856 deletions

tools/index.html

Lines changed: 470 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# FFmpeg Feature Evolution Matrix
2+
3+
[← Back to Portal](index.html)
4+
5+
> [!NOTE]
6+
> This page is automatically generated. It compares the availability of protocols, codecs, filters, and other features across different FFmpeg versions.
7+
> **Columns from left to right:** Newest (8.1.2) to Oldest (4.0.5). Blanks on the right indicate newly added features in that version.
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# 🎬 Player Compatibility & Encoding Pitfalls Validation Suite
2+
3+
[← Back to Portal](index.html)
4+
5+
This test suite presents the most common video/audio encoding pitfalls in player hardware/software compatibility, generated dynamically using our custom **FFmpeg 8-bin**. Download and test these samples on your target players (QuickTime, Safari, VLC, Chrome, iOS/Android Native Player) to witness the compatibility differences!
6+
7+
> [!TIP]
8+
> 🌈 **FFmpeg Virtual Test Sources Showcase**: We have generated high-quality demo videos for all available virtual test sources (like Mandelbrot fractal, dynamic gradients, custom test patterns, etc.) compiled into our binary. Since it is extremely rich, we have put them in a dedicated page: **[Explore FFmpeg Virtual Sources & Patterns ➜](virtual-sources.html)**
9+
10+
## 1. HEVC/H.265 Tagging Compatibility (Apple Safari & QuickTime Pitfall)
11+
12+
| Test Sample MP4 | HEVC Video Tag | Expected Player Support (QuickTime / Safari) | FFmpeg Encoding Command |
13+
| :--- | :---: | :--- | :--- |
14+
|[test_x265_hev1.mp4](videos/test_x265_hev1.mp4) | `hev1` | **Fails** to play on Safari/QuickTime (black screen / error) | `ffmpeg -i ... -c:v libx265 -tag:v hev1 ...` |
15+
| 💚 [test_x265_hvc1.mp4](videos/test_x265_hvc1.mp4) | `hvc1` | **Plays perfectly** on all iOS/macOS Safari and QuickTime | `ffmpeg -i ... -c:v libx265 -tag:v hvc1 ...` |
16+
17+
## 2. Web Streaming Optimization (MP4 Fast Start / metadata Pitfall)
18+
19+
| Test Sample MP4 | Fast Start Enabled? | Expected Playback Behavior on Web Browsers | FFmpeg Encoding Command |
20+
| :--- | :---: | :--- | :--- |
21+
|[test_x264_no_faststart.mp4](videos/test_x264_no_faststart.mp4) | No | **Lags/Buffers**: Browser must download the entire video before playing | `ffmpeg -i ... -c:v libx264 ...` |
22+
| 💚 [test_x264_faststart.mp4](videos/test_x264_faststart.mp4) | **Yes** | **Instant Playback**: Video streams instantly while downloading in background | `ffmpeg -i ... -c:v libx264 -movflags +faststart ...` |
23+
24+
## 3. Chroma Subsampling & Color Depth Compatibility
25+
26+
| Test Sample MP4 | Subsampling / Depth | Expected Mobile HW Decoder Compatibility | FFmpeg Encoding Command |
27+
| :--- | :---: | :--- | :--- |
28+
| 💚 [test_x264_yuv420p.mp4](videos/test_x264_yuv420p.mp4) | `yuv420p` (8-bit) | **Universal**: Flawless playback on all hardware decoders | `ffmpeg -i ... -pix_fmt yuv420p -c:v libx264` |
29+
|[test_x264_yuv444p.mp4](videos/test_x264_yuv444p.mp4) | `yuv444p` (Lossless) | **Failures**: Crashes or fails on mobile hardware chips | `ffmpeg -i ... -pix_fmt yuv444p -c:v libx264` |
30+
| ⚠️ [test_x265_10bit.mp4](videos/test_x265_10bit.mp4) | `yuv420p10le` (10-bit) | **Partial**: Supported on HDR chips, fails on legacy devices | `ffmpeg -i ... -pix_fmt yuv420p10le -c:v libx265` |
31+
32+
## 4. H.264 Profiles (Compression vs Compatibility)
33+
34+
| Test Sample MP4 | H.264 Profile | Compression Efficiency & compatibility | FFmpeg Encoding Command |
35+
| :--- | :---: | :--- | :--- |
36+
| 💚 [test_x264_baseline.mp4](videos/test_x264_baseline.mp4) | `baseline` | **Low efficiency** but supports ancient legacy embedded devices | `ffmpeg -i ... -c:v libx264 -profile:v baseline` |
37+
| 💚 [test_x264_high.mp4](videos/test_x264_high.mp4) | `high` | **Standard modern efficiency** for almost all web and desktop players | `ffmpeg -i ... -c:v libx264 -profile:v high` |
38+
39+
## 5. Audio Container Support (AAC inside MP4)
40+
41+
| Test Sample MP4 | Audio Codec | Expected Native iOS/macOS Player Support | FFmpeg Encoding Command |
42+
| :--- | :---: | :--- | :--- |
43+
| 💚 [test_audio_aac.mp4](videos/test_audio_aac.mp4) | `aac` (AAC-LC) | **Universal**: Flawless audio playback on all players/devices | `ffmpeg -i ... -c:v libx264 -c:a aac` |
44+
45+
## 6. Interlaced Video Generation (Comb Video)
46+
47+
| Test Sample MP4 | Filter Mode | Expected Player Behavior | FFmpeg Encoding Command |
48+
| :--- | :---: | :--- | :--- |
49+
| ⚠️ [test_comb.mp4](videos/test_comb.mp4) | `interleave_top` | **Comb Effect**: Interlaced video (top field first), requires deinterlacing | `ffmpeg -f lavfi -i "testsrc2=size=1280x720:rate=50" -vf "tinterlace=mode=interleave_top" -c:v libx264 -pix_fmt yuv420p -t 10 -y test_comb.mp4` |
50+
51+
## 7. Transparent Background Video (Alpha Channel / VP9 WebM)
52+
53+
WebM with a VP9 alpha channel (`yuva420p`) lets video composite over a page background — no green-screen keying required. **Chrome & Firefox** render the transparency correctly; **Safari/QuickTime** have poor support for alpha WebM and may show a black/opaque background instead.
54+
55+
> [!WARNING]
56+
> Do **not** use the `drawbox` filter to draw onto a fully transparent canvas — it blends against alpha=0 and silently produces an all-transparent (empty) video. Composite an opaque shape onto the transparent base with `overlay` instead, as shown below.
57+
58+
| Test Sample WebM | Pixel Format | Expected Player Behavior | FFmpeg Encoding Command |
59+
| :--- | :---: | :--- | :--- |
60+
| 💚 [test_transparent.webm](videos/test_transparent.webm) | `yuva420p` | **Transparent**: background shows through on Chrome/Firefox; opaque on Safari | `ffmpeg -f lavfi -i "color=c=black@0.0:s=640x480:r=30:d=5,format=yuva420p" -f lavfi -i "color=c=red:s=80x80:r=30:d=5,format=yuva420p" -filter_complex "[0][1]overlay=x='100+t*80':y=200:format=auto" -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 test_transparent.webm` |
61+
62+
**Visual Demo** (checkerboard shows through the transparent regions):
63+
64+
<div style="display:inline-block;padding:10px;border-radius:8px;background-color:#808080;background-image:linear-gradient(45deg,#ccc 25%,transparent 25%),linear-gradient(-45deg,#ccc 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#ccc 75%),linear-gradient(-45deg,transparent 75%,#ccc 75%);background-size:24px 24px;background-position:0 0,0 12px,12px -12px,-12px 0;">
65+
<video width="640" height="480" autoplay loop muted playsinline src="videos/test_transparent.webm"></video>
66+
</div>

tools/markdown/virtual-sources.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# 🌈 FFmpeg Virtual Test Sources Showcase
2+
3+
[← Back to Portal](index.html)
4+
5+
This dedicated page showcases all the built-in virtual test video and audio sources compiled within our custom-built **FFmpeg 8-bin**. These source filters can be loaded dynamically via the `lavfi` input device to generate colors, shapes, noise, charts, and mathematical patterns without needing external files!
6+
7+
---
8+
9+
## 1. Standard Patterns & Grids
10+
11+
### 💚 Standard Color Bars & Timing (`testsrc`)
12+
* **FFmpeg Command**: `ffmpeg -f lavfi -i "testsrc=duration=5:size=640x360:rate=30" -pix_fmt yuv420p -c:v libx264 vsrc_testsrc.mp4`
13+
* **Visual Demo**:
14+
15+
<video width="640" height="360" controls muted loop src="videos/vsrc_testsrc.mp4"></video>
16+
17+
### 💚 Modern Test Pattern (`testsrc2`)
18+
* **FFmpeg Command**: `ffmpeg -f lavfi -i "testsrc2=duration=5:size=640x360:rate=30" -pix_fmt yuv420p -c:v libx264 vsrc_testsrc2.mp4`
19+
* **Visual Demo**:
20+
21+
<video width="640" height="360" controls muted loop src="videos/vsrc_testsrc2.mp4"></video>
22+
23+
---
24+
25+
## 2. Advanced Mathematical & Algorithmic Patterns
26+
27+
### 🌀 Mandelbrot Fractal Zoom (`mandelbrot`)
28+
* **FFmpeg Command**: `ffmpeg -f lavfi -i "mandelbrot=duration=5:size=640x360:rate=30" -pix_fmt yuv420p -c:v libx264 vsrc_mandelbrot.mp4`
29+
* **Visual Demo**:
30+
31+
<video width="640" height="360" controls muted loop src="videos/vsrc_mandelbrot.mp4"></video>
32+
33+
### 🎨 Linear Gradient Dynamic Colors (`gradients`)
34+
* **FFmpeg Command**: `ffmpeg -f lavfi -i "gradients=duration=5:size=640x360:rate=30" -pix_fmt yuv420p -c:v libx264 vsrc_gradients.mp4`
35+
* **Visual Demo**:
36+
37+
<video width="640" height="360" controls muted loop src="videos/vsrc_gradients.mp4"></video>
38+
39+
---
40+
41+
## 3. Analysis & Color Space Calibration
42+
43+
### 📊 YUV Color Space Reference (`yuvtestsrc`)
44+
* **FFmpeg Command**: `ffmpeg -f lavfi -i "yuvtestsrc=duration=5:size=640x360:rate=30" -pix_fmt yuv420p -c:v libx264 vsrc_yuvtestsrc.mp4`
45+
* **Visual Demo**:
46+
47+
<video width="640" height="360" controls muted loop src="videos/vsrc_yuvtestsrc.mp4"></video>
48+
49+
### 📊 RGB Color Space Reference (`rgbtestsrc`)
50+
* **FFmpeg Command**: `ffmpeg -f lavfi -i "rgbtestsrc=duration=5:size=640x360:rate=30" -pix_fmt yuv420p -c:v libx264 vsrc_rgbtestsrc.mp4`
51+
* **Visual Demo**:
52+
53+
<video width="640" height="360" controls muted loop src="videos/vsrc_rgbtestsrc.mp4"></video>
54+
55+
### 🎨 24-Color Reference Color Chart (`colorchart`)
56+
* **FFmpeg Command**: `ffmpeg -f lavfi -i "colorchart=duration=5:size=640x360:rate=30" -pix_fmt yuv420p -c:v libx264 vsrc_colorchart.mp4`
57+
* **Visual Demo**:
58+
59+
<video width="640" height="360" controls muted loop src="videos/vsrc_colorchart.mp4"></video>
60+
61+
---
62+
63+
## 4. Solid Colors & Audio Generation
64+
65+
### 💚 Solid Color Reference Background (`color`)
66+
* **FFmpeg Command**: `ffmpeg -f lavfi -i "color=color=0x1a823b:duration=5:size=640x360:rate=30" -pix_fmt yuv420p -c:v libx264 vsrc_color.mp4`
67+
* **Visual Demo**:
68+
69+
<video width="640" height="360" controls muted loop src="videos/vsrc_color.mp4"></video>
70+
71+
### 🔊 1000Hz Sine Tone Waveform (`sine`)
72+
* **FFmpeg Command**: `ffmpeg -f lavfi -i "color=color=darkblue:duration=5:size=640x360:rate=30" -f lavfi -i "sine=frequency=1000:duration=5" -pix_fmt yuv420p -c:v libx264 -c:a aac vsrc_sine.mp4`
73+
* **Visual Demo (With Audio)**:
74+
75+
<video width="640" height="360" controls loop src="videos/vsrc_sine.mp4"></video>

tools/publish-feature-doc.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ touch "$OUTPUT_DIR/.nojekyll"
1818
# echo "debugly.github.io" > "$OUTPUT_DIR/CNAME"
1919

2020

21-
echo "=== 4. 生成 index.md (去掉了干扰路由的 Front Matter) ==="
21+
echo "=== 4. 生成 index.md ==="
2222
# 回归最纯粹的 Markdown 头部,靠 GitHub 原生渲染,不再加任何 permalink
2323
cat << 'EOF' > "$OUTPUT_DIR/index.md"
24-
# FFmpeg Feature Evolution Matrix (macOS arm64)
24+
# FFmpeg Feature Evolution Matrix
2525
2626
> [!NOTE]
2727
> This page is automatically generated. It compares the availability of protocols, codecs, filters, and other features across different FFmpeg versions.

0 commit comments

Comments
 (0)