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
没有元数据的flv应该是完整的,现在如何得到有元数据的视频?直接用ffmpeg处理可以吗
日志