Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MiniDV на Apple Silicon

Оцифровка MiniDV-кассет и использование камкордера как веб-камеры на macOS 26 Tahoe — там, где Apple полностью удалила поддержку FireWire.

Пошаговая инструкция, проверенная на живом железе: Sony DCR-PC115E → Apple Thunderbolt-адаптеры → MacBook Air M1 → macOS 26.5.2.


Содержание


Что это и зачем

В macOS 26 Tahoe Apple удалила стек FireWire целиком. Бандлы IOFireWireFamily.kext, IOFireWireAVC.kext, AppleFWOHCI.kext формально лежат в /System/Library/Extensions, но это пустые скорлупки: кода в boot kernel collection нет, загрузить их невозможно. Адаптер Thunderbolt→FireWire подключается, контроллер виден на шине PCIe — и остаётся без драйвера.

Единственный путь — пользовательский драйвер ASFireWire, реализующий OHCI 1394 на DriverKit. Проект экспериментальный, но на нём удалось получить и побитовую копию ленты, и живое видео.

Инструкция закрывает два сценария:

  1. Архивная оцифровка — точная копия кассеты в файл .dv без потерь, с таймкодом и метаданными.
  2. Веб-камера — камкордер как системная камера в Zoom, FaceTime, Photo Booth, Safari.

Результат

Проверочный захват с ленты:

Показатель Значение
Кадров 1895
Потеряно кадров 1 (0,05 %)
Переполнений кольца 0
Размер файла 272 880 000 байт
Делится на 144 000 без остатка
DV-пакетов на кадр ровно 300
Таймкод ленты сохранён (00:04:22:08)

Живой режим: 720×576, 50 обновлений в секунду после деинтерлейса, задержка порядка одного кадра.


Требования

Железо

Компонент Модель Примечание
Камкордер Sony DCR-PC115E (MiniDV, PAL) Подойдёт любой DV с i.LINK
Кабель FireWire 400 4-pin ↔ FireWire 800 9-pin 4-pin в камеру
Адаптер 1 Apple Thunderbolt → FireWire (A1463) Внутри LSI/Agere FW643, PCI 11c1:5901
Адаптер 2 Apple Thunderbolt 3 (USB-C) → Thunderbolt 2 (A1790) Однонаправленный
Mac MacBook Air M1 (MacBookAir10,1 / T8103) Любой Apple Silicon с Thunderbolt

Порядок сборки жёсткий: A1790 в Mac → в него A1463 → в него FireWire-кабель → в камеру. Наоборот не работает.

Софт

Что Версия Зачем
macOS 26.x Tahoe Проверено на 26.5.2 (25F84)
Xcode 26.x Полноценный, не Command Line Tools
Metal Toolchain отдельный компонент xcodebuild -downloadComponent MetalToolchain
Homebrew Для ffmpeg
ffmpeg 8.x Проверка и транскод
OBS Studio 32.2.1+ Виртуальная камера (только для живого режима)

Место на диске

13 ГБ на час ленты. 60-минутная кассета в SP ≈ 13 ГБ в сыром .dv.


Часть 1. Подготовка системы

Драйвер собирается локально и подписывается ad-hoc — без нотаризации. Чтобы система его запустила, нужно отключить SIP.

Внимание. Отключение SIP снижает защиту всей системы. Не оставляйте машину в этом состоянии дольше, чем нужно, и не пользуйтесь в это время банковскими приложениями.

1.1 Отключить SIP

  1. Выключить Mac полностью (не перезагрузка).
  2. Зажать кнопку питания до надписи «Загрузка параметров запуска» → Параметры → выбрать пользователя → пароль.
  3. Меню Утилиты → Терминал:
csrutil disable

Подтвердить y, ввести пароль администратора, затем:

reboot

1.2 Включить developer mode

После загрузки:

csrutil status
# System Integrity Protection status: disabled.

sudo systemextensionsctl developer on

Developer mode нужен только на время установки драйвера. После установки его следует выключить — иначе он ломает виртуальную камеру OBS (см. Грабли).

1.3 Проверить, что адаптер виден

Подключите оба переходника (камеру пока не нужно):

ioreg -p IOService -w0 | grep -i "11c1"
system_profiler SPThunderboltDataType | head -40

Ожидается строка вида pci11c1,5901@0 <class IOPCIDevice ... registered, matched, active> и «Thunderbolt to FireWire Adapter» в списке Thunderbolt-устройств. Если ноды нет — проблема в кабелях или порядке переходников, дальше идти бессмысленно.


