@@ -44,8 +44,10 @@ const FFMPEG_MACOS_RELEASE_URL: &str = "https://evermeet.cx/ffmpeg/ffmpeg-{}.zip
4444const FFMPEG_RECORD_FRAME_RATE : & str = "30" ;
4545const FFMPEG_RECORD_DESKTOP_WINDOWS_COMMAND : & str = "{} -f gdigrab -i desktop -r {} -q:v 1 -y {}" ;
4646const FFMPEG_RECORD_DESKTOP_LINUX_COMMAND : & str = "{} -f x11grab -i {} -r {} -vcodec huffyuv -y {}" ;
47- const FFMPEG_RECORD_DESKTOP_MACOS_COMMAND : & str = r#"{} -f avfoundation -i "0:0" -r {} -y {}"# ;
47+ const FFMPEG_RECORD_DESKTOP_MACOS_COMMAND : & str =
48+ r#"{} -f avfoundation -video_device_index 0 -r {} -y {}"# ;
4849const FFMPEG_RECORDING_EXTENSION_AVI : & str = "avi" ;
50+ const FFMPEG_RECORDING_EXTENSION_MKV : & str = "mkv" ;
4951const FFMPEG_RECORDING_FOLDER : & str = "recordings" ;
5052const FFMPEG_DEFAULT_DISPLAY : & str = ":0" ;
5153
@@ -189,9 +191,14 @@ pub fn uncompress_ffmpeg(
189191 Ok ( ( ) )
190192}
191193
192- fn get_recording_name ( ) -> String {
194+ fn get_recording_name ( os : & str ) -> String {
193195 let now = chrono:: Local :: now ( ) ;
194- now. format ( "%Y-%m-%d_%H-%M-%S" ) . to_string ( ) + "." + FFMPEG_RECORDING_EXTENSION_AVI
196+ let extension = if MACOS . is ( os) {
197+ FFMPEG_RECORDING_EXTENSION_MKV
198+ } else {
199+ FFMPEG_RECORDING_EXTENSION_AVI
200+ } ;
201+ now. format ( "%Y-%m-%d_%H-%M-%S" ) . to_string ( ) + "." + extension
195202}
196203
197204pub fn record_desktop_with_ffmpeg (
@@ -202,7 +209,7 @@ pub fn record_desktop_with_ffmpeg(
202209) -> Result < ( ) , Error > {
203210 let recording_target = cache_path
204211 . join ( FFMPEG_RECORDING_FOLDER )
205- . join ( get_recording_name ( ) ) ;
212+ . join ( get_recording_name ( os ) ) ;
206213 let recording_name = path_to_string ( & recording_target) ;
207214 create_parent_path_if_not_exists ( & recording_target) ?;
208215
0 commit comments