work with clip node, not with global variable
This commit is contained in:
parent
fda9bad3c3
commit
74edbf628d
@ -27,7 +27,7 @@ from watchdog.events import PatternMatchingEventHandler
|
||||
from watchdog.observers import Observer
|
||||
|
||||
from .filters.default import build_filtergraph
|
||||
from .utils import MediaProbe, _current, _ff, _storage, messenger, stdin_args
|
||||
from .utils import MediaProbe, _ff, _storage, messenger, stdin_args
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# folder watcher
|
||||
@ -87,6 +87,7 @@ class MediaWatcher:
|
||||
def __init__(self, media):
|
||||
self._media = media
|
||||
self.extensions = [f'*{ext}' for ext in _storage.extensions]
|
||||
self.current_clip = None
|
||||
|
||||
self.event_handler = PatternMatchingEventHandler(
|
||||
patterns=self.extensions)
|
||||
@ -118,7 +119,7 @@ class MediaWatcher:
|
||||
messenger.info(
|
||||
f'Move file from "{event.src_path}" to "{event.dest_path}"')
|
||||
|
||||
if _current.clip == event.src_path:
|
||||
if self.current_clip == event.src_path:
|
||||
_ff.decoder.terminate()
|
||||
|
||||
def on_deleted(self, event):
|
||||
@ -126,7 +127,7 @@ class MediaWatcher:
|
||||
|
||||
messenger.info(f'Remove file from media list: "{event.src_path}"')
|
||||
|
||||
if _current.clip == event.src_path:
|
||||
if self.current_clip == event.src_path:
|
||||
_ff.decoder.terminate()
|
||||
|
||||
def stop(self):
|
||||
@ -189,7 +190,8 @@ class GetSourceFromFolder:
|
||||
self.node, self.node_last, self.node_next, duration,
|
||||
0.0, duration, self.probe)
|
||||
|
||||
yield ['-i', self._media.store[self.index]] + filtergraph
|
||||
yield ['-i', self._media.store[self.index]] + filtergraph, \
|
||||
self.node
|
||||
self.index += 1
|
||||
self.node_last = deepcopy(self.node)
|
||||
else:
|
||||
|
@ -4,7 +4,7 @@ from threading import Thread
|
||||
|
||||
from ffplayout.folder import GetSourceFromFolder, MediaStore, MediaWatcher
|
||||
from ffplayout.playlist import GetSourceFromPlaylist
|
||||
from ffplayout.utils import (_current, _ff, _log, _playlist, _pre, _text,
|
||||
from ffplayout.utils import (_ff, _log, _playlist, _pre, _text,
|
||||
ffmpeg_stderr_reader, messenger, pre_audio_codec,
|
||||
stdin_args, terminate_processes)
|
||||
|
||||
@ -60,14 +60,11 @@ def output():
|
||||
get_source = GetSourceFromFolder(media)
|
||||
|
||||
try:
|
||||
for src_cmd in get_source.next():
|
||||
if src_cmd[0] == '-i':
|
||||
current_file = src_cmd[1]
|
||||
else:
|
||||
current_file = src_cmd[3]
|
||||
for src_cmd, node in get_source.next():
|
||||
if watcher is not None:
|
||||
watcher.current_clip = node.get('source')
|
||||
|
||||
_current.clip = current_file
|
||||
messenger.info(f'Play: {current_file}')
|
||||
messenger.info(f'Play: {node.get("source")}')
|
||||
|
||||
dec_cmd = ['ffmpeg', '-v', _log.ff_level.lower(),
|
||||
'-hide_banner', '-nostats'
|
||||
|
@ -6,7 +6,7 @@ from threading import Thread
|
||||
|
||||
from ffplayout.folder import GetSourceFromFolder, MediaStore, MediaWatcher
|
||||
from ffplayout.playlist import GetSourceFromPlaylist
|
||||
from ffplayout.utils import (_current, _ff, _log, _playlist, _playout,
|
||||
from ffplayout.utils import (_ff, _log, _playlist, _playout,
|
||||
ffmpeg_stderr_reader, get_date, messenger,
|
||||
stdin_args, terminate_processes)
|
||||
|
||||
@ -21,7 +21,7 @@ def clean_ts():
|
||||
playlists = [p for p in _playout.hls_output if 'm3u8' in p]
|
||||
|
||||
for playlist in playlists:
|
||||
messenger.debug('cleanup *.ts files from: "{}"'.format(playlist))
|
||||
messenger.debug(f'cleanup *.ts files from: "{playlist}"')
|
||||
test_num = 0
|
||||
hls_path = os.path.dirname(playlist)
|
||||
with open(playlist, 'r') as m3u8:
|
||||
@ -54,15 +54,12 @@ def output():
|
||||
get_source = GetSourceFromFolder(media)
|
||||
|
||||
try:
|
||||
for src_cmd in get_source.next():
|
||||
messenger.debug('src_cmd: "{}"'.format(src_cmd))
|
||||
if src_cmd[0] == '-i':
|
||||
current_file = src_cmd[1]
|
||||
else:
|
||||
current_file = src_cmd[3]
|
||||
for src_cmd, node in get_source.next():
|
||||
if watcher is not None:
|
||||
watcher.current_clip = node.get('source')
|
||||
|
||||
messenger.info(f'Play: {node.get("source")}')
|
||||
|
||||
_current.clip = current_file
|
||||
messenger.info('Play: "{}"'.format(current_file))
|
||||
cmd = [
|
||||
'ffmpeg', '-v', _log.ff_level.lower(), '-hide_banner',
|
||||
'-nostats'
|
||||
@ -72,6 +69,8 @@ def output():
|
||||
'-metadata', 'year={}'.format(year)
|
||||
] + _playout.ffmpeg_param + _playout.hls_output
|
||||
|
||||
messenger.debug(f'Encoder CMD: "{" ".join(cmd)}"')
|
||||
|
||||
_ff.encoder = Popen(cmd, stdin=PIPE, stderr=PIPE)
|
||||
|
||||
stderr_reader_thread = Thread(target=ffmpeg_stderr_reader,
|
||||
|
@ -4,7 +4,7 @@ from threading import Thread
|
||||
|
||||
from ffplayout.folder import GetSourceFromFolder, MediaStore, MediaWatcher
|
||||
from ffplayout.playlist import GetSourceFromPlaylist
|
||||
from ffplayout.utils import (_current, _ff, _log, _playlist, _playout, _pre,
|
||||
from ffplayout.utils import (_ff, _log, _playlist, _playout, _pre,
|
||||
_text, ffmpeg_stderr_reader, get_date, messenger,
|
||||
pre_audio_codec, stdin_args, terminate_processes)
|
||||
|
||||
@ -67,14 +67,11 @@ def output():
|
||||
get_source = GetSourceFromFolder(media)
|
||||
|
||||
try:
|
||||
for src_cmd in get_source.next():
|
||||
if src_cmd[0] == '-i':
|
||||
current_file = src_cmd[1]
|
||||
else:
|
||||
current_file = src_cmd[3]
|
||||
for src_cmd, node in get_source.next():
|
||||
if watcher is not None:
|
||||
watcher.current_clip = node.get('source')
|
||||
|
||||
_current.clip = current_file
|
||||
messenger.info(f'Play: {current_file}')
|
||||
messenger.info(f'Play: {node.get("source")}')
|
||||
|
||||
dec_cmd = ['ffmpeg', '-v', _log.ff_level.lower(),
|
||||
'-hide_banner', '-nostats'
|
||||
|
@ -73,6 +73,9 @@ class GetSourceFromPlaylist:
|
||||
self.seek, self.out, self.first, self.last
|
||||
)
|
||||
|
||||
self.node['in'] = self.seek
|
||||
self.node['out'] = self.out
|
||||
|
||||
def last_and_next_node(self, index):
|
||||
if index - 1 >= 0:
|
||||
self.node_last = self.clip_nodes['program'][index - 1]
|
||||
@ -197,4 +200,4 @@ class GetSourceFromPlaylist:
|
||||
self.eof_handling(True)
|
||||
|
||||
if self.src_cmd is not None:
|
||||
yield self.src_cmd + self.filtergraph
|
||||
yield self.src_cmd + self.filtergraph, self.node
|
||||
|
Loading…
x
Reference in New Issue
Block a user