How do you partition an events table by a time based off the datediff(Lag,time)?
You can look at the following:  (Notice I changed your sample date formats for this example)
This uses a CTE to get your dataset with the 'LAG'ged value for [Activity_Start_Time].  The LAG is performed as partitioned by User and ordered by the date

Table:

Create Table #events
(
SessionID Int,
[User] Int,
Video Int,
Activity_Start_Time SmallDateTime,
[Event] VarChar(20)
)
Insert Into #events Values
(10,1,2,'2019-02-12 12:05:05','play'),
(10,1,2,'2019-02-12 13:05:05','stop'),
(10,1,2,'2019-02-14 12:05:05','play'),
(10,1,2,'2019-02-14 13:05:05','Watching'),
(10,1,2,'2019-02-16 14:10:10','Stop')


Query:

With cte As
(
Select 
       Activity_Start = Lag(Activity_Start_Time,1,0) 
                        Over (Partition By [User] Order By Activity_Start_Time),
       Case When IsNull(Lag(Activity_Start_Time,1,0) 
                        Over (Partition By [User] Order By Activity_Start_Time),0) = 0 
            Then 0 
            Else DateDiff(Hour,Lag(Activity_Start_Time,1,0) 
                        Over (Partition By [User] Order By Activity_Start_Time),Activity_Start_Time)
       End As Diff_Hours,
       *
From 
       #events
)
Select 
      SessionID,
      [User], 
      Video,
      Diff_Hours,
      Activity_Start,
      Activity_Start_Time As Activity_End
From cte
Where Diff_Hours &gt; 2


Drop Table #events


Result:

SessionID   User    Video   Diff_Hours  Activity_Start      Activity_End
10          1       2       47          2019-02-12 13:05:00 2019-02-14 12:05:00
10          1       2       49          2019-02-14 13:05:00 2019-02-16 14:10:00