简介 :
介绍一款终端下的媒体播放器(图片/视频)
一个简单的小栗子 :
nc 120.24.215.80 50000
试试看会发生什么吧~
使用方法 :
Usage :
python tplayer.py [VIDEO_PATH|IMAGE_PATH]
Author :
WangYihang <wangyihanger@gmail.com>
使用样例 :
python tplayer.py BruceLee.jpg
oottzzzzzkotkkkkkeeewsVVwVlsssewswwwVeVsseJweVJJJkeeeeJtootokk@CCCUxxzxzoozxJJJJJJJVVwwVVVwwwwwJJJJJJJJJeewwwwwwwweeeeeeeeeeJkJJttttttttttttttttttttttttt
ozzzzookkeJJeVVVVwwVsssVsaa$$$l$$$aalllllsssssVVlsweeewVlJk[#iUCU[qvTT?F?uy)]CokJkeJJJJJJewwwwwwwwwwwwwwVVwwwwwwwweeeeeeeeeeeJJJkkJkkkkkkkkkkkkkkkkkkkkkk
zzxzzztkJJJJwVwwwVsVVaaaaaaP$$aP$aaalaalssssslsssVeJeeJkJh#)I(\: n ;;}\Yy)i[htkJkeeweeewVsewwwwwwweeeewwwweeeeeeeeeeeJJJJkJJkkkkkkkkkkkkkkkkkkkkk
oootttttJJJeeeweVVVVsa$aaaa$$$aaaaaaaaaaaaassslVtoxI(%iC#r|< =!ycYnT}*!L;1Ycn/\n@zkweVVVsweewVVVVVVVVVVVVwwwweeeeeeeJJJJJkkkJJJkkkkkkkkkkkkkkkkk
ototkkkkkkJeeeeeVVVVVsVaaaaaaaalaaaaalVaallVJo[%; : /Yv|}!uL|}}}nzswVVVVVVVVVVVVVwwwwwwwwwweeeeeeeJJJJJkkkJJJkkkkkkkkkkkkkkkJJ
ototkkkkJJeeeeewVVVVssVVVVaaaassVlasaVssasJq= { r <{\;*; *<=: ;!*=TnxJJswVVsalsVVswwwwwweeeeeeeeeeeeeweekkkJJJkkJJJkttkkktkJeww
oottkktJJJJeweeeeVVVVsVVsVVslalaaaa$Vallt1 1 { }?T*;! <L/}:\*!}!L]ktslslsssllsVVVVwwwVwwwwwwwwwwewJJJJJJJkkJJkkkJJJJeJJJe
otttkktkJeeeeeewVVssalasVlaaaaaaalll$4({; ; =1 ! ;;=1;!(kssslslslsllllVssVwwVVwwwwVVwVeJeJkJkVwVweeeJeeeeeeJe
ktJkttJJeewwwwVVVsssalalaaaaaaaaaalUiqF; ; |yu<L! L : |}u]CowlllllasssssssssVVVwVssVwVVVVVVVVVVweeeeeVeeewekw
kkJJJJJJwwwwVVVVwVVsssllla$PPPa$$JJr=:: !r :: > <> <}/c[oeslslllllsVssssssVslssVaVVVVVVVVVVVVeeJeVVVVVeJw
eeJeeeeeVVVVwwVVwVVVVVslVlal$a$s)=;: < }; q r =* =! * :}cqtVlaalllsVVVVssssllslVlsVVVVVVVVVVVVVVVVVVVVVwVs
eJwwwVVVweVVwwVVwVVsasaaaaaaaP@n{ r ; >= =} ! = <nL|/{Y <rm; ;<m4tslllllssssssssssVsssssVVVVwVwVVVVVVVVwVVVVVsV
wewwweeeeeVVVVVVVVVVVlaa$$aa$k?> T q <q<=: : ;}\rY:TTTT*< T}7F : =yJVsVaslslaaallsssssssVVVwslVVVwwwslssVssssssV
wwwwwVVVwVVVwVVVVVVV$aaa$$$J){: : ;:=( L;}%} * !T :={1r LioValllaa$laaalsslsslaassaVVllVssssssVVVssVV
wwVVwwVVsssssssVs$$aaaaPPVhq> ; <v! ={Yn}{ = = =y4ts$$aaa$$aaaaaalalaaaaaaassssllllllsslsss
wwVVVssssssssVslaaaaa$aez[y= u;== :r| ;* : := =y71?1=1T <yoa$aaPP$$aaaaaaa$llaaaaaaalllalsllsllsss
wwVVwVssssVVsllaaaaaaPPJ)r =; Tr<= 1//=L!!|{*>*; )%VJn|;;; ::L{{<*<?T= =FqtsPPPPa$$aaaaaaaaaaaaal$alllalslllaalll
wewVVVVVVsssllllaaaaaawI;== nT rmcnI|<:L!77#[fNddZbRNgeKZb$Pkq{<<> ;><L\Luq(1>*|*: :: >u[JlPPPPP$aaaalaaaaaaaaala$lsaaaaallalsls
VVsVsssasssssssaaalaasH ;<;=;yo\ %!(\C1T=r|(VMPN5dZbdbbAARRRARRAdKge7F]Ycnccc(%Ynu?!<;=::: q$EQQPP$$aaas$laaaaalls$$$lsslslssssssss
VVVVVlslslalsssssllaa#*=r ;*<;y*; =!}%{| {:UQKKODddDdbRRRRRRAAZRdbNDXd2GNNNOdO3fMaVJIT}*>;= <UaaPQEPP$aaaaaaaaaaasllslsslssssssssssls
VVVVsssllllallaaaaaal)7=*{}<}!? pp<h <!}$GX55NONXdXZZRRRRRZZbdDONNXNdddbONKKMf3QsJsV4m*:;;<; 1]agQQEEPPaaaaaaaaaaa$laaslaaaaaaaallaaaa
$sssssssalaaaal$l$PaJH{TTF*TY{>> \7> : {rMN55KNONNXdZRRRRRRRRbNdGNKfQZOKM2g2llka4UH%qqpcuL ;<< FKQEQQEEQEP$aaaaaaaaaaaalaa$aaaaaaalaaaaa
$sssssssaaaaaaaaa$Q$apum\I!]!= *c} > :!rPGGKKXDOOOXNDO5GjfQohJtkssks3MQaJJ4@ynL* |fgQQQQEPPPEPPaa$PP$aaaaa$aaallllllllllll
aslalaaaa$$$aa$$aPQPa4m!rrI}*;:<mr L>nMgM3GOj532$VIFr*: = )g2ggQQEPPPPPPPPPPPPPPP$$$$$a$aalaallaall
$aaa$$aa$a$EEEEEEEEQQl(r{r\!><;LTr /rsojjqq !rcYF{;: ;;;;; $E22gggQEEPPPPPEPPPPPQP$$$$$$aaaa$$$$aaaa
EP$PEEEEEEPEEEEEEEEgQa#T!F1FL*vu}> ceC m/FIymnvmvn?|;: = <T|*>>**!* ;xgggggQQQEQEPPPPPPPPPPP$P$$$$$$$$PPP$PPa$
E$PPPPPPEEEEEEEEEEEQQa@F\7/u>|Fc=* Fn} 4yzx4UJolPzy7?FFuYr}<; = :!! ;;;;>;;: :\3fMgggggQQEEQEPPPPPPPQEPPEEP$EEPPPPEEEPPP
2PPPPPEEEEEEPPPPPEEQQekm\/I]}!nu;;= TL Qwtzzh4o4?<= :>:: <* }* =;;; <:r ; HKfj2MgggQEEEQEEEPPPgQgEEQQEP$$$$PPEPPPPPP
gEPPPEEEEEQEPPEQQQQEQgPHFYycnn{( <: : awJkoh(F===: :; !yWOu ; =:=== Y : %j2fMMgggQEEEQEQEPPPPPEQQ2MME$PEPEEPEEQEPP
gEPEPEEEEEEEEQQgQggggMfg7u{TuF=|| == :I JeJz]%c};<!r| !y7 L&&AdKJ7 >=;;;;=;:==: :=;*!: <MjffM2gQQQEEEEEEEEEEEEEQQEEQPPPQEQQggEPPP
QEEQEEEEEEQQQQEQQggMMMfs4(In%cyL* : : myIJkVk[hmYumqyu1r<>>{\ch* gb&WZXf4hHm >>==;;;;===;<; *}* e3ffM2gQQQQQQQQQQQQQQQQQQQEEP$QQQggQQQQQQ
ggQQQEQQQQQgQQQQQg2MMffjMCp(ccL|4>; = ; rxlw@UC#)mu1!r\/\Fv@H {ASRW&dOMsxhy?Y {T\\\\{!;=><<>;;: :J2fff2gggggQQQQQQQQQQQQQQQQQQEQQQgggggggQ
ggQgQgQQQQggggggg2MfMjj33PYuy\u{LY= =PV*{<Tp(iH@oxo4CmYuuuFv<}oSARASZX33$Vi/?T#| ;<**!|}}}<;=;| | : ojjffM22ggQQQQQQQQQQQQQQQQQQQQQQQggggQQEE
2Qgggggggggggg22MMMfj3jGKGHuu1Lc1c!; :*@d& > :7c#qyqmY??TL|L=:z0ZdddRZZdN5glsp**{]a/*: }%(% }g2fjjMM22ggggQQQQQQQQQQQQQQQQQQQgggggQEEE
MQQgggggggggggg2MMMfffjGG3Mycyr{vu7|!: L@ZRZAs= >!<>>=1Zy k9&SEKOXbRARRDOQPkke#/r)EPM$4nrTLL{T17v)Hp < ==pGfMMffMMMMggggQQQgQQQQQQQQQQQQQQQgggggQEE
fgg2g2gggggg222MMMMffjjGGGG2puI#hu1?}::</dDdDdM%F =>::>hW6A0Wa[QdddXdRSNMso#YmyIIyr[t$PQQEQa#u7/?uy))= !* :*lj3ffffMMM2g2ggggQQQQQQQQQQQQQQEQgggggggQQ
f2g2g222gggggg2gg22MffjjjjjGPmqrMhT\m|::!MOdXdDDdZSS&00ASSbdQHqEZddNMekx]I/L!|}{!1F!r]ihozxUqY///Fuy(H:: r!T!m(333jffjMMM2g2ggggQQQQQQQQQEEQQQEQQggggQQQQ
f22g22g2MM2222222fMMfffjjjj3Ks]WbNEuFz:=<mO555ONOOONNXNOKMak#)dZgz)r ;!rr{r< *!><\4C]i)qnF??/7nv)I!=:%yvo4KG3jffffMMM2gggggQQQQEEQQQQQQQQEQQQggggggQQ
f2M2222MM22222222fMffjfjjjjGG3MJZNSSSX===*jGKO5OKGGjfjfQsJzh3AAARsL<**!< : =:=;<!*!q@[qmu11\\7cIh[L;cq%JMKKGjjMMffMMggggggggQQQQEQQQQQQQQQQgggggggQQQ
f2222MffMM22222MMMfffjjjjjjGGjg4XbbSSS7;=*2KOOO5K3jffQPskV3dAARRZbbbbbZX[r!>*=>=:==>>*|{\(cc\T1T1?c)#h%*u[aKOKG3jMMMfffM2222gggggQgggEQQQQQQQQQQgggggQQQQ
2ggg2MMfffMMMMMMMfMj3jjjjjj33jME(bRdXDG/*!gXONN3GOjjMPs$2NDZRRRbddbdddbOK5ODXG)=<<>>>***!!u/rTrT?/YyIU)?tKKGG3G3jMfMfffMMMMM2ggggQgggggggggggggQQQQggQQgg
fg222MMMMMfMMMffj3333GGGG33GGGG3x\qDZXRZDC2DXXNNNN5Kfg2GOXDdZdXN5NZDSdXwaE3Em\T{1u}<<>><**}1{Lr1?YIcq]yrKGGGG3jjfMfMffffMMMMM2ggggggggggggggggggQQQQQQQgg
fg2MfMjjjjjfffffjGGGGKKKKGGGGGKGjp!: mh]mYbdXXNOOOKKKKKONDONOEwkVfRCIyF1Lr1!;;;;;;>;<=;>**!T7Lr?1nmmpCqcOKKG33jjfMfMffffMMMMMM2fggQQQggggQQQQgPEPPgQQQQQQ
3Mffffjjjjjjffffjf3GGGKKKKKKKKKGjPH*;;= : PDddODKNKKKKKKK5Kjzq1\puL<}==Fvyn}rT//r; :;<*rF{T\/cqI)U1]N3G3jjjjjjjfffffMMMMfMMM2gggggggEEQQQPPaa$EQQQQQQ
M2ffffffffffffMfjj333GKKKKKKKKKKKGK#!>;: ::bZDNONOG5GGGGjMgkq};IjgZddbNSddbX5MlzUHvT!!|****LFrT17YyIix|wKGG3jjjjjjjjffffMMM2MMgMgggggggggQQQEQ$aaEgQQQQQQ
MgMMMfffffjjjfj33GGKKKKKKGKKGKKKKKK5f/;=;==yXbNXKKKG3jGGjQas$NddDXXNGfaJ#F\T{<*><<!|Tcccv||}TT//mmv%@ n2KKG3jjjjjjfjjfffMMMM22gMgggggggggQgggEPaa$EQQQQQQ
MMffjj3GGKKKKGGKKKKOOOOKKKKKKKKKKKKOGgC<;:: )OGKKjf22ggggQ$P2G5XD33jMsx%u\1}*<<T}*>|FYyn{!{LrT/uumI[|>kG33jjjjjfMjfjMMMMMMMM22MMMgggggggQEEEEQ$$$$QQQQQQQ
GGK5K5555OOO5OOONOOOONNOKKKKKKKKKK5555G4>:: }oQ2QfggggEslae$PEgGKf3ffMaoC(C#(H[(%%pImc1L}||}r?Fun%): ngG33jjjjffjfMMMMMMMMMMMMMMMgggggggQQQEEQ$sVlQQQQQQQ
5K5555NNNNNO55OOONNNNONO5KGGKKKKKKKKK555j!; L?f@VPPPP$EE$l$sPQPgQ3K5XdbRdddXObNNfkJ#)Y\1T{}r??uYmpm:=zfG33jjjjjjfMffMffMMMffMMMMMggggggggQQEM5OKGM2QQQQQE
5555KKKOKK55555555K5O55OO5KKKKGKKKKGGGK55NXpFLNO]%kVVEgg2QEPgMgjjKKXdRZRZbbbON2PkzU#mcT}TL}r\F/YuFn*vGKjjjjjjjjjfffMMfM22222MMMMMM2MgggQQEPf5XXXOGMQ$EPEQ
GK5KKKK3GGGGKKKK5KK555K5555K5KKKGKKKKKKKKOO){cjX5G77%ztaggQQQQMfjj35XNdddXXNGMaekC(c1*!}{}r1?TrT?\n#K5KKjfjjjjjjMffMMMM22222MMMMMMM22gggggQGONXX5MM$aPPQQ
Q3j3GGjjjjjjGjjj3jfjjKKKK55555KKKGGGG3KKKjKOkszNNNOQL}1)(]hokPQgMgEMMfjfjffE$Vh#(/T*><!!|{T{{{{rT\YzN5KGjjjjjjjjjjffffMMMMMMMMMM22ggggggggM35553fg$EaEgQg
$g22MM2gMMM2MM22Mg2ggQQQQg2QQQQ$P$$QPa$EPalQPsyKONNNKFL}|r\Yy[[JaVsewsaVw@h)i%n/{;><<<*!|!<|}}}{1TFHO55KKKK5G3KGG3fjjfffMMfM222222222MgQg23GGKKGQalEllgQQ
lE$aaasVwwVwVs$aaVJkxzotJkkJtketkJJktkttkkkzoxHOKNNNNf@FL|!***|\c(%)ymYnmY71{<;;;;;<<*<>;>****!}{L1YNNNff$%?TT/mJOK33jffffffffMMfM22222f2fjGfffMeoteawggQ
PPP$lVssJekxx4zzx4xzooootJJekJktkkktozzzzzzzzz4sKNNNOKQ%m?{{r!<<<<<<<<<<<<<<<<<<<<><;;>;<*****!|}}{1> : CKG3jjfffffffffMMMMMMg2j3GfMMQJoJaaaggQ
jf2MEQQQEawt4@@4xxxxxoooooootottkkozzx4zzoxz4ox4XONOOOGghI7r}}LL|!!!!!!||!!||!**<<<<><*******!!!|}}}r <PNGjjjjjfffffMMMM2MgMjGjj3MPakellaggQ
ffM2EaasJo4444oxozzooozoozottkJJJJkkktotzzx4444xk3O5OO5KMEV(cYrL{}}}}||}|!!!!*<*<<><<*********!||}|!} :/KG3jjfffjM2222gggfK5OK3jMMPQa$gQEg
jgQasekx4@@@@@@@zx44xzoktootJJJJJeJJJktoo@@44xzz4G3K55NGG3GjjGGlYr{{|!!**<>;;;<;;><<<>!**|!*!!!**!!<< ==<Q3jjfMggggMMgg35NNNOK2M3fg2GGjQ$
VJt@hhhhhh@@@@@hxx44xxotoJJeJJJJeJeJzx44x@@x4ozozKGK55OOOONOXDdDdG]{{!|!<<<>;;;><***!!!||}}|!!|!!|!!*= =::;Qg$$$Pgggg2f5ONNOOKgEPa$23G3Q$
CUhhhhhhh@@@@@h4zzzzzkkJJJeeJJJJtoo4x4xxz4xxzzkeVQ5OXOOONNXXXDXdddbXM\\r}!!*<*<!!!!!!!!}}}}}}||!!!!*< : :: =iktkeVV$$KO5NNONOjQ$$Qjfjj2Q
HhhhhhhhU@@@@@4xzxxttJeeeeJekktxxzzxxxzozzzzotwlq!bXXXXNNNNXOK5ONNNXXNj\L{L!!**!!!!!!}{}}}}}}||!!!*;; : = H@@@@C4w235KKjgEaaPEMMg$VJ
i[[[CCCCUU@h@@xzzztkekeeeJJtoooxxx4xxxozzzz4ot7; =@XXXXXXDXNOKGMfGM3ffM$J/L}{|!||!|!!}{{{}}}}}}!!<<>: =hh4hUVgQf3QQa@%ympkksk4C
Hi][CCCCh@@@@444xzzokkJJkkkokJJJeJtx4xxxoooCm;;; :>XXDDDDDXXNN3MfgE$ez4CyYr}!|!||||}}{{{{}L{}}!*<>>=: : : !x4zEGOK5OKQE@CzVQfjMls
)i[C@444xz44444@@xkV$$PEEPseJJkeeJooxxtokh} = pOXNNXXNNNNKK5j$Vtz)cTT{{}}}}}}}!}{L{{{L{}**<<>;= ::::: 43OXNN55fasJJlgfjMas
piChxzxxtotzoJseJes$QgfKK5fskkkekxxz4ssh>=;: : KNONNNXXKKGGKfM$l4%mFTL{{{{}{{{}rLLL{L{}}*<<>;;; ::==: }Y\\\T* :/?rrL<>=!IVEfgM2Q2fj2aV
(tssekoztotzVlaaawJVeQMKO5jatkkkktxksJ{ ; 33OOOO55NNOK5jfQQlhHymvn/rr{LL{r?1TTr{L{|*<*<>==: :====:= :?{TFF\\1{; 1/???TTT}}|!!|}{1u%Q5jfMM
CPEQEVwkto@htesVJJott$fO55Mstkea$$jC}< T>: lQ3jGj3GKK5O5OK3j2zz@C[qyvFrTr11\?TrTL{}|**<><=: ====;= 1?//!c%\/rL! <T?1??Trrr{}}}}|*|*!!r?/kf
H4tssVVJsaQQfGGjMGG5jGGO5fPa$2jNNU; <T; fQQQf2EfjKGKO5KGGjPPtx[]qmcmqiHY71TTr{}|!**<<;;;:===;==;= c< TL}}= TTrrrrrrrr{{{{}{{{}}|*!|!*|
%#HCh4z4oV255K3KGKNNKg$s$lfGDGVm ?T! = jjggfQEggGGG3ffg$atx]%q)Ivcqp4$P$Y\1{{{}!!!!!<<==;<<*<; T<<: ;1Lrr{{}{LrL{{}{{}{L{L{L}|!
p)%)pq#HiUVgfjktw$j3PJUim\1\/L :* }! XjMQQMMM2M3OO53fEwehCH(iiH%4kfGKMJ)7TrL{}}{}}|<;;><}{}< *;< >|rrrLLTT1TTrrrLLLLrLr{}!||
HiHqyyp(UVfO5jletkeI1{{r1?? r; =: dO5jj22gfONDXNKG3MMMswt4CzxV$3NOfJU[I\r{LLrrr{!;;<*!}} ={>!}}{LrL{|}}{{TT1}{LrLrL{||}
sgjMfjjG5XNfkcTL}!|!!}/7 *r1<: dbNNONGfMfKXXNKj2EaltoC@C4z2KXbdOjozxez/T?\\?T}<;><!|{} *!}|{}{L{LT1111?11?}rL{{}}!!
VQfM3f)\L<<*|||||!!|r/ L: $ddDdddDXXNNXNXjfEJzChi[oVQdZARRNj5DbAAS&suF1\T{!!|!!>> < | 1}|{LT1/\?\??TTTT1|LTrL{|}
MOamcYun/==<{!|||}!}1 r ;\ !FCNDDdbbbbbdddDdOf2ex4kV$3dASAAAZdbSASSAAAASZbyycYmnm; q1 r?1\7/TTL =LT1\/\??TTrT??\\7|LL}}}
Jvvmu\\cc; {TrLLL{}/ ;!}u ;T7 17MDXZbDDbbbbbbddNOfjGOdZAAASSSSRRAAASSSSSAASSARbAjzY{;/Y7;=> pY }//77/?}}{} |nr7TT1???1\7FFFL?TrT
cccv1}{\c= }?1{LrTLF \qYYvn L}Ycv7mL{XdXXDbbRRRRRZbNONNbRAAAAAAAAAASSSAASRRWAANVozt5Gn7i;7<?uu=ymT *T\/7F\Tr{{{1! |u/7?/FFFFuc\/\?
cYuYu1}|v* }\11T?/T\ FT!{mq%q%my/ {umy?;\\1TnKddbAZRdZZZRdXdbbAAAAAAAAASA&RRSSp>*!!|}}ryI%pF1{>y*{Fn I\!|}T1777//Tr}TT\/?; /YYcYuYu7Y
7/\\Fu11y< !1\?\uuTY qu\?7mvIycncm <Fy} Yuu rvuF7c2XXbZdZZZbbZRRAAAAAAZRSAC<T77I0WWWWSSSWAR}L7nIL Fp/c{}{{T\7uFu/TrT\//777Ymc1{ ruYYu/
Y?11/u?Tm> !1\\/Y/?\; :Ip\1/nmvpmcFmY; cm1 YYu>)SRSbHLY7VdbZZbbbZRRAAAAAZ(Y}Rg\1bASWSSSSASWS&17Fucmr !cIrr1L{r\/uu\\TTT\///7FcccT}/uFYYF} <unm
Fu{|\?\rc; !T1?FmYu7/ *\uc)nrLFnnvmc7FYYT I<< \uuYF>SRRbRZbbYTr7mPRZZbRAAAr1<NWPYnjWAASAZZRAAARAA?7T?un{ <\nT7T<!T1\\//?1TT1r7/77YYv7{T/uu7\//u\T
LF} {\?rc> |???uImn?*}= \7uIp\}TuFFmyYFF/n\|{c cFFYY;5RRRRRRbZZZImu\uF/yTrXRSANFnO&SAAARRRRAAAA&Rp77TTuF{ \y7u/*;{T\/7F\1TT?\1\\/FnccYT*7F///\\?TT1Fc
|{* *\??Y{ *1?\YIIY* =: \FFpmTLFuFYcvm?1YyYc>* /n7FF7}4RRRARAAAbZAW{;>;\/7\aAAcYeS&AAARZbdbRRASSW&\FF7FyY= uvunT }T\\7/\?TrT1/\?7/7FuYcu>?//71?//1T\Fc
{/| T1?u} ;??\YynL !{} !7cqur1YuYYYvc1r7mcu{ YYuF77\|ZWSSSA0sT>|:V6Ag7Fqv/?77Fa&WSARRRRASSSSASA6/uFFuu7 }cv1|>rFuF/7/\/TT\\?7777YYYYu/ \7F//F//T?uF
<// }T?FL<=T11uI? |T/F\= YmI\{rFYuucvmTr/cv| 1u7FuFuu??=Ipij&WbRdZZbSZRSU\/?)fXv71}1hbWSWSSSSAAAjFuuFuv1 <{%F{L}?7F7uuF/\11\?/7FuYncnncu}1//77FF\?\uc
}!L1 r?Yr}<rT1cmL T\F77uYmqm\}r7YYuYImTr7Yv= Y/7F} !1>wRAASASSARRRRZbbOv#&W5(cvc$bW0a\|r{/kD9&&&mYnYYyc\ vYI\r{L/uu///7//TTr?/FFcYcccnYmF /1?7F\\1\uF
{}*T L1u{{>}r?Yu {T/FuFuFmyn\Tr/uYuFmmrLFnc c77u !|> TZSASASS&RZAGQUIeW0SSSSWWlycI)OWASSb&90dE1|!}rF)Y Yyn1T}1/777FF7/7/TT??F7uu7YuYYcu1<T177?TT?un
|r{!T r\r{;!L?Y\ <L\/uuYcccyc\1T/uYYunvL}Fcn <<FF?H H> </\1FFIUoaASAAAARASSWSWSSWASWO[yyx5AW&SSf:<;;=FF F{u/r}{/F7/7uF//\/11?\\/77uYFuuF7u;r////\?7uu
<!}!*= ;TL|<<{/u> >TT/uuuYnmyyY7TT/FuccImr}\Yn <1uF1FuYuu?=M0SSAAAAAAARRAAAASWSSSSSSSSSSSASSSA0SDJpq/71!Yc1 I!Y?}{17uYFFuu//\?11?\?Y?///FFFFFT7 FFF71\/Y7
{*={;{ r{{;|!FT {T/unuYnccvyu711?Funncc/}r/n:!}FY7uu//FF FFbAAAAAAAAAbRRRRWWSSSSSSSSSSSWWSWWW96<LFF/FFpu:?cr?L|T\\7u7//77/\\/?T1\//?T7FF\\7/?\ FF7T1//\
<*> ! =!!:=}F} *r?7unnncmyycuF\T1/FYcymurL?F!T=77F/?\/77} nn7USAARbbDXXXdRASS&&WSSSSSWWWWWWSt;|T;YYYFYm{ vF1T{r?/7uuu777//\////?\\\?\1/\?//7T\? /?1T\/\
:!{< * !; r\|!}1FunnYYccvvvuu\\7//mmIvcTL17|1 FF7?1\777/:S&&YFuyXRXDDDDbASWW&&&WSSSSSWSWWH<<!@W6FnnYm/=>mr1TrT?\FuFFF777F7/\\\\\1/1?/?11\?1r|r; r{1T{}
L* >: ?\}}?FFunnYYvvmmvmuF7/\/7FmmcTL?\!F Tr{L//777\>aSSSSWC\YnjRbbZAWWWWWWSWSWSSS0c<!HUS&06uunnI\ Lc TTrT1/uFFF7\/77/\111111111\Lrr11?1{{T} <{L|*
> |*{* m\}r/cmcYYcvvvvvmmYYF7////ccc?TT7|F 1uu?//FF77>[SWWWWAAWa/}}?IDAS0SSSSSWASX|yWyuA0&WWRuuFFI1 \n=?1rL1\7FFu7\\\\\//?111111TTTrrrLT1T}}T> =
=> <>* c\T/nmmmmcvmvvmvmmnmnuuFFYncc/rr?{Y *\1T//F/\/!ySSSSWSSSbd0Hcyuu1iD09Dx>{d&ZVm#0&&WWSKuFu7cr Fc;71LT\\FF7F/\\\\?\\111?Tr1Trr1?LLrTTL{}L
= cY7mcvmccmmmmmmmvmcYY/1rrrLrF\Tr1Fm =F7\77/\?u}\A&&A&NbeI}{TLLT:>>}\i;>4R6GycS&&&WWWSquu7u7: mp{/r}T??/77/?/\/F/?/111111TT1??111T17?{|rL
!< cccycYF/?\\/\1YmyqIIqcnnyvm1<Y{|L?c< /YuuFun71!< 1YFq)%QOR&SRAASSWR&MHYF/7Ycmmv@fW0WRTu/uI/ Iq\Fr{1\\uYY/rTuYu?F7\///1?11T\11?\??//?T{r1
<* u\1\YuuuFFuuF77/\mmcyYumIIy\*nF{17nT /unnYw LAWWWWSSSSSSSSAASSWWWAAs#YDj(FFFncnumvIcuqy/ rqcm?TT1\7nYF?L\yyF\7\\\\/\/\\\\111?\\/7??/?TL <
python tplayer.py GourdBrothers.mp4
====:====;::{11\\////F//uF7?\/777FuFr<***><>;!*;<****!*!<*}LTr*>;<{rT{!|!!*}LT11rL{}*}}|!*Lr\F/?TL}|!r1rTrr11?r}*!!!!!L?T{{!!!!*!!<|rrr{LL|>}T1?T|!*<><**<!{11r1TTL}{!<>1\
:**======;= }?\\\7//7/7//T!*T\//F1}<><*!<*>>><<!}|<*!*;|?7\rrr!{{TTL*<!*!}rrTrrT{{}}}}|*T77uuFrTT}{T??TTTrr}|}}!!}!|r\?Tr{}!!*|}<*{??L|{}|}!{1T1T*><<<!!<{1/Y/rTTT1r}}*}?11
= :=;=:=;=;;;><>:T\\??r<;;=:?1r|<<**<***!<<<<>{T}!*<*}/uuuuY\1TrrL***<!}rrrrTL{{{|}|}}{T\T77FuY/11\7\1\T}!!|}{}||rTLrLrLrrL{!!?1{T111L}LL}|!*{r{!!!*>>**{/YYuTL1r1T}|}}?T1T1
:: !>;;>>>>>>;T/T|<>;;>>;;=;*|*!*|!***<<<{||!*!|}r\FuYYY/?1???T>><{L1Tr|{{}}}}}{{{{}|}/uuuuYYuYu\1?\1{}}}{{{1\1L{rrrTrrrrT1?\11TrL{r{{|*!}L}|!*<<<*<!TFuYYYnu\TL}{}\1T11\/
:<}*;;<**><<<**<<<<!!>;;;;<****!***!!**<!**!|}{}{r?FuYYu?1?11?1L1Tr{}}}||}|L{{{{{}}}uu7FuunYYcc7?1!||!{{{rT1{{TTrTTTT1T/\\\\/1Tr{}{{|}Lr}**{|*!}|!*}T1Fncmyu?r{}rT1????\7\
==<><*******>!}!*}}*;*}};><*<*<>**|}}<!!!!}{{LrLr7\FunccccYYYu?1r}}}||||{}}}}!!}}}1uFuFFcYcmY\11TT{rT11\1TL{{Lr111TT1?\?\?1TrTrLL{}}TT}*!!!!!!!!|}{?/uYYnvY1TTrr1r11?\\\\?
=>*|*!*|<<!!|}!<}{*>|}!;=;><<<***|}!!}}||}}{rrr1F7FuFuncnYyY\T}{}|!|{L}}}|||r{{T1TL{TYnYunccY\//FFFuYu/TL{L{LT1?11\\???/uu/?TT1?r{{{|<!TT!!||!|!!|}TuuuYccY1rTT11\F7\/\/?\\
=*|}}|}|!*<}{{{{|}}}!<>;=;><<!T| L{L}LrrT7FuuYYu7uY/T|{{{|{1??{}}||}r! 1TTLumuYYYuncYuuuYF1rL{LLrLrTT1\\\?T1runnnu\\?\r{{}}}|rT|}}}!|!!|||7nuuYcccu\T7uYncYcY?111Tr
;!}}|||!!}L{}!*}{*>>>>;==>>; >{|}!! *{LrrL1uFuF/?{!{{rLLrr{r?1r!{}{r1r1 }* rr\ncuYnncu\171r{{{rL1TTr1T11\111TTTT\\/uF7\?\}{{{}}!!||}!!*!!{}}FuYYYv! (mnccncn\T11\\/
=<|}}}|}}}!***<>>;>* <*< : >* *}|> ;L{{{{{r?r{|}{Lrrr?! rrLTTTrTT11\Y;|: F??T\YYFT1TTTr{L{{rr11rr1?TrT?1T?111/uF7uYu\\T{}{{}}LTL!||!!!r1T{} *mYmI1 {|: cmccnYYY7Ync/\
:<}}{||}}!**<<<;>;;< =: := *}r= :;: {{{{}{L{{{LLrrTTrrr11 : TuF7??/\\Y 7/?111TTTTLrrrrTrrr11TT1TrT/uu7?1\7umvvvvc\\1{}!}}}{?}}}|!{LT/F: =Fncmv =*<< HncYYYnYYu1T1
=<}}|!*!*!*!!>;;;::< !!<>= { :}}||}||{{rrTTTrrrrrT1T1n! * */??1ru=} H?1?1Tr1?1rTTrTrrT?\1rT11TTY1 = (cymvvmuF/L}T11111{{}!}\ ;*|<= r/nqF >; =mcYYYYYYnF\T?1
>!!|*}}|*<>;<>:=}*>>! }; }*{r= =T}!!!{{rrrrrTrLLTTTTrrTuYc)?;| |/?F1qm! /T1TT11T1?TTT111T?1Y{<; }||*> [vvyvmcnrrT/F71r{}{}}rT17 }{<> r/Yc = c%uuYuuYF/rr1?11?1?
>!|!}!*>>>>;=<}|>>;=;{ T> =:: L{rLL{LrTrLLrrTTrL\? ci)pq%1<!: ;*!|*{{* ?T11T111TTTrrrrT/< :|Tr{< <|: )ymmmmmmccmvcY1TT}}}rT1?//F LFF <qIvcYnYcuF?L{{TTTTTrT1
=*!|!**<<><<<}!;>>>;!Tu< ><=><*> ={{{{r}rrLrrrTr|}7n% ;!*}{!<>=>;; \1T111TTTT111rrrTu : m:! ncmvvvmmmmcccccn\r{LL{11111T11LT\7 ; }TvL |\|Lr}}}{rrrTTTT11
:>*!!***<*<<**<<<<!?\< ;>= !!<<>;;;=< >rL{LL{{{LrTr{}|**/T1cq }p#))#)%IcYF//?1T11TrrTTTT\Y F?T1YI)Y !> vqcvmmmmmmnncn1rLr1T1?1TrTTT?T1 :: :><<!; L|L{{rrrTTrrT??Tr
;*****!*!*****<<*!r ;*>=:: : !T{{{{{{{rr{}||!!<*T7F/7FFuu/q; =; /rrT1rTT111TTTTrT1T} ;}= r;>L|<*r!< yycncnmY!{L{}}T??1T?T111?F |{< ! *| :L}}{LrrTTrrTTrr1/LT7
=*||||||!!!*}!!{L1c! =uFF7Fu\} :Trr{{}|!!*}Lr?7FF7F7uur \7> }rT1TTTTTTTTr1\11nr *{T;;*||*!> pnnnnFr|}}}L1/F\TuYu1\/\?{ FF{T= ;|; }{{{Lr1T1T11rT1?TT1\
>}{{|||}|}*1< =: TT! > *T?1/\//\F! !}!* {{}|}|}rrr{L\?L|T??\1\7TT1/r |T* !rrTTrr\?\?T111rr1? ;{* FuFYur}!}}{!}1/FuuYYYn\//?1?7\\1uF< =}!}* *{r/u? =?rr1T\
:<}LL}}}||!!T* {}; }}1} L\\//\\7Y:;>=!>= {}LrLLrTr}|}{*LTr{!|{TT! ;<*}}< L{{{rLLT11TrTTTTr{LL{/= *{*> rLL{}{L{}}||!?7FuYnnnu\\1TrT?L ? =<!|>;!|; =><<*!!: ?T{\c
=>}Lr||}}}}|!}{7> >*= ; /?uuFFu7} ;! *}|; {\1TrT{}{rrrL} *L**= <{< |/||}{}11T1rTrTrLrrL}}{1 ;TL!| }{{{}}{}LL}}\FFFFnncu11?1T1\Y > c!=/\m <*|; >*= TLrum
;|{rL||{{{}}|!!{!n <**: :}{1 !<<<= *|! <**= =F\Trr{LrTr}}\= <> |77 : \{ ;{!}L}LrTTTrrrLLL{|}/u=!|>:<! T{{}}}rL||\FuuuuYu71rr\?11c/< Tr1/; >** \\?Lrr}Lr1< !< <Lr\Yc
<!{{}{LL{}!!}L: <=<*= !*{T=T|>;> |<*7*<!!; 1{rrT1T1T||}|||?F <{/= ; ={; L{rrrTTTTrTTL}}L7*:*}= 1} ?{{}}rL}|}T7u7u\1TTrrTYYF1T={ * >; ;*! T{{{L{{/=!|= 1Lr/Yn
>*}}{!|{{}!{> <!= \ = >*!!!!*{ ;< = <>**!*= *LrrT1TT!|!|!!}| !L< :<{L}!= 1LrrTT\TTTTTL}r{?L !}< |<rL; T}}}{r}|L{1c{r>LT1rL?uYu?F=!}<;<> m !!* TLL{rr1\:}|> <Tr}1nn
>*|}|*}{{!!}> {{Tr{T <{|!<<>{ <**=!**<<}|*< \rT1L!!!!!!}|}Y<r}= <!> }TL{{rrrrrT1?T1TTLLL1/= *L* 7{;T{ /}{T11r}TT?u>> 1rrr7u7?r\ <! LL\/; ;<= ?| {??| !T}* ;TL}TFYY
>*|||!}}{!|{}!|!!}r?= ;;; <* <! ;!= >**>: <T1L|||||{rTLTY{|{> 1rrr{}}}LTrLrLrT????TLLL{7u LLL! L1}=}}> 1L111TrrL1?F {rTLr{L1{ {11* =<: !?{ =*!L}>: Tr}!7uuY
=<!||!{rr{!*!!!!{\> <|}|> |= ;L;*!; Y LF <||<: :\rL!<*rLLT1TTc!*}< L|}}{}{Lr{{{{L\/11TrrrTr/* ;1r!! L|r! =;=! 7\1rTT\F7<=rL!<= 1LL{{L}rTT{/? *? / <|! ;{|/!*}{|= ;}||*{F7uY
>!}L{}T =!*!!}1 <*;<}; = r:!!! Y} ;}|>= \}LT1T{}TTTTL?;!}: r|}{rLL{{{{{{TT1TTTrLrTT7: >>*< {}T7 <{<<< <*|||}}L r{}rL{L{T7} = rT\= >*> L|r?; }}!!{}1uF\1
{rL|!!r |}{: <= T *<;= *r;*** =; !}!! TT?T{L{{LLLrr?:r! !{}L{{{}}{{Lr{7/\TTrrTT{LTu! <{{}?7c; ;}T{!|!!}{{L{!|}|| {}TTTrLrL *{* {TLr r}}}; /\??\{{r{{{rr{|}T{}T
{{*!**|= ;!}!>= {{ ;}< }|*;!* |<!r= *{|}: rTr}}}{}{\rr1!:T; L}{{{{}||}{LrrTTTTTrL{{T1TTr\; r{LrTTrLT7 ;>*;=;;>;< :{{{LrLLrTr/Y! 1Lr?< :{!! uF\1TL{{LLr{|!|}}}rT
<>*****}| !}!*= }*}< ;**L:!||; < r\< *}!}: |!!!!!!\7/TT{ *; ={}}}}|!!||{{{{rTT1rL{T1?Trrr{}{{TT{}r?rrTTLLL11\\T17r1\1TL{}}{LLLLL}{r1 {rTLr\= |L}!| u11rL}{}Lr!}}}}}}LL
=;**<<<<*{! =<****; !*!*!!<*r*}L* >1 r{=}{}!; }!}r/\\//7r1 * <}}}}}}}|}}|||T/\/7TrrT//\r{{L}{{L}{{TTLTLTL{{}}}}r/\{{{rTrr{{{{L{||{{TLrTL{L{{L\ }}L{!; 1rT{}}}{L{**{!!|}|{
=;*<<<<<<*!L: =<**!< ***<<<<{>** L= ;=:;!{|!; >}??\?\//r=!rL T||}}}}}}{|}|}\////71r1/7/\1{{{{L{}{{rrrTr1TL{}||}}FFL{{}{{{{Lr{{{{r{{Lrrr{{L{L{{17>{{}!: 1r{|}|}{{!<!!***}}L
:;<<<<<<*<<**}{* ;<;<<><<{=!*>*} <|||{|!= |?1?\\r}!|}}||}|}}}{}||}{r}|?/\\//?Tr?\/7r{{{{TL{{}{1///7TLL{}}}}?7/\{{{L{{{{{LrL{rLrL{}{{{{LL{|}LT/{ ;{}}||LLL}*!!!!!|??\
=;*<>=<<<<|{!**!|*{} <>;;>>;;!|**<<<<}! *!|}< >T1L}|}{!||||!*}}}{{}|!!|**!?\\\1TLL}L\1r{}}}{}LLLLrr?////1L{{{}|}?7/\{{{{}{Tr{L}}r{Lr{}}}}}{}{{}}}}}|L{{L}!}}}{}}!!}!**T??1?
==>>><><}}{}<<*!***<>><<*<;;<*<<<<*<*!!{* <T11{|||}||!!!*!|LL}!*<><;;;rTL{L|!!|}}}}}}}}{LTT1T11?1//\TL{}}}!}?///r|{}}{r{}}{{LL{{}|}}}Tr{}{|!!}{{}}}}}<!}}}|*!!!!**r?1111
=;*}{LLLL}<<**!!!*<<<<<===;><**!*<*!***<<**}rT111T}*!|!!****!|rL}!!*>;>*!!*!***!|}||LL{}}}}LTT1TT111?\\1}||||!{?7\L}}{{|}L{}{{*|{}|}}|}T1||r}!!}}L{Lr}|!!*!|!!****}LTT1\\1r}
>!|{LL}!<=><!!*<<*<;;;;;;=;<*<<*******<<!TTT1??T!******!!!*!|*****;;**!*<****!!!<!r\?}!||{LrrrrTrTTT{|!!!!||?\?T{!!{rL}Lr}!||!}}}!}r1TT11?}|!!|{{{r1r!!*{1{**<**T1TT1TT?11{|
!!}{|<;;;<*!**<<>;<<<<>;;;;><<*<<<***<>{rr1TT1{*<**!*!**<><*<*!*<:<!*******{{!!*{1?\T!!|}{LrrrrrT1TL!!!!}T11?TT|*|T11r1TT|!|!*!!!r11?1111!*}{}}}TT}r{|{Trr|***<}TLrT11T1L*!}
!!}!;=;;<*<><;;;>;><>;;;;>><<<*<<<>><!rrrTTTT{<**!**!<>>;>!!|*<==**><*<*rTT1L|{?T1TT{|!!|}{rLrrTT1L|!!}T111?T}*<|{r11TTTL!*!|!*!TT1??11{**}TrLr1{>}rr*|LTr|!<><}TTTTTTTTL!|!
!!!<*;=;=;=;;==;>=;;;>;;=;>><<;*|<>!{rTTrTTTT*<****<*<>;;*!*<;=:;|><<<!rT1rrr11TT1r||!!!|{rL}{rLLr1L!}1T111Tr}}|{TrrTTTL**!**<<}rrrT1T!***{LrrL**><|>>*LL{}**;*LTrTTTrrLLL{{
**||>====;=;;;;;;<*>;;;;;;>>><{LLL{LLrrrTrL{|***>><<><<<***<<<*<*<;>*<|rrTTT1T11}**<!!!!!}|<!r{}}*LL*{rT11?TTL!*|!!TTL********<|rrr1L***<*|L{}!<>>;;>><*!<>;>}LTrLrrrrrrrLL{
**|;:: ;||*=;**!!||*=====><*{rLLrLLLrrrrrLL{{LL*<>>;><><<*<<;><<*!>><<!rrTTTrTr!****!|*******><<**!!<LrT1T1Tr|****<**!*!*******<{rrTL*<<*=<>>>;<!{}}L}>><!{LL{rTTTrrrrrLLL<>
><|;;<!}}}}}|}}{}}!;===!TL{{{LLLLLLLLLLL{LL{{{}}><><<*<>>*<<<<<<<**>><{TrrrTrT}<{LrrT1!*<****<**<><<<rrTr1TTr|***<><***<><**|*<}rTTrT|<>>!{{rrLTrrrTTrL{LLLrLLrrr{LLrLrLL}>!
<<}}}}}}}}}}}}}{{|=;;;|{{{{{{LLLL{LLL{LL{{{{{{rr>><**<>>><<<**<*<<!|{}{LLLrrrrrrLLLL{|<<<<<*}|*!!;;<{{LrrrTr!<<**<<<<><;>****>>{Trrrr{}}{{r{LTrrrrrrrrrL{rLLLrrTLLLLLLLL{}L1
<<!!!||}|}|}}}}}{==:<|}}}}{{{{LLL{{{{{{{{{{{{}}!;;;>>><<>>*}rL|!}LL{LLLrrrrrLLL{LrrL{}**|{{rrr{{{L{LLTLrrrL*<<>>>>;>*<<<<<*<;;}{{rrLrr{{LLTrrrrTTrrLLLL{{L{LLL{LL{{{LL{{{{LT
<**!!!!||||!}}}};::<}}}}}}}}{{{{{{}}{{}{}}}{{}};;;>>|{{}}}{r{{{}{LLLL{{LLLLL{{T{{{{Lrrrrrrr{LLLL{{LrLrLLLL!;>>;;>>>>>><<<><>|{LLLLLLLLrrrLLLLrLLLLLLLL{{{{{L{{{L{{{{{{{L{{LT
;<*!!!!|||!|||}|;:<}}|}}}}}}{{}{}}}}}}}}}}}}}}!=;<|{{}{}{{{{{{{{{LrLLLLLT{LL{{{{{rL{{{rLLrLrLL{{rL{{r{{{{L{**!!!;;;>>>><<<!}L{{LrLLL{{{LLLLLLLLLL{{{LL{{{{{{{{{{{{}}{{{LL{}r
;;*!!!!||!!!!!!|!|||}}}}}}{}}}}}}}}}}}}}}}}{}{{}}{{{{{}{{{{{{{{{{{{{{L{Lrr{{{{L{{LLrLLL{LL{LL{{{{{{{L{L{{{{}}}}<>;;>;;;*}}{{{{{{{LL{{{{L{{{{{{LL{{{{{{{{{{}}}{{}}}}}}}}}{{}r
;>*!!!!!!!!!!!!!!||!|}}}}}||}|}||}}}}}}}}}}}}}}}}}}}}}{{{{{L{{{{{{}{{{{LL{{{L{{{{{{L{{{{{{{{{{L{{{{{{{L{{{{}}}!==;>=;;|}}}}{{{{{{}}{{{{{{{{{{{{{{{{{}}}}}}}}}}}}}}}}}}}{{{{r
=;<***!!!!!*!!!!!!!*||!!}}||}}||||}}}}}}}}}}}}}}}}}}{{}{{{}{{{{{{{}{{{{{{{{{{L{{{L{{{{{{{{{{{{{{{{{{{{{{{{{}}}}**;;=;|{{{{{{{{{r{{{{{{{{{{{}}}}{}{}{}}}}}}}}}}}}}}}}}}}}}L{r
;;><*!!******!!!!!!!!!!!!!!|||}!|!|||}}}}||}}}}}}}}}}{}|}}}}}}}}}{{{}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}{{{{{{{}}}}}{!>=<}}}{{{{{{{{}}{{{{{LLLL{{{{{{{{{{{{{}|||}}}}}}}}}}}}}|}{L
原理分析 :
1. 首先对所有可打印的ASCII字符进行取模
2. 根据占据的像素以及整个字符占用的空间计算出像素占比
3. 排序得到图像灰度和ASCII的映射关系
4. 对单个图像来说 , 首先将图像转为灰度图 , 然后对图像大小进行调整 , 然后逐个字符进行映射即可
5. 对视频来说 , 首先将视频逐帧分解 , 得到每一帧的图像 , 利用处理单个图像的方法进行处理 , 最后根据帧率进行播放即可
6. 播放视频的时候需要在帧与帧的间隔对屏幕进行清空处理