Skip to content
This repository was archived by the owner on Oct 12, 2025. It is now read-only.

flv 添加元数据过程中,存储空间不足,导致injecting.flv不完整 #315

Description

@antecanis8

没有元数据的flv应该是完整的,现在如何得到有元数据的视频?直接用ffmpeg处理可以吗

ffmpeg -i input.flv \
-c:v libx264 \          # 使用H.264编码器
-g 30 \                 # 每30帧一个关键帧(帧率30时等于每秒1个)
-keyint_min 30 \        # 关键帧最小间隔
-force_key_frames "expr:gte(n,n_forced*30)" \ # 强制间隔
-c:a copy \             # 保持原始音频
output.flv

日志

2025-06-21 02:26:02.259 | INFO | recorder:387 | 1***4 - The live has ended
2025-06-21 02:26:04.922 | WARNING | request_exception_handler:45 | 1***4 - ReadTimeoutError("HTTPSConnectionPool(host='d1--cn-gotcha07b.bilivideo.com', port=443): Read timed out.")
2025-06-21 02:26:05.038 | INFO | stream_url_resolver:94 | 1***4 - Getting the live stream url... qn: 10000, format: flv, api platform: web, use alternative stream: False
2025-06-21 02:26:05.089 | WARNING | stream_url_resolver:110 | 1***4 - Failed to get live stream url: NoStreamAvailable('flv', 'avc', 10000)
2025-06-21 02:26:05.269 | INFO | stream_recorder_impl:354 | 1***4 - Video file completed: 'G:\blrec-v2.0.0-beta.5-win64\录播文件\1***4 - ****\blive_1***4_2025-06-20-190022.flv'
2025-06-21 02:26:05.272 | INFO | raw_danmaku_dumper:111 | 1***4 - Raw danmaku file completed: 'G:\blrec-v2.0.0-beta.5-win64\录播文件\1***4 - ****\blive_1***4_2025-06-20-190022.jsonl'
2025-06-21 02:26:05.275 | INFO | danmaku_dumper:203 | 1***4 - Danmaku file completed: 'G:\blrec-v2.0.0-beta.5-win64\录播文件\1***4 - ****\blive_1***4_2025-06-20-190022.xml'
Recording: 11.4GB [7:26:23, 458kB/s, 1***4 - ****]
2025-06-21 02:26:06.100 | INFO | recorder:494 | 1***4 - Recording Finished
2025-06-21 02:26:06.100 | INFO | recorder:504 | 1***4 - Waiting... until the live starts
2025-06-21 02:26:06.291 | INFO | postprocessor:221 | 1***4 - Injecting metadata for 'G:\blrec-v2.0.0-beta.5-win64\ 录播文件\1***4 - ****\blive_1***4_2025-06-20-190022.flv' ...
Injecting:  85%|██████████████████████▊    | 9.66G/11.4G [01:36<00:17, 107MB/s, blive_1***4_2025-06-20-190022.flv]
2025-06-21 02:27:43.054 | ERROR | postprocessor:239 | 1***4 - Failed to inject metadata for 'G:\blrec-v2.0.0-beta.5-win64\录播文件\1***4 - ****\blive_1***4_2025-06-20-190022.flv': ValueError('I/O operation on closed file')
2025-06-21 02:27:43.083 | CRITICAL | exception_handler:24 | 1***4 - ValueError('I/O operation on closed file')
Traceback (most recent call last):
  File "G:\blrec-v2.0.0-beta.5-win64\python\Lib\site-packages\blrec\flv\io.py", line 93, in write_tag
    self._dumper.dump_tag(tag)
  File "G:\blrec-v2.0.0-beta.5-win64\python\Lib\site-packages\blrec\flv\format.py", line 205, in dump_tag
    self._writer.write(tag.body)
  File "G:\blrec-v2.0.0-beta.5-win64\python\Lib\site-packages\blrec\flv\struct_io.py", line 44, in write
    return self._stream.write(data)
           ^^^^^^^^^^^^^^^^^^^^^^^^
