chore(CI): msvc build with ffmpeg
This commit is contained in:
		
							
								
								
									
										7
									
								
								.github/workflows/windows.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								.github/workflows/windows.yml
									
									
									
									
										vendored
									
									
								
							@ -8,7 +8,7 @@ jobs:
 | 
				
			|||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        include:
 | 
					        include:
 | 
				
			||||||
          - qt_ver: '6.9.0'
 | 
					          - qt_ver: '6.9.1'
 | 
				
			||||||
            vs: '2022'
 | 
					            vs: '2022'
 | 
				
			||||||
            aqt_arch: 'win64_msvc2022_64'
 | 
					            aqt_arch: 'win64_msvc2022_64'
 | 
				
			||||||
            msvc_arch: 'x64'
 | 
					            msvc_arch: 'x64'
 | 
				
			||||||
@ -40,6 +40,11 @@ jobs:
 | 
				
			|||||||
        cmake .\dependencies_src\extra-cmake-modules -Bbuild_dependencies/extra-cmake-modules -DCMAKE_INSTALL_PREFIX="dependencies_bin" -DBUILD_TESTING=OFF || goto :error
 | 
					        cmake .\dependencies_src\extra-cmake-modules -Bbuild_dependencies/extra-cmake-modules -DCMAKE_INSTALL_PREFIX="dependencies_bin" -DBUILD_TESTING=OFF || goto :error
 | 
				
			||||||
        cmake --build build_dependencies/extra-cmake-modules --config Release --target=install || goto :error
 | 
					        cmake --build build_dependencies/extra-cmake-modules --config Release --target=install || goto :error
 | 
				
			||||||
        echo ::endgroup::
 | 
					        echo ::endgroup::
 | 
				
			||||||
 | 
					        echo ::group::===== FFmpeg =====
 | 
				
			||||||
 | 
					        curl -fsSL -o ffmpeg-shared.7z https://github.com/GyanD/codexffmpeg/releases/download/7.1.1/ffmpeg-7.1.1-full_build-shared.7z
 | 
				
			||||||
 | 
					        7z x ffmpeg-shared.7z -y -o"dependencies_src"
 | 
				
			||||||
 | 
					        set FFMPEG_ROOT=%PWD%\dependencies_src\ffmpeg-7.1.1-full_build-shared
 | 
				
			||||||
 | 
					        echo ::endgroup::
 | 
				
			||||||
        echo ::group::===== Gperf (required by KCodecs) =====
 | 
					        echo ::group::===== Gperf (required by KCodecs) =====
 | 
				
			||||||
        choco install gperf
 | 
					        choco install gperf
 | 
				
			||||||
        echo ::endgroup::
 | 
					        echo ::endgroup::
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -1,8 +1,10 @@
 | 
				
			|||||||
# Common build folder
 | 
					# Common build folder
 | 
				
			||||||
[Bb]uild/
 | 
					[Bb]uild/
 | 
				
			||||||
 | 
					build-*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# IDE folder
 | 
					# IDE folder
 | 
				
			||||||
.vscode/
 | 
					.vscode/
 | 
				
			||||||
 | 
					.idea/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# User config file
 | 
					# User config file
 | 
				
			||||||
CMakeLists.txt.user*
 | 
					CMakeLists.txt.user*
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										20
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								README.md
									
									
									
									
									
								
							@ -7,9 +7,11 @@ Since **I** just need a simple player which *just works* right now, so I did man
 | 
				
			|||||||
We have the following features:
 | 
					We have the following features:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [Sidecar](https://en.wikipedia.org/wiki/Sidecar_file) lyrics file (`.lrc`) support with an optional desktop lyrics bar widget
 | 
					- [Sidecar](https://en.wikipedia.org/wiki/Sidecar_file) lyrics file (`.lrc`) support with an optional desktop lyrics bar widget
 | 
				
			||||||
- Sidecar chapter file support
 | 
					- Chapter file support
 | 
				
			||||||
  - [YouTube-style chapter](https://support.google.com/youtube/answer/9884579) saved to a plain text file with `.chp` suffix
 | 
					  - Sidecar chapter file support:
 | 
				
			||||||
  - PotPlayer `.pbf` file, `[Bookmark]`s as chapters
 | 
					    - [YouTube-style chapter](https://support.google.com/youtube/answer/9884579) saved to a plain text file with `.chp` suffix
 | 
				
			||||||
 | 
					    - PotPlayer `.pbf` file, `[Bookmark]`s as chapters
 | 
				
			||||||
 | 
					  - Built-in chapter support (require build with FFmpeg)
 | 
				
			||||||
- Auto-load all audio files in the same folder of the file that you attempted to play, into a playlist
 | 
					- Auto-load all audio files in the same folder of the file that you attempted to play, into a playlist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
These features are not available, some of them are TBD and others are not planned:
 | 
					These features are not available, some of them are TBD and others are not planned:
 | 
				
			||||||
@ -31,10 +33,14 @@ These features are not available, some of them are TBD and others are not planne
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Current state, we need:
 | 
					Current state, we need:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 - `cmake` as the build system.
 | 
					- `cmake` as the build system.
 | 
				
			||||||
 - `qt6` with `qt6-multimedia` since we use it for playback.
 | 
					- `qt6` with `qt6-multimedia` since we use it for playback.
 | 
				
			||||||
 - `taglib` to get the audio file properties.
 | 
					- `kissfft` for FFT support (will be downloaded at configure-time by `cmake`).
 | 
				
			||||||
 - `kissfft` for FFT support (will be downloaded at configure-time by `cmake`).
 | 
					- (optional) `taglib` to get the audio file properties.
 | 
				
			||||||
 | 
					- (optional) `kf6codecs` to get the lyrics encoding correct.
 | 
				
			||||||
 | 
					- (optional) `ffmpeg` to get the audio chapter properties.
 | 
				
			||||||
 | 
					  - It's suggested to use the same FFmpeg version that Qt Multimedia uses, so we can reuse the FFmpeg library binaries that Qt uses.
 | 
				
			||||||
 | 
					    - You can know the version by checking [Qt documentation's FFmpeg attribution page](https://doc.qt.io/qt-6.9/qtmultimedia-attribution-ffmpeg.html)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Then we can build it with any proper c++ compiler like g++ or msvc.
 | 
					Then we can build it with any proper c++ compiler like g++ or msvc.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -687,6 +687,9 @@ void MainWindow::on_actionHelp_triggered()
 | 
				
			|||||||
#ifdef HAVE_KCODECS
 | 
					#ifdef HAVE_KCODECS
 | 
				
			||||||
        QStringLiteral("- [KCodecs](https://invent.kde.org/frameworks/kcodecs)\n") %
 | 
					        QStringLiteral("- [KCodecs](https://invent.kde.org/frameworks/kcodecs)\n") %
 | 
				
			||||||
#endif // NO_TAGLIB
 | 
					#endif // NO_TAGLIB
 | 
				
			||||||
 | 
					#ifdef HAVE_FFMPEG
 | 
				
			||||||
 | 
					        QStringLiteral("- [FFmpeg](https://ffmpeg.org/)\n") %
 | 
				
			||||||
 | 
					#endif // HAVE_FFMPEG
 | 
				
			||||||
        "\n"
 | 
					        "\n"
 | 
				
			||||||
        "[Source Code](https://github.com/BLumia/pineapple-music)\n"
 | 
					        "[Source Code](https://github.com/BLumia/pineapple-music)\n"
 | 
				
			||||||
        "\n"
 | 
					        "\n"
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user