Часть 2. Драйвер FireWire

2.1 Metal Toolchain

В Xcode 26 компилятор Metal вынесен в отдельный загружаемый компонент. Без него не соберётся Syphon (Часть 4), а заодно и ряд других зависимостей:

xcodebuild -downloadComponent MetalToolchain

2.2 Клонировать и собрать

mkdir -p ~/Developer && cd ~/Developer
git clone https://github.com/mrmidi/ASFireWire.git
cd ASFireWire

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -license accept

2.3 Применить патч скорости

Обязательный шаг для камкордеров. В ASFWDriver/Async/Tx/ResponseSender.cpp скорость исходящих async-ответов зашита константой S400. Камкордеры i.LINK работают только на S100 и физически не принимают такие пакеты — AV/C разваливается, Config ROM читается через раз.

sed -i '' 's/constexpr uint8_t kSpeedS400 = 0x02;/constexpr uint8_t kSpeedS400 = 0x00;  \/\/ S100 responses/' \
  ASFWDriver/Async/Tx/ResponseSender.cpp
grep -n "kSpeedS400" ASFWDriver/Async/Tx/ResponseSender.cpp

Должно быть = 0x00. Подробности — в docs/asfireware-bugs.md.

2.4 Собрать и подписать

./build.sh --config Release
./sign.sh

Никогда не собирайте с флагом --scsi. При отсутствии SBP-2-устройства на шине это приводит к панике ядра в бут-луп. Для камкордера SCSI не нужен.

Признак успеха — последняя строка:

[OK] Signed .../ASFW.app (ad-hoc, entitlements embedded).

2.5 Установить

cp -R build/DerivedData/Build/Products/Release/ASFW.app /Applications/
open /Applications/ASFW.app

Кнопка Install находится в тулбаре окна справа сверху, горячая клавиша ⌘I.

Расширение уйдёт в состояние activated waiting for user — одобрить вручную:

Системные настройки → Основные → Объекты входа и расширения → Расширения драйверов → включить ASFW.

Проверка:

systemextensionsctl list
# net.mrmidi.ASFW.ASFWDriver ... [activated enabled]

ioreg -p IOService -w0 -l -r -n "pci11c1,5901" -d 2 | grep -Ei "ASFWDriver|IOUserServerCDHash"

Под PCI-нодой должен появиться дочерний ASFWDriver. IOUserServerCDHash — надёжный способ проверить, что загружена свежая сборка: версия бандла при пересборке не меняется, а хеш меняется всегда.

2.6 Выключить developer mode

После успешной установки:

sudo systemextensionsctl developer off

Драйвер продолжит работать — проверено. А виртуальная камера OBS без этого режима перестанет плодить дубли расширения.


Часть 3. Оцифровка кассет

3.1 Подготовка лент

  • Дайте кассетам сутки полежать в комнате, если они хранились в холоде или сырости.
  • Перед первой кассетой прогоните чистящую кассету, дальше — каждые 8–10 часов записи.
  • Оцифровывайте той же камерой, которой снимали — юстировка головок у каждого аппарата своя.
  • Не перематывайте на максимальной скорости до упора: это главный источник зажёвывания.
  • Если лента скрипит или осыпается — ловите один чистый проход, второго может не быть.
  • Сдвиньте на кассете защиту от записи в положение SAVE.

3.2 Настройки камеры

Параметр Значение Почему
Питание Сетевой адаптер Просадка батареи в середине кассеты = обрыв захвата
POWER VCR Режим воспроизведения
MENU → VCR SET → A/V→DV OUT OFF Это сквозной аналог→DV, при чтении ленты не нужен
MENU → OTHERS → A.SHUT OFF NEVER Иначе камера уснёт на паузе
Подключение кабеля при выключенной камере Горячее подключение FireWire — способ сжечь порт i.LINK

3.3 Захват

caffeinate -d -i        # в отдельном окне — не давать Mac уснуть
  1. ASFW → вкладка Controller StatusConnect.
  2. Вкладка DV Capture.
  3. Channel = 63 (камкордеры вещают широковещательно на 63-м изохронном канале).
  4. Choose Output File… → осмысленное имя, например 2003-08_отпуск_кассета-04.dv.
  5. Start Capture, затем Play — в приложении или пальцем на камере.

Захват идёт в реальном времени: час ленты = час ожидания.

AV/C-команды (Play/Stop/Rewind) до камеры доходят, но приложение может показать «no FCP response» — это известный баг сопоставления транзакций, а не отказ. Смотрите, поехала ли лента.