OSError: [Errno 28] No space left on device

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "G:\blrec-v2.0.0-beta.5-win64\python\Lib\site-packages\blrec\flv\operators\dump.py", line 91, in on_next
    size = self._flv_writer.write_tag(item)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "G:\blrec-v2.0.0-beta.5-win64\python\Lib\site-packages\blrec\flv\io.py", line 92, in write_tag
    with AutoRollbacker(self._stream):
  File "G:\blrec-v2.0.0-beta.5-win64\python\Lib\site-packages\blrec\flv\utils.py", line 38, in __exit__
    self._file.seek(self._offset)
OSError: [Errno 28] No space left on device

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "G:\blrec-v2.0.0-beta.5-win64\python\Lib\site-packages\blrec\flv\operators\parse.py", line 46, in on_next
    observer.on_next(tag)
  File "G:\blrec-v2.0.0-beta.5-win64\python\Lib\site-packages\reactivex\observer\autodetachobserver.py", line 28, in on_next
    self._on_next(value)
  File "G:\blrec-v2.0.0-beta.5-win64\python\Lib\site-packages\blrec\flv\operators\inject.py", line 59, in on_next
    observer.on_next(tag)
  File "G:\blrec-v2.0.0-beta.5-win64\python\Lib\site-packages\reactivex\observer\autodetachobserver.py", line 28, in on_next
    self._on_next(value)
  File "G:\blrec-v2.0.0-beta.5-win64\python\Lib\site-packages\blrec\flv\operators\dump.py", line 97, in on_next
    self._close_file()
  File "G:\blrec-v2.0.0-beta.5-win64\python\Lib\site-packages\blrec\flv\operators\dump.py", line 65, in _close_file
    self._file.close()
OSError: [Errno 28] No space left on device

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "G:\blrec-v2.0.0-beta.5-win64\python\Lib\site-packages\blrec\postprocess\postprocessor.py", line 237, in _inject_extra_metadata
    await self._inject_metadata(path, metadata)
  File "G:\blrec-v2.0.0-beta.5-win64\python\Lib\site-packages\blrec\flv\operators\dump.py", line 91, in on_next
    size = self._flv_writer.write_tag(item)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "G:\blrec-v2.0.0-beta.5-win64\python\Lib\site-packages\blrec\flv\io.py", line 92, in write_tag
    with AutoRollbacker(self._stream):
  File "G:\blrec-v2.0.0-beta.5-win64\python\Lib\site-packages\blrec\flv\utils.py", line 34, in __enter__
    self._offset = self._file.tell()
                   ^^^^^^^^^^^^^^^^^
ValueError: I/O operation on closed file

