release: 1.3.1

This commit is contained in:
acgnhik 2022-01-24 09:52:14 +08:00
parent e36dedce74
commit 2f65aa54ca
3 changed files with 17 additions and 19 deletions

View File

@ -1,5 +1,9 @@
# 更新日志 # 更新日志
## 1.3.1
- 修复没成功修复的录制异常 `IndexError: list index out of range`
## 1.3.0 ## 1.3.0
### 功能 ### 功能

View File

@ -1,4 +1,4 @@
__prog__ = 'blrec' __prog__ = 'blrec'
__version__ = '1.3.0' __version__ = '1.3.1'
__github__ = 'https://github.com/acgnhiki/blrec' __github__ = 'https://github.com/acgnhiki/blrec'

View File

@ -30,7 +30,7 @@ from .exceptions import (
CutStream, CutStream,
) )
from .common import ( from .common import (
is_audio_tag, is_metadata_tag, is_video_tag, parse_metadata, rpeek_tags, is_audio_tag, is_metadata_tag, is_video_tag, parse_metadata,
enrich_metadata, update_metadata, is_data_tag, read_tags_in_duration, enrich_metadata, update_metadata, is_data_tag, read_tags_in_duration,
is_sequence_header is_sequence_header
) )
@ -85,7 +85,6 @@ class StreamProcessor:
self._delta: int = 0 self._delta: int = 0
self._has_audio: bool = False self._has_audio: bool = False
self._metadata_tag: ScriptTag self._metadata_tag: ScriptTag
self._last_ts: int = 0
self._last_tags: List[FlvTag] = [] self._last_tags: List[FlvTag] = []
self._join_points: List[JoinPoint] = [] self._join_points: List[JoinPoint] = []
@ -199,6 +198,7 @@ class StreamProcessor:
def _reset(self) -> None: def _reset(self) -> None:
self._discard_file() self._discard_file()
self._last_tags = []
self._stream_count = 0 self._stream_count = 0
logger.debug('Reset stream processing') logger.debug('Reset stream processing')
@ -211,7 +211,7 @@ class StreamProcessor:
try: try:
first_data_tag = self._read_first_data_tag() first_data_tag = self._read_first_data_tag()
if self._stream_count == 1: if not self._last_tags:
self._process_initial_stream(flv_header, first_data_tag) self._process_initial_stream(flv_header, first_data_tag)
else: else:
self._process_subsequent_stream(first_data_tag) self._process_subsequent_stream(first_data_tag)
@ -235,7 +235,9 @@ class StreamProcessor:
except Exception: except Exception:
self._reset() self._reset()
raise raise
del first_data_tag else:
del flv_header, first_data_tag
self._transfer_tags_until_complete() self._transfer_tags_until_complete()
def _process_subsequent_stream(self, first_data_tag: FlvTag) -> None: def _process_subsequent_stream(self, first_data_tag: FlvTag) -> None:
@ -333,7 +335,6 @@ class StreamProcessor:
) )
logger.debug('Meta tags have been transfered') logger.debug('Meta tags have been transfered')
self._update_last_out_tags()
def _transfer_first_data_tag(self, tag: FlvTag) -> None: def _transfer_first_data_tag(self, tag: FlvTag) -> None:
logger.debug(f'Transfer the first data tag: {tag}') logger.debug(f'Transfer the first data tag: {tag}')
@ -392,9 +393,6 @@ class StreamProcessor:
finally: finally:
logger.debug(f'{count} tags have been transfered') logger.debug(f'{count} tags have been transfered')
if count > 0:
self._update_last_out_tags()
def _add_join_point( def _add_join_point(
self, offset: int, timestamp: int, seamless: bool self, offset: int, timestamp: int, seamless: bool
) -> None: ) -> None:
@ -402,11 +400,6 @@ class StreamProcessor:
self._join_points.append(join_point) self._join_points.append(join_point)
logger.debug(f'{repr(join_point)}; {join_point}') logger.debug(f'{repr(join_point)}; {join_point}')
def _update_last_out_tags(self) -> None:
self._last_tags = list(rpeek_tags(
self._out_file, self._out_reader, self._TAG_SEQUENCE_COUNT
))
def _find_last_duplicated_tag(self, tags: List[FlvTag]) -> int: def _find_last_duplicated_tag(self, tags: List[FlvTag]) -> int:
logger.debug('Finding duplicated tags...') logger.debug('Finding duplicated tags...')
@ -465,7 +458,6 @@ class StreamProcessor:
self._size_updates.on_next(size) self._size_updates.on_next(size)
def _write_tag(self, tag: FlvTag) -> None: def _write_tag(self, tag: FlvTag) -> None:
if self._analyse_data:
offset = self._out_file.tell() offset = self._out_file.tell()
tag = tag.evolve(offset=offset) tag = tag.evolve(offset=offset)
@ -474,8 +466,10 @@ class StreamProcessor:
except Exception as exc: except Exception as exc:
logger.debug(f'Failed to write data, due to: {repr(exc)}') logger.debug(f'Failed to write data, due to: {repr(exc)}')
raise raise
else:
self._last_ts = tag.timestamp self._last_tags.insert(0, tag)
if len(self._last_tags) > self._TAG_SEQUENCE_COUNT:
self._last_tags.pop()
self._stream_cutter.check_tag(tag) self._stream_cutter.check_tag(tag)
if not self._disable_limit: if not self._disable_limit: