0

mpylayerを使用した次の最小限の作業例を検討してください。

import mpylayer

mp = mpylayer.MPlayerControl()

files = ['/tmp/video1.mp4','/tmp/video2.mp4']
for i in range (0,2):
    mp.loadfile(files[i])

これはすべてを再生しvideo1.mp4 、その後これを開いvideo2.mp4て再生する必要があります。ただし、次の 2 つの問題があります。

  1. すべてを再生するわけではなくvideo1.mp41 秒間開いてから閉じます
  2. 閉じた後、再生が始まるまで数秒の遅延video2.mp4がありますvideo2.mp4

では、どうすれば両方の問題を解決できますか?

編集:

time.sleep(mp.length)私が使用しようとした最初の問題を修正するには

import mpylayer
import time

mp = mpylayer.MPlayerControl()

files = ['/tmp/video1.mp4','/tmp/video2.mp4']
for i in range (0,2):
    mp.loadfile(files[i])
    time.sleep(mp.length)

これは、ビデオを一時停止したり、前後にシークしたり、閉じたりしない場合に機能します。したがって、より良い解決策があるはずです。

4

4 に答える 4

1

mp.loadfile() は非同期であると推測しています。つまり、プログラムは停止せず、ビデオの再生が終了するのを待ってから実行を続行します。これは、2 番目のビデオが読み込まれる前に、最初のビデオが短時間開く理由を説明している可能性があります。

于 2012-05-31T18:57:44.627 に答える
0

mplayerの簡単なプレイリストメーカーであるmfindを使用できます

"locate" または "find" 出力からのすべてのファイル、またはフォルダー内のすべてのメディア ファイルを mplayer で再生します。「The KMPlayer」の「フォルダ内のすべてのファイルを再生する」フォームと「Everything」の高速検索に触発され、この機能をマージします。

于 2013-11-15T07:52:55.870 に答える
0

ダミーの入力行を追加してみませんか。Enter キーを押すまでプログラムは続行しません (私はしばらく Python をコーディングしていません)。

import mpylayer
import time

mp = mpylayer.MPlayerControl()

files = ['/tmp/video1.mp4','/tmp/video2.mp4']
for i in range (0,2):
    mp.loadfile(files[i])
    dummy = input() // When user presses any button, you continue
于 2013-07-05T08:23:24.970 に答える
0

これが賢い解決策かどうかはわかりませんが、少なくとも一見すると、両方の問題でうまくいくようです:

import mpylayer
import time

mp = mpylayer.MPlayerControl()

files = ['/tmp/video1.mp4','/tmp/video2.mp4']
for i in range (0,2):
    mp.loadfile(files[i])
    l = mp.length
    while(mp.time_pos < l -1):
        time.sleep(1)

編集:

import mpylayer
import time

mp = mpylayer.MPlayerControl()

files = ['/tmp/test1.mp4','/tmp/test2.mp4']


for i in range (0,len(files)):
    mp.loadfile(files[i])
    #mp.fullscreen=1
    while(mp.length == None):{} #Prevents that mp.length is None
    l = mp.length
    while(mp.time_pos != None and mp.time_pos < l):
        pos = mp.time_pos

ここでは遅延が小さくなっていますが、順方向にシークするときに問題が発生します。その後、ループが終了しますmp.time_posNone

誰かがそれをより良くするための提案を持っているなら、私に知らせてください.

于 2012-06-01T06:36:42.873 に答える