--- Logging error in Loguru Handler #2 ---
Record was: {'elapsed': datetime.timedelta(days=2, seconds=42212, microseconds=660588), 'exception': None, 'extra': {'room_id': 1***4}, 'file': (name='exception_handler.py', path='G:\\blrec-v2.0.0-beta.5-win64\\python\\Lib\\site-packages\\blrec\\exception\\exception_handler.py'), 'function': '_log_exception', 'level': (name='CRITICAL', no=50, icon='☠️'), 'line': 24, 'message': 'ValueError(\'I/O operation on closed file\')\nTraceback (most recent call last):\n  File "G:\\blrec-v2.0.0-beta.5-win64\\python\\Lib\\site-packages\\blrec\\flv\\io.py", line 93, in write_tag\n    self._dumper.dump_tag(tag)\n  File "G:\\blrec-v2.0.0-beta.5-win64\\python\\Lib\\site-packages\\blrec\\flv\\format.py", line 205, in dump_tag\n    self._writer.write(tag.body)\n  File "G:\\blrec-v2.0.0-beta.5-win64\\python\\Lib\\site-packages\\blrec\\flv\\struct_io.py", line 44, in write\n    return self._stream.write(data)\n           ^^^^^^^^^^^^^^^^^^^^^^^^\nOSError: [Errno 28] No space left on device\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File "G:\\blrec-v2.0.0-beta.5-win64\\python\\Lib\\site-packages\\blrec\\flv\\operators\\dump.py", line 91, in on_next\n    size = self._flv_writer.write_tag(item)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File "G:\\blrec-v2.0.0-beta.5-win64\\python\\Lib\\site-packages\\blrec\\flv\\io.py", line 92, in write_tag\n    with AutoRollbacker(self._stream):\n  File "G:\\blrec-v2.0.0-beta.5-win64\\python\\Lib\\site-packages\\blrec\\flv\\utils.py", line 38, in __exit__\n    self._file.seek(self._offset)\nOSError: [Errno 28] No space left on device\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File "G:\\blrec-v2.0.0-beta.5-win64\\python\\Lib\\site-packages\\blrec\\flv\\operators\\parse.py", line 46, in on_next\n    observer.on_next(tag)\n  File "G:\\blrec-v2.0.0-beta.5-win64\\python\\Lib\\site-packages\\reactivex\\observer\\autodetachobserver.py", line 28, in on_next\n    self._on_next(value)\n  File "G:\\blrec-v2.0.0-beta.5-win64\\python\\Lib\\site-packages\\blrec\\flv\\operators\\inject.py", line 59, in on_next\n    observer.on_next(tag)\n  File "G:\\blrec-v2.0.0-beta.5-win64\\python\\Lib\\site-packages\\reactivex\\observer\\autodetachobserver.py", line 28, in on_next\n    self._on_next(value)\n  File "G:\\blrec-v2.0.0-beta.5-win64\\python\\Lib\\site-packages\\blrec\\flv\\operators\\dump.py", line 97, in on_next\n    self._close_file()\n  File "G:\\blrec-v2.0.0-beta.5-win64\\python\\Lib\\site-packages\\blrec\\flv\\operators\\dump.py", line 65, in _close_file\n    self._file.close()\nOSError: [Errno 28] No space left on device\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File "G:\\blrec-v2.0.0-beta.5-win64\\python\\Lib\\site-packages\\blrec\\postprocess\\postprocessor.py", line 237, in _inject_extra_metadata\n    await self._inject_metadata(path, metadata)\n  File "G:\\blrec-v2.0.0-beta.5-win64\\python\\Lib\\site-packages\\blrec\\flv\\operators\\dump.py", line 91, in on_next\n    size = self._flv_writer.write_tag(item)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File "G:\\blrec-v2.0.0-beta.5-win64\\python\\Lib\\site-packages\\blrec\\flv\\io.py", line 92, in write_tag\n    with AutoRollbacker(self._stream):\n  File "G:\\blrec-v2.0.0-beta.5-win64\\python\\Lib\\site-packages\\blrec\\flv\\utils.py", line 34, in __enter__\n    self._offset = self._file.tell()\n                   ^^^^^^^^^^^^^^^^^\nValueError: I/O operation on closed file\n', 'module': 'exception_handler', 'name': 'blrec.exception.exception_handler', 'process': (id=118936, name='MainProcess'), 'thread': (id=108636, name='MainThread'), 'time': datetime(2025, 6, 21, 2, 27, 43, 83556, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800), '中国标准时间'))}
Traceback (most recent call last):
  File "G:\blrec-v2.0.0-beta.5-win64\python\Lib\site-packages\loguru\_handler.py", line 315, in _queued_writer
    self._sink.write(message)
  File "G:\blrec-v2.0.0-beta.5-win64\python\Lib\site-packages\loguru\_file_sink.py", line 206, in write
    self._file.write(message)
OSError: [Errno 28] No space left on device
--- End of logging error ---
2025-06-21 02:28:23.999 | WARNING | space_monitor:79 |  - No enough disk space left
2025-06-21 02:29:24.012 | WARNING | space_monitor:79 |  - No enough disk space left
2025-06-21 02:30:24.005 | WARNING | space_monitor:79 |  - No enough disk space left

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions