2007年02月07日 星期三 19:40
The following code is my test program for control mplayer.
in movies/ there are about 20 movies, the code plays them in circle,
but mplayer will crash silently after a circle, the "sliently" means I
can handle popen2 without except, but no movie.
I have no idea about it...
Can you help me?
class SimplePlayer( myobject ):
def __init__(self):
self.debug('simple player init ready')
self.is_open = False
self.wfd = None
self.rfd = None
def play(self, file):
if self.is_open:
self.wfd.write('loadfile %s\n' %(file))
self.wfd.flush()
else:
self.wfd, self.rfd = os.popen2('mplayer -loop 0 -slave
-quiet -ao null %s 2> /dev/null' %(file))
self.is_open = True
##################
if __name__ == '__main__':
player = SimplePlayer()
all = os.listdir('movies/')
print all
while True:
for current in all:
print current
player.play('movies/' + current)
time.sleep(3)
--
LinuX Power
2007年02月08日 星期四 09:03
Marco 写道:
> The following code is my test program for control mplayer.
> in movies/ there are about 20 movies, the code plays them in circle,
> but mplayer will crash silently after a circle, the "sliently" means I
> can handle popen2 without except, but no movie.
>
> I have no idea about it...
> Can you help me?
>
> class SimplePlayer( myobject ):
> def __init__(self):
> self.debug('simple player init ready')
> self.is_open = False
> self.wfd = None
> self.rfd = None
>
> def play(self, file):
> if self.is_open:
> self.wfd.write('loadfile %s\n' %(file))
> self.wfd.flush()
> else:
> self.wfd, self.rfd = os.popen2('mplayer -loop 0 -slave
> -quiet -ao null %s 2> /dev/null' %(file))
> self.is_open = True
>
>
> ##################
> if __name__ == '__main__':
> player = SimplePlayer()
> all = os.listdir('movies/')
> print all
> while True:
> for current in all:
> print current
> player.play('movies/' + current)
> time.sleep(3)
>
没看懂,既然是循环播放为什么不等待os.popen2开启的子进程退出后再播放下一
个呢?上面在播放的过程中向stdin写入“loadfile %s\n' %(file)”是什么作用?
没用过popen2,想请教一下它返回的stdin有什么意义?thanku
Zeuux © 2025
京ICP备05028076号