3.4 Контроль во время захвата

Счётчик Норма Если не так
System PAL (625/50) NTSC на европейской ленте — разбираться до продолжения
Isoch packets seen ≈8000/с 0 → камера не вещает или IR-контекст занят
DV source packets 7500/с (300 на кадр) Меньше — потери на шине
Non-DV packets 0 >0 → фильтр CIP не узнаёт поток
Frames +25/с Отставание = потери
Dropped frames 0, допустимы единицы Растёт постоянно → приём не справляется
Ring overruns 0 >0 → приложение не успевает вычитывать кольцо (буфер 1,1 с)
Written ≈3,6 МБ/с Арифметика: кадры × 144000 = байты

3.5 Проверка результата

F=~/Documents/tape01.dv
python3 -c "import os,sys;s=os.path.getsize(sys.argv[1]);print(s,'bytes |',s/144000,'frames | remainder',s%144000)" "$F"
ffprobe -hide_banner "$F"

Остаток от деления обязан быть 0 — это главный признак того, что кадры выровнены и файл цел.

ffprobe должен показать dvvideo, yuv420p, 720x576 [SAR 16:15 DAR 4:3], 25 tbr.

Проверить вторую звуковую дорожку (12-битный режим пишет две, вторая обычно пуста):

ffmpeg -hide_banner -i "$F" -map 0:a:0 -af volumedetect -f null - 2>&1 | grep mean_volume
ffmpeg -hide_banner -i "$F" -map 0:a:1 -af volumedetect -f null - 2>&1 | grep mean_volume

Уровень около -91 dB = дорожка пустая.

3.6 Производные файлы

Мастер .dv — точная копия ленты. Его не редактируют, не пережимают и не удаляют; всё остальное пересоздаётся из него.

Монтажный мастер — ProRes HQ, обе звуковые дорожки, поля сохранены:

ffmpeg -i "$F" -map 0 -c:v prores_ks -profile:v 3 -vf "setfield=bff" \
  -c:a pcm_s16le tape01_prores.mov

Для просмотра — деинтерлейс в 50p, квадратный пиксель:

ffmpeg -i "$F" -filter_complex \
  "[0:v]bwdif=mode=send_field:parity=bff,scale=768:576:flags=lanczos,setsar=1[v]" \
  -map "[v]" -map 0:a:0 -c:v libx264 -crf 18 -preset slow -pix_fmt yuv420p \
  -c:a aac -b:a 192k tape01_view.mp4

Почему 768, а не 1024. PAL DV имеет неквадратный пиксель. При SAR 16:15 и кадре 4:3 правильный размер в квадратных пикселях — 720 × 16/15 = 768×576. Ширина 1024 применяется только к анаморфному 16:9.

3.7 Хранение

Правило 3-2-1: три копии, на двух разных носителях, одна вне дома. Рядом с каждым мастером держите текстовый файл с заметками: что на ленте, состояние плёнки, число потерянных кадров.


Часть 4. Камера как веб-камера

Как это устроено

Камера (режим CAMERA, живое DV)
      │  изохронный канал 63
      ▼
ASFWDriver → кольцо в разделяемой памяти
      │
      ▼
DVLivePipeline: сборка кадров → VideoToolbox → bob-деинтерлейс
      │  CVPixelBuffer 720×576 BGRA
      ▼
SyphonOutput → Syphon-сервер «Sony DCR-PC115E»
      │  IOSurface, без копирования
      ▼
OBS: источник «Клиент Syphon» → Start Virtual Camera
      │
      ▼
Zoom / FaceTime / Photo Booth / Safari

Почему через OBS

Собственное CMIO-расширение камеры на бесплатном Apple-аккаунте активировать невозможно. Причина глубже, чем отсутствие entitlement system-extension.install: камера-расширение обязано зарегистрировать Mach-сервис с именем $(TeamIdentifierPrefix)<bundle-id>, а у ad-hoc-подписи нет ни Team ID, ни app group — регистрировать сервис попросту не в чем.

Обход: не нужно, чтобы ваше расширение было подписано — нужно, чтобы кадры попали в чужое, уже подписанное. OBS Studio с версии 28 публикует виртуальную камеру как Camera Extension на Core Media I/O с подписью OBS Project. Syphon доставляет туда кадры через IOSurface и подписи не требует вообще.

4.1 Собрать Syphon

cd ~/Developer
git clone https://github.com/Syphon/Syphon-Framework.git
cd Syphon-Framework
xcodebuild -project Syphon.xcodeproj -scheme Syphon -configuration Release -derivedDataPath ./build

