package Ġcom . jad yn . ai . media learn . decode Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Environment Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Seek Bar Ċ import Ġcom . jad yn . ai . media learn . R Ċ import Ġcom . jad yn . medi akit . function . duration Second Ċ import Ġcom . jad yn . medi akit . video . decode . Video Analyze Ċ import Ġcom . jad yn . medi akit . video . decode . Video Decoder 2 Ċ import Ġkotlinx . android . synt hetic . main . activity _ decode _ frame .* Ċ Ċ /** Ċ Ġ*@ version : Ċ Ġ*@ File Description : Ċ Ġ*@ Author : j ing Ċ Ġ*@ Since : 2 0 1 9 / 2 / 1 9 Ċ Ġ*@ Change List : Ċ Ġ*/ Ċ class ĠDecode Frame Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdecode MP 4 Path Ġ= ĠText Utils . concat ( Environment . get External Storage Directory (). path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ y azi . mp 4 "). toString () ĊĊĠĠĠ Ġprivate Ġvar Ġvideo Analyze : ĠVideo Analyze ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġvideo Decoder 2 : ĠVideo Decoder 2 ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ decode _ frame ) ĊĠĠĠĠĠĠĠ Ġfile _ frame _ et . setText ( decode MP 4 Path ) ĊĊĠĠĠĠĠĠĠ Ġsure _ video . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdataSource Ġ= Ġfile _ frame _ et . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( video Analyze Ġ!= Ġnull Ġ&& Ġvideo Analyze !!. dataSource . equals ( dataSource )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Analyze Ġ= ĠVideo Analyze ( dataSource ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo _ seek . max Ġ= Ġvideo Analyze !!. media Format . duration Second ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo _ seek . progress Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġms _ video _ seek . max Ġ= Ġvideo Analyze !!. media Format . duration Second Ġ* Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġms _ video _ seek . progress Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Decoder 2 Ġ= ĠVideo Decoder 2 ( dataSource ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Time ( 0 , Ġvideo _ seek . max ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvideo _ seek . setOn Seek Bar ChangeListener ( object Ġ: ĠSeek Bar . On Seek Bar ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( seek Bar : ĠSeek Bar , Ġprogress : ĠInt , Ġfrom User : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Analyze ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Time ( progress , Ġmedia Format . duration Second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Decoder 2 ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Frame ( seek Bar . progress . toFloat (), Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe _ img . setImage Bitmap ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" ce ce ", Ġ" throwable Ġ${ it . message }: Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( seek Bar : ĠSeek Bar ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġms _ video _ seek . setOn Seek Bar ChangeListener ( object Ġ: ĠSeek Bar . On Seek Bar ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( seek Bar : ĠSeek Bar , Ġprogress : ĠInt , Ġfrom User : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Analyze ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Time ( seek Bar . progress , Ġmedia Format . duration Second Ġ* Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Decoder 2 ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Frame Ms ( seek Bar . progress . to Long (), Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe _ img . setImage Bitmap ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" ce ce ", Ġ" throwable Ġ${ it . message }: Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( seek Bar : ĠSeek Bar ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Time ( progress : ĠInt , Ġmax : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtime . text Ġ= Ġ" çİ°åľ¨ Ġ: Ġ$ progress Ġ æĢ» æĹ¶ éķ¿ ä¸º Ġ: Ġ$ max " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġvideo Decoder 2 ?. release () ĊĠĠĠ Ġ} Ċ }