Is there any Windows-based media player software that allows you to pause a video, and then un-pause a few seconds earlier?
Solution 1
I suggest a player agnostic solution: Install: AutoHotkey (freeware)
Example for Windows Media Player Define Space to be a macro for Ctrl+P and ←
;AutoHotkey Pause + Left Macro Example
Space::
Send ^p{Left}
To use it, enable the macro and set the focus (= click once) on Media Player's time scrollbar. This way while playing something you press Space and it pauses and goes back a few seconds. To continue press Space again and it continues and goes back a few more seconds.
Warning: Don't forget to disable the macro when not using that feature or it will drive you nuts ;)
AutoHotkey has a powerful macro language. If you can do a little programming you may even build something like a simplified remote control for your player by changing window focus and such things.
Solution 2
You can do it with VLC.
Combinations of CTRL, SHIFT, ALT and Left arrow will jump backwards - replace with right arrow to jump forwards.
If you look in the VLC preferences window, under hotkeys, you can see which key-combination does which jump.
Solution 3
If you are an advanced user (or know someone) and your computer has a microphone, then you might be able to use Windows Speech Recognition Macros :
The Windows Speech Recognition Macros tool or WSR Macros for short extends the usefulness of the speech recognition capabilities in Windows Vista.
Users can create powerful macros that are triggered by spoken commands which can perform a series of tasks from as simple as inserting your mailing address to as complex as providing a completely different speech interaction with applications.
Please note that most Bluetooth microphones do not function well with Windows Speech Recognition due to limited audio bandwidth.
So in theory, by using nothing else than one's voice, one should be able to program a speech-activated macro that will send keyboard commands to the player to pause, rewind and unpause. Most players support a keyboard interface.
The download is available from here, some archived macros are available here, and a forum here.
From the large availability of related material on the Internet, I would say that the technology does work. However, I have never tried it, so cannot testify for its efficiency.
Solution 4
Daum PotPlayer, or The KMPlayer. Both can do this. Just hit the left arrow key to jump back(5 seconds is default but you can change this.) http://filehippo.com/download_kmplayer/ You can search around for the PotPlayer.
Related videos on Youtube
Brian Var
Updated on September 18, 2022Comments
-
Brian Var almost 2 years
I'm following an MVVM pattern for my application and to prevent memory leaks, I need to cut down the number of object instances to one. This object instance should then be handed of to the other classes where needed.
In my current implementation the instance is being set up in the AppVM, and passed to the
AdductionAbductionFlexionViewModel
. But from doing a search for theMyoDeviceModle()
instance, a second instance is shown here in theAdductionAbductionFlexionView
.My question is how can I set up the constructor in the
AdductionAbductionFlexionView
to take the_connectedDevice
instance that's being used throughout the app?This is the AppVM showing the main and only instance that should be used:
private MyoDeviceModel _connectedDevice; #endregion /// <summary> /// Initializes a new instance of the <see cref="ApplicationViewModel"/> class. /// </summary> public ApplicationViewModel() { _connectedDevice = new MyoDeviceModel(); // Add available pages PageViewModels.Add(new HomeViewModel(new UserLoginModel())); PageViewModels.Add(new AdductionAbductionFlexionViewModel(_connectedDevice, new DatabaseModel())); // Set starting page CurrentPageViewModel = PageViewModels[0]; }
And this is how its passed to the
AdductionAbductionFlexionViewModel
:private MyoDeviceModel _myoDevice; private DatabaseModel _dataObj;
public event Action<string> DataChanged; private string _itemString; /// <summary> /// Initializes a new instance of the <see cref="AdductionAbductionFlexionViewModel"/> class. /// </summary> /// <param name="Myodevice">The device.</param> /// <param name="progressData">The progress data.</param> public AdductionAbductionFlexionViewModel(MyoDeviceModel Myodevice, DatabaseModel progressData) { DataSubmitCommand = new RelayCommand (this.SaveChangesToPersistence); CalibrationSetCommand = new RelayCommand(this.CallibratePitchMinimumCall); DatabaseSearchCommand = new RelayCommand(this.QueryDataFromPersistence); _myoDevice = Myodevice; _myoDevice.MyoDeviceStart(); _dataObj = progressData; _myoDevice.StatusUpdated += (update) => { CurrentStatus = update; }; _myoDevice.PoseUpdated += (update) => { PoseStatus = update; }; _myoDevice.PainfulArcDegreeUpdated += (update) => { PainfulArcStatus = update; }; _myoDevice.DegreesUpdated += (update) => { DegreeStatus = update; }; _myoDevice.StartDegreeUpdated += (update) => { StartDegreeStatus = update; }; _myoDevice.EndDegreeUpdated += (update) => { EndDegreeStatus = update; }; }
But I'm wondering how I can pass the
_connectedDevice
instance instead ofnew MyoDeviceModel()
public AdductionAbductionFlexionView() { InitializeComponent(); this.DataContext = new AdductionAbductionFlexionViewModel(new MyoDeviceModel(), new DatabaseModel()); this.Loaded += AdductionAbductionFlexionView_Loaded; this.Loaded -= AdductionAbductionFlexionView_Loaded; ((AdductionAbductionFlexionViewModel)DataContext).DataChanged += x => { new ToastPopUp("Submit Succeeded!", "Progress data submitted succesfully", NotificationType.Information) { Background = new LinearGradientBrush(System.Windows.Media.Color.FromRgb(0, 189, 222), System.Windows.Media.Color.FromArgb(255, 10, 13, 248), 90), BorderBrush = new SolidColorBrush(System.Windows.Media.Color.FromRgb(0, 189, 222)), FontColor = new SolidColorBrush(System.Windows.Media.Color.FromRgb(255, 255, 255)) }.Show(); }; }
-
faljbour over 9 yearswhy do you say that is a second instance since you are passing the instance in the constructor of AdductionAbductionFlexionViewModel, it seems to me you are using one instance.
-
Brian Var over 9 yearsI forgot to rename, these are two separate instances. I want to remove the _myoDeviceSecondObj and only reference the instance from the AppVM which is
_myoDevice
-
faljbour over 9 yearsthat is still the same, you code is fine, you are using one instance since you passing it in the constructor of AdductionAbductionFlexionViewModel. You do not need to change anything. Unless I am missing something
-
Peter Duniho over 9 yearsIt's not clear what doesn't work in your code example. Also, you haven't provided a good, minimal, complete code example to illustrate the problem. Please read that link, as well as stackoverflow.com/help/how-to-ask for advice on how to present your question in a clearer, useful way.
-
Brian Var over 9 years@PeterDuniho edited the question for better clarity.
-
-
slhck about 13 yearsCould you elaborate on this? How exactly will VLC let him do that?
-
Joe Schmoe about 13 yearsI've got VLC installed. Can you tell how you do it?
-
Kevin M about 13 years-1: I've had VLC for a long time now and I don't think it can do this.
-
Joe Schmoe about 13 yearsSo can this be set up to rewind automatically on unpause? While cooking, my hands are usually quite messy so minimizing keyboard contact is a must
-
Joe Schmoe about 13 yearsIdeally, because my hands are messy while cooking, I want to minimize keyboard contact hence the reason I would like it to rewind automatically on unpause
-
Joe Schmoe about 13 yearsNormally, I use the keyboard. I'll give that suggestion a try
-
Joe Schmoe about 13 yearsUnfortunately, while you can apparently bind both keys to the same hotkey, it appears that only the play/pause hotkey is fired off
-
Rhys about 13 yearsI don't know of any way to do it by default but you could certainly make an autohotkey script to execute: Space, Shift+Left. You could assign it to your spacebar.
-
ntw1103 about 13 yearsWhen you hit the left arrow key to jump back, it doesn't pause at all, it just jumps back and continues to play. if you want to pause it you can hit space. (all of the keys are configurable)
-
ntw1103 about 13 yearsTo do what you are trying to do, ctrl + left will jump you back 30 seconds. If this is too hard, you can set it to another key: once The KMPlayer is open, hit F2 in the tree view on the left select General, then Keys/Global Control In the tree view in the center, under playback select & Jump(to) click 30 sec. Backward click on the text field labeled Key(it is red) then press whichever key you want to use to jump back 30 seconds. Hit close, and you should be good to go.
-
ntw1103 about 13 yearsAlso, if you want to do this in VLC it is possible. tools -> Preferences. In the bottom left there is a simple/all radio button. Select all. In the tree on the left, select interface -> Hotkeys. There is the option to adjust jump sizes. you can set the Short jump to 30 seconds. Next in the list, scroll to the medium backwards jump. The default is Ctrl+left. You can select it and enter a new key to use in the box then hit apply. Click save at the bottom and you should be good to go.
-
harrymc about 13 yearsThe microphone should be placed far enough from the speakers to lessen background noise. Conflicts are minimized since the recorded command will be in your own voice. Use command words or short phrases that are clearly pronounceable and test the result. See this example (voice quality is low so turn up the volume to hear).
-
harrymc about 13 yearsSee also this article : Control Your PC with Your Voice.
-
Joe Schmoe about 13 yearsThanks. That works simply and elegantly. In case anyone's interested, I'm firing off the SHIFT and LEFT combination for smaller jumps in Windows Media Player which equates to +{LEFT} in the script. The nice side-effect of this is that pressing the space bar a few times enables you to rewind the video further if necessary while touching no other keys. And even if my hands are too dirty to touch the keyboard, I can just use whatever utensil I can find lying around to just prod the space bar :)
-
Brian Var over 9 yearsyes got that figured out, I seem to have another instance in my View though, will add that to my question.
-
Admin over 9 years@BrianJ, iro other instances, you need to wrap your instance using the singelton pattern. Then you can access this instance anywhere in your code through the static member that contains the instance and do not need to create other instances. That it is the purpose of a singleton.