Версия критична — нужен коммит 71351d4 (PR #103, pixel-format) или новее, иначе клиенты на OBS 32.x получают прозрачный кадр:

git merge-base --is-ancestor 71351d4b484cd2d1917867f7846a5cdca724552d HEAD && echo "фикс есть"

Проверка результата:

F=~/Developer/Syphon-Framework/build/Build/Products/Release/Syphon.framework
lipo -info "$F/Versions/A/Syphon"          # arm64 x86_64
ls "$F/Versions/A/Modules/"                # module.modulemap
codesign -dv "$F" 2>&1 | grep -E "Signature|TeamIdentifier"   # adhoc / not set

4.2 Подключить к проекту

Не перетаскивайте фреймворк в Xcode. Проект ASFW генерируется XcodeGen'ом из project.yml, и build.sh вызывает xcodegen generate автоматически. Любая правка через интерфейс будет стёрта при первой же сборке.

mkdir -p ~/Developer/ASFireWire/Vendor
cp -R ~/Developer/Syphon-Framework/build/Build/Products/Release/Syphon.framework \
      ~/Developer/ASFireWire/Vendor/

В project.yml, в target ASFW, в блок dependencies:

      - framework: Vendor/Syphon.framework
        embed: true
        codeSign: true

LD_RUNPATH_SEARCH_PATHS там уже содержит @executable_path/../Frameworks.

4.3 Добавить код

Скопируйте из этого репозитория:

Файл Куда Роль
src/SyphonOutput.swift DVLive/ Публикация CVPixelBuffer в Syphon через IOSurface
src/DVSyphonRunner.swift DVLive/ Независимый от CMIO запуск пайплайна + сторожевой таймер

Правки в существующие файлы описаны в patches/dvlivepipeline-syphon.md:

  • DVLive/DVLivePipeline.swift — поле syphon, создание в start(), остановка в stop(), syphon?.publish(progressive) в emit() сразу после деинтерлейса.
  • ASFW/ASFWApp.swift — запуск по флагу:
if ProcessInfo.processInfo.arguments.contains("--syphon") {
    DVSyphonRunner.shared.start()
}

Почему по флагу, а не всегда. Живой пайплайн занимает изохронный контекст приёма. Если бы он стартовал автоматически, оцифровка кассет перестала бы работать — они делят одно кольцо. Живой режим и захват с ленты взаимоисключающи.

Требование к декодеру: буферы должны быть IOSurface-backed и в формате BGRA. В атрибутах VTDecompressionSession:

kCVPixelBufferPixelFormatTypeKey: kCVPixelFormatType_32BGRA,
kCVPixelBufferIOSurfacePropertiesKey: [:] as CFDictionary,
kCVPixelBufferMetalCompatibilityKey: true,

Без kCVPixelBufferIOSurfacePropertiesKey публикация молча пропустит все кадры — счётчик framesSkippedNoIOSurface это покажет.

4.4 Пересобрать

cd ~/Developer/ASFireWire
xcodegen generate
./build.sh --config Release && ./sign.sh
rm -rf /Applications/ASFW.app
cp -R build/DerivedData/Build/Products/Release/ASFW.app /Applications/

Драйвер переустанавливать не нужно — менялась только Swift-часть.

4.5 Настроить камеру для живого режима

Параметр Значение Почему
Кассета вынуть С лентой камера через несколько минут расцепляет барабан головок и уходит в сон. Это защита механики, отключить нельзя
POWER CAMERA Живой сигнал с матрицы
Питание Сетевой адаптер
MENU → OTHERS → DEMO MODE OFF Без кассеты камера через 10 минут запускает демо-ролик и подмешивает эффекты прямо в выход i.LINK. Пункт доступен только когда лента вынута
MENU → OTHERS → A.SHUT OFF NEVER
Крышка объектива снять

4.6 Установить виртуальную камеру OBS

Один раз: запустить OBS → Start Virtual Camera → согласиться на установку расширения → одобрить в Системные настройки → Основные → Объекты входа и расширения → Расширения камеры.

systemextensionsctl list | grep -i obs
# нужна РОВНО ОДНА строка [activated enabled]

Если строк две (одна terminated waiting to uninstall on reboot) — см. Грабли.

4.7 Запустить

pkill -x ASFW; sleep 2
open -a /Applications/ASFW.app --args --syphon
sleep 3
log show --last 1m --info --style compact --predicate 'category == "SyphonRunner"' | tail -3
# Syphon runner started on channel 63

Затем в OBS: Источники → + → Клиент Syphon → в свойствах выбрать Sony DCR-PC115EStart Virtual Camera.

В нужном приложении выбрать камеру OBS Virtual Camera.


Часть 5. Настройки OBS

Правильные настройки важнее выбора кодека: при холсте 1920×1080 SD-картинка растягивается в FullHD и записывается размытый апскейл.

Настройки → Видео

Параметр Значение
Базовое разрешение (холст) 768×576
Выходное разрешение 768×576 (равно базовому — тогда пересчёта нет вовсе)
Фильтр масштабирования Ланцоша
FPS 50 (bob-деинтерлейс даёт 50 обновлений в секунду)

768 — это кадр 720×576 в квадратных пикселях при соотношении 4:3.

В сцене: правый клик по источнику → ТрансформироватьСбросить трансформацию. Кадр должен занять холст пиксель в пиксель.

Настройки → Вывод → Запись

Параметр Значение
Режим вывода Расширенный
Тип Обычный
Формат записи Гибридный MOV (.mov) — переживает падение OBS
Генерировать имя файла без пробела включить
Кодировщик видео свой, не «использовать кодировщик трансляции»
Кодировщик звука CoreAudio AAC

Частая ошибка. «Использовать кодировщик трансляции» означает битрейт стрима — около 2500 Кбит/с. Для 50 кадров в секунду этого мало, картинка в файле заметно хуже превью.

Выбор кодека:

Задача Кодировщик Настройки Место
Обычная запись Apple VT H.264 (аппаратный) CQP/CRF 18–20, или CBR 20000 Кбит/с 5–8 ГБ/час
Материал в монтаж Apple ProRes 422 ~36 ГБ/час

ProRes 422 HQ избыточен для SD (~54 ГБ/час), 4444 бессмыслен — источник 4:2:0 без альфа-канала.

Настройки → Дополнительно

  • Цветовой диапазон: Ограниченный. DV-материал изначально в ограниченном диапазоне; при полном тени зальются в чёрный, а света выбьются.

Про звук

Syphon передаёт только видео. Звук с камкордера в OBS не попадает — он остаётся в DIF-блоках и отбрасывается. Всё, что запишет OBS, — микрофон Mac или системный звук.

Чтобы получить звук с камеры, нужно извлекать PCM из тех же DIF-чанков и отдавать в виртуальное аудиоустройство (например, BlackHole). В текущей версии это не реализовано.


Часть 6. Ежедневные сценарии

Оцифровка кассеты

caffeinate -d -i     # отдельное окно
  1. Камера: сеть, кассета внутри, VCR, A/V→DV OUT = OFF.
  2. Запустить ASFW без флага: open -a /Applications/ASFW.app
  3. Controller Status → Connect → вкладка DV Capture → канал 63 → выбрать файл → Start CapturePlay.
  4. По окончании — Stop Capture (только после этого файл закрыт и валиден).
  5. Проверить кратность 144 000.

Веб-камера

  1. Камера: сеть, кассету вынуть, CAMERA, DEMO MODE = OFF, крышку снять.
  2. pkill -x ASFW; sleep 2
    open -a /Applications/ASFW.app --args --syphon
  3. OBS → источник «Клиент Syphon» → Start Virtual Camera. Окно можно свернуть.
  4. В приложении выбрать OBS Virtual Camera.

Быстрый запуск OBS сразу с камерой:

open -a OBS --args --startvirtualcam

Часть 7. Возврат системы в исходное состояние

Порядок обратный установке, нарушать нельзя:

systemextensionsctl uninstall - net.mrmidi.ASFW.ASFWDriver
systemextensionsctl list                 # убедиться, что записи нет
sudo systemextensionsctl developer off   # если ещё включён

И только потом Recovery → csrutil enable → перезагрузка.

С включённым SIP система откажется запускать ad-hoc-подписанный dext. Если расширение осталось установленным, при каждом старте остаётся осиротевший kernel-stub.

Аварийный выход: Recovery → csrutil disable → загрузиться → снять расширение → Recovery → csrutil enable.


Найденные баги драйвера

Подробный разбор с трассами транзакций — в docs/asfireware-bugs.md.

# Баг Статус
1 Скорость исходящих async-ответов зашита константой S400 → S100-устройства не отвечают Исправлено патчем из Части 2.3
2 AT-completion не сопоставляется для блочных записей → все AV/C-команды «падают», хотя на проводе проходят Открыт
3 ARPacketView хранит только младшие 16 бит xferStatus → скорость приёма (биты 21–23) теряется Открыт, блокирует правильный фикс бага 1

Наблюдение: Gap Count: 44 при оптимальном 5, оптимизация подавлена (Role Mode: Client Only). На двухузловой шине это раздутые арбитражные паузы — на захват не повлияло, но при более загруженной шине стоит вернуться.


Грабли и решения

Симптом Причина Решение
cannot execute tool 'metal' В Xcode 26 Metal-тулчейн — отдельный компонент xcodebuild -downloadComponent MetalToolchain
Kext-ы FireWire есть в /System/Library/Extensions, но не грузятся На Apple Silicon код живёт в boot kernel collection, бандлы — пустые скорлупки Проверять через kmutil inspect, а не find
AppleFireStormErrorHandler в выводе kextstat | grep fire Обработчик ошибок ядер M1 К FireWire отношения не имеет
Расширение висит terminating for uninstall but still running Старая копия держит слот Перезагрузка
Непонятно, загрузилась ли новая сборка Версия бандла не меняется Сверять IOUserServerCDHash в ioreg
Правки в Xcode исчезают после сборки Проект генерируется XcodeGen'ом Править project.yml, затем xcodegen generate
initializer for conditional binding must have Optional type SyphonMetalServer неопционален при мосте из ObjC Убрать guard let
Флаг --syphon не срабатывает open --args не передаёт аргументы уже запущенному приложению pkill -x ASFW перед open
Лог пустой, хотя код работает log.info скрыт по умолчанию Добавить --info к log show
Картинка вверх ногами Разные начала координат в OpenGL и Metal flipped: true в publishFrameTexture
В OBS источник есть, кадр прозрачный Баг Syphon Framework Обновить Syphon до 71351d4+ и пересобрать
«Не удалось найти системный процесс виртуальной камеры» Developer mode заставляет OBS переустанавливать расширение при каждом запуске, ассистент CMIO застревает между дублями sudo systemextensionsctl developer offsystemextensionsctl uninstall 2MMRE5MTB8 com.obsproject.obs-studio.mac-camera-extension → перезагрузка → чистая установка
framesSkippedNoIOSurface растёт Буферы не IOSurface-backed Добавить kCVPixelBufferIOSurfacePropertiesKey в атрибуты декодера
Захват с ленты перестал работать Живой пайплайн держит изохронный контекст Остановить живой режим, перезапустить ASFW без флага
Камера засыпает в живом режиме Защита барабана головок при вставленной ленте Вынуть кассету
Сами по себе накладываются эффекты DEMO MODE камеры (запускается без кассеты через 10 мин) MENU → OTHERS → DEMO MODE → OFF
Запись хуже, чем превью Запись использует битрейт стрима (~2500 Кбит/с) и/или холст 1920×1080 Свой кодировщик + холст 768×576

Ограничения

  • SIP должен быть выключен постоянно. Драйвер подписан ad-hoc; чтобы работать с включённым SIP, нужны entitlements com.apple.developer.driverkit.transport.pci, которые Apple выдаёт индивидуально по запросу с платным Developer-аккаунтом.
  • Живой режим требует запущенного OBS. Убрать его из цепочки можно только собственным CMIO-расширением, а для этого нужен платный Apple Developer Program.
  • Звук в живом режиме не передаётся. Syphon — только видео.
  • Живой режим и оцифровка кассет взаимоисключающи — общий изохронный контекст.
  • AV/C-управление формально не работает (баг 2), хотя команды до камеры доходят.
  • Isochronous Receive в ASFireWire помечен как экспериментальный. На проверочном захвате — 1 потерянный кадр из 1896, но гарантий проект не даёт. Ценные ленты стоит прогонять с контролем счётчиков.

Благодарности

  • mrmidi/ASFireWire — драйвер, без которого ничего бы не было.
  • Syphon — межпроцессный обмен кадрами.
  • OBS Studio — подписанная виртуальная камера.
  • DVRescue — методика архивной оцифровки DV.

Лицензия

MIT — см. LICENSE.

Документация описывает конкретную конфигурацию по состоянию на июль 2026 года. ASFireWire активно развивается: перед началом сверьтесь с актуальным состоянием репозитория — баг со скоростью ответов может быть уже исправлен в upstream.

About

Оцифровка MiniDV и камкордер как веб-камера на macOS 26 Tahoe (Apple Silicon), где Apple удалила FireWire

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages