amiaopensource / vrecord

Vrecord is open-source software for capturing a video signal and turning it into a digital file.
https://github.com/amiaopensource/vrecord
149 stars 45 forks source link

Files not passing vrecord policy check for FFV1 video #817

Closed DSohl closed 1 week ago

DSohl commented 1 month ago

Heya - since yesterday morning, every video capture I do gives me this message:

Checking file conformance against FFV1 video policy...
 2024-07-30T12:51:32 - File did not pass vrecord policy check for FFV1 video and may not conform to digital preservation standards. Try another file?
 2024-07-30T12:51:32 - See /Users/medialab/Desktop/JPC/20240730/JPC_AV_01755/JPC_AV_01755_mediaconchreport.xml for a full MediaConch policy report.
Vrecord is attaching logs to your Matroska file:
The file is being analyzed.
The changes are written to the file.
Done.
The file is being analyzed.
The changes are written to the file.
Done.
Vrecord is done attaching logs to your Matroska file!

(base) /Users/medialab/github

What're reasons that could cause these files to (may) not conform to digital preservation standards? Maybe related, maybe unrelated, I ran brew update + upgrade before this started happening.

dericed commented 1 month ago

Hey @DSohl we had a change to the aspect ratio handling recently in vrecord. So now the video can be one of many slightly differing variants of 4/3 and 16/9. As a result I ultimately just removed the aspect ratio check from the mediaconch policy, but there was a lag between the feature being added and the check being removed, so your version of vrecord might be in the middle. Can you update the the vrecord released this week and retry?

Or could you paste over /Users/medialab/Desktop/JPC/20240730/JPC_AV_01755/JPC_AV_01755_mediaconchreport.xml so we could take a look?

DSohl commented 1 month ago

Hi, @dericed - Ya, this video file I'm using as an example was captured using vrecord version 2024-07-09 (updated this AM). I guess I can't attach XML in these fields, so here's the mediaconchreport (if you want to look at it in any other format just holler). Thank you!

<?xml version="1.0" encoding="UTF-8"?>
<MediaConch xmlns="https://mediaarea.net/mediaconch" xmlns:mmt="https://mediaarea.net/micromediatrace" xmlns:mi="https://mediaarea.net/mediainfo" version="0.3" verbosity="0">
  <media ref="/Users/medialab/Desktop/JPC/20240730/JPC_AV_01755/JPC_AV_01755.mkv">
    <policy name="Check validity of FFV1 Matroska and Quicktime files" type="and" level="" rules_run="21" fail_count="2" warn_count="0" info_count="0" pass_count="19" outcome="fail">
      <description>This policy tests FFV1 Matroska and Quicktime files made using vrecord and checks their validity</description>
      <rule name="Is the video format FFV1?" value="Format" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:Format='FFV1'" outcome="pass"/>
      <rule name="FFV1 is version 3.4 or later?" value="Format_Version" tracktype="Video" operator="&gt;=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:Format_Version&gt;='3.4'" outcome="pass"/>
      <rule name="FFV1 is encoded in GOP size of 1?" value="Format_Settings_GOP" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:Format_Settings_GOP='N=1'" outcome="pass"/>
      <rule name="Is the frame rate mode constant?" value="FrameRate_Mode" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:FrameRate_Mode='CFR'" outcome="pass"/>
      <rule name="Is the color space YUV?" value="ColorSpace" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:ColorSpace='YUV'" outcome="pass"/>
      <rule name="Is the chroma subsampling 4:2:2?" value="ChromaSubsampling" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:ChromaSubsampling='4:2:2'" outcome="pass"/>
      <rule name="Is the video interlaced?" value="ScanType" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:ScanType='Interlaced'" outcome="pass"/>
      <rule name="Is the compression mode lossless?" value="Compression_Mode" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:Compression_Mode='Lossless'" outcome="pass"/>
      <rule name="Is max slice count at least 4?" value="extra/MaxSlicesCount" tracktype="Video" operator="&gt;=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:extra/mi:MaxSlicesCount&gt;='4'" requested="4" actual="" outcome="fail"/>
      <rule name="Is error detection type per slice?" value="extra/ErrorDetectionType" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:extra/mi:ErrorDetectionType='Per slice'" outcome="pass"/>
      <rule name="Is the video stream first?" value="StreamOrder" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:StreamOrder='0'" outcome="pass"/>
      <rule name="Is the colour description present?" value="colour_description_present" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:colour_description_present='Yes'" outcome="pass"/>
      <rule name="Are the transfer characteristics BT.709?" value="transfer_characteristics" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:transfer_characteristics='BT.709'" outcome="pass"/>
      <rule name="Is the audio stream on track 2?" value="StreamOrder" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:StreamOrder='1'" outcome="pass"/>
      <rule name="Is the audio bit depth 24?" value="BitDepth" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:BitDepth='24'" outcome="pass"/>
      <rule name="Is the sample rate 48kHz?" value="SamplingRate" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:SamplingRate='48000'" outcome="pass"/>
      <policy name="Is the container Matroska or Quicktime?" type="or" level="" rules_run="2" fail_count="2" warn_count="0" info_count="0" pass_count="0" outcome="fail">
        <policy name="Is it good Matroska?" type="and" level="" rules_run="3" fail_count="1" warn_count="0" info_count="0" pass_count="2" outcome="fail">
          <policy name="Is it new Matroska with an UUID?" type="and" level="" rules_run="5" fail_count="0" warn_count="0" info_count="0" pass_count="5" outcome="pass">
            <rule name="Is it Matroska?" value="Format" tracktype="General" operator="=" xpath="mi:MediaInfo/mi:track[@type='General']/mi:Format='Matroska'" outcome="pass"/>
            <rule name="Matroska version 4 or greater?" value="Format_Version" tracktype="General" operator="&gt;=" xpath="mi:MediaInfo/mi:track[@type='General']/mi:Format_Version&gt;='4'" outcome="pass"/>
            <rule name="Unique ID is present?" value="UniqueID" tracktype="General" xpath="mi:MediaInfo/mi:track[@type='General']/mi:UniqueID" outcome="pass"/>
            <rule name="Is the FFV1 Codec ID V_MS/VFW/FOURCC / FFV1?" value="CodecID" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:CodecID='V_MS/VFW/FOURCC / FFV1'" outcome="pass"/>
            <policy name="Is the audio Codec ID A_PCM/INT/LIT or A_FLAC?" type="or" level="" rules_run="2" fail_count="1" warn_count="0" info_count="0" pass_count="1" outcome="pass">
              <rule name="Is the Codec ID A_PCM/INT/LIT?" value="CodecID" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:CodecID='A_PCM/INT/LIT'" outcome="pass"/>
              <rule name="Is the Codec ID A_FLAC?" value="CodecID" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:CodecID='A_FLAC'" requested="A_FLAC" actual="A_PCM/INT/LIT" outcome="fail"/>
            </policy>
          </policy>
          <policy name="Is it NTSC SD or PAL SD?" type="or" level="" rules_run="2" fail_count="1" warn_count="0" info_count="0" pass_count="1" outcome="pass">
            <description>Quick test for NTSC vs Pal to validate matrix coefficients. Full NTSC vs PAL test below</description>
            <policy name="Is it NTSC?" type="and" level="" rules_run="1" fail_count="0" warn_count="0" info_count="0" pass_count="1" outcome="pass">
              <rule name="NTSC FrameRate 29.970?" value="FrameRate" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:FrameRate='29.970'" outcome="pass"/>
            </policy>
            <policy name="Is it PAL?" type="and" level="" rules_run="2" fail_count="2" warn_count="0" info_count="0" pass_count="0" outcome="fail">
              <description>The PAL matrix coefficients value is reported differently depending on container. This test validates for Matroska</description>
              <rule name="PAL FrameRate 25.000?" value="FrameRate" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:FrameRate='25.000'" requested="25.000" actual="29.970" outcome="fail"/>
              <policy name="Are the matrix coefficients BT.470 System B, BT.470 System G?" type="or" level="" rules_run="2" fail_count="2" warn_count="0" info_count="0" pass_count="0" outcome="fail">
                <rule name="Are the matrix coefficients BT.470 System B, BT.470 System G?" value="matrix_coefficients" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:matrix_coefficients='BT.470 System B, BT.470 System G'" requested="BT.470 System B, BT.470 System G" actual="BT.601" outcome="fail"/>
                <rule name="Are the matrix coefficients BT.470 System B/G?" value="matrix_coefficients" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:matrix_coefficients='BT.470 System B/G'" requested="BT.470 System B/G" actual="BT.601" outcome="fail"/>
              </policy>
            </policy>
          </policy>
          <policy name="Has Matroska finished writing?" type="and" level="" rules_run="4" fail_count="4" warn_count="0" info_count="0" pass_count="0" outcome="fail">
            <rule name="Duration is greater than zero?" scope="mmt" value="Segment/Info/Duration/Data" operator="&gt;" xpath="mmt:MicroMediaTrace/mmt:b[@n='Segment']/mmt:b[@n='Info']/mmt:b[@n='Duration']/mmt:d&gt;'0'" requested="0" actual="" outcome="fail"/>
            <rule name="SeekHead is present?" scope="mmt" value="Segment/SeekHead/" xpath="mmt:MicroMediaTrace/mmt:b[@n='Segment']/mmt:b[@n='SeekHead']" actual="" outcome="fail"/>
            <rule name="Cues is present?" scope="mmt" value="Segment/Cues/" xpath="mmt:MicroMediaTrace/mmt:b[@n='Segment']/mmt:b[@n='Cues']" actual="" outcome="fail"/>
            <policy name="Select Top-Level Elements have CRCs?" type="and" level="" rules_run="6" fail_count="6" warn_count="0" info_count="0" pass_count="0" outcome="fail">
              <rule name="SeekHead CRC-32 is present?" scope="mmt" value="Segment/SeekHead/CRC-32/" xpath="mmt:MicroMediaTrace/mmt:b[@n='Segment']/mmt:b[@n='SeekHead']/mmt:b[@n='CRC-32']" actual="" outcome="fail"/>
              <rule name="Info CRC-32 is present?" scope="mmt" value="Segment/Info/CRC-32/" xpath="mmt:MicroMediaTrace/mmt:b[@n='Segment']/mmt:b[@n='Info']/mmt:b[@n='CRC-32']" actual="" outcome="fail"/>
              <rule name="Tracks CRC-32 is present?" scope="mmt" value="Segment/Tracks/CRC-32/" xpath="mmt:MicroMediaTrace/mmt:b[@n='Segment']/mmt:b[@n='Tracks']/mmt:b[@n='CRC-32']" actual="" outcome="fail"/>
              <rule name="Cluster CRC-32 is present?" scope="mmt" value="Segment/Cluster/CRC-32/" xpath="mmt:MicroMediaTrace/mmt:b[@n='Segment']/mmt:b[@n='Cluster']/mmt:b[@n='CRC-32']" actual="" outcome="fail"/>
              <rule name="Cues CRC-32 is present?" scope="mmt" value="Segment/Cues/CRC-32/" xpath="mmt:MicroMediaTrace/mmt:b[@n='Segment']/mmt:b[@n='Cues']/mmt:b[@n='CRC-32']" actual="" outcome="fail"/>
              <rule name="Tags CRC-32 is present?" scope="mmt" value="Segment/Tags/CRC-32/" xpath="mmt:MicroMediaTrace/mmt:b[@n='Segment']/mmt:b[@n='Tags']/mmt:b[@n='CRC-32']" actual="" outcome="fail"/>
            </policy>
          </policy>
        </policy>
        <policy name="Is it good Quicktime?" type="and" level="" rules_run="8" fail_count="5" warn_count="0" info_count="0" pass_count="3" outcome="fail">
          <rule name="Is the file extension mov?" value="FileExtension" tracktype="General" operator="=" xpath="mi:MediaInfo/mi:track[@type='General']/mi:FileExtension='mov'" requested="mov" actual="mkv" outcome="fail"/>
          <rule name="Is the format MPEG-4?" value="Format" tracktype="General" operator="=" xpath="mi:MediaInfo/mi:track[@type='General']/mi:Format='MPEG-4'" requested="MPEG-4" actual="Matroska" outcome="fail"/>
          <rule name="Is the format profile QuickTime?" value="Format_Profile" tracktype="General" operator="=" xpath="mi:MediaInfo/mi:track[@type='General']/mi:Format_Profile='QuickTime'" requested="QuickTime" actual="" outcome="fail"/>
          <rule name="Is the FFV1 Codec ID FFV1?" value="CodecID" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:CodecID='FFV1'" requested="FFV1" actual="V_MS/VFW/FOURCC / FFV1" outcome="fail"/>
          <rule name="Is the PCM Codec ID in24?" value="CodecID" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:CodecID='in24'" requested="in24" actual="A_PCM/INT/LIT" outcome="fail"/>
          <rule name="Is the endianness Little?" value="Format_Settings_Endianness" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:Format_Settings_Endianness='Little'" outcome="pass"/>
          <rule name="Is the signedness signed?" value="Format_Settings_Sign" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:Format_Settings_Sign='Signed'" outcome="pass"/>
          <policy name="Is it NTSC SD or PAL SD?" type="or" level="" rules_run="2" fail_count="1" warn_count="0" info_count="0" pass_count="1" outcome="pass">
            <policy name="Is it NTSC?" type="and" level="" rules_run="1" fail_count="0" warn_count="0" info_count="0" pass_count="1" outcome="pass">
              <rule name="NTSC FrameRate 29.970?" value="FrameRate" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:FrameRate='29.970'" outcome="pass"/>
            </policy>
            <policy name="Is it PAL?" type="and" level="" rules_run="2" fail_count="1" warn_count="0" info_count="0" pass_count="1" outcome="fail">
              <description>The PAL matrix coefficients value is reported differently depending on container. This test validates for Quicktime</description>
              <rule name="PAL FrameRate 25.000?" value="FrameRate" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:FrameRate='25.000'" requested="25.000" actual="29.970" outcome="fail"/>
              <rule name="Are the matrix coefficients BT.601?" value="matrix_coefficients" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:matrix_coefficients='BT.601'" outcome="pass"/>
            </policy>
          </policy>
        </policy>
      </policy>
      <policy name="Is the video bit depth 8 or 10?" type="or" level="" rules_run="2" fail_count="1" warn_count="0" info_count="0" pass_count="1" outcome="pass">
        <rule name="Is the video bit depth 8?" value="BitDepth" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:BitDepth='8'" requested="8" actual="10" outcome="fail"/>
        <rule name="Is the video bit depth 10?" value="BitDepth" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:BitDepth='10'" outcome="pass"/>
      </policy>
      <policy name="Is it NTSC SD or PAL SD?" type="or" level="" rules_run="2" fail_count="1" warn_count="0" info_count="0" pass_count="1" outcome="pass">
        <policy name="Is it NTSC?" type="and" level="" rules_run="6" fail_count="0" warn_count="0" info_count="0" pass_count="6" outcome="pass">
          <rule name="NTSC height 486?" value="Height" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:Height='486'" outcome="pass"/>
          <rule name="NTSC width 720?" value="Width" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:Width='720'" outcome="pass"/>
          <rule name="NTSC FrameRate 29.970?" value="FrameRate" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:FrameRate='29.970'" outcome="pass"/>
          <rule name="NTSC scan order bottom field first?" value="ScanOrder" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:ScanOrder='BFF'" outcome="pass"/>
          <rule name="NTSC colour primaries BT.601 NTSC?" value="colour_primaries" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:colour_primaries='BT.601 NTSC'" outcome="pass"/>
          <rule name="Are the matrix coefficients BT.601?" value="matrix_coefficients" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:matrix_coefficients='BT.601'" outcome="pass"/>
        </policy>
        <policy name="Is it PAL?" type="and" level="" rules_run="5" fail_count="4" warn_count="0" info_count="0" pass_count="1" outcome="fail">
          <rule name="PAL height 576?" value="Height" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:Height='576'" requested="576" actual="486" outcome="fail"/>
          <rule name="PAL Width 720?" value="Width" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:Width='720'" outcome="pass"/>
          <rule name="PAL FrameRate 25.000?" value="FrameRate" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:FrameRate='25.000'" requested="25.000" actual="29.970" outcome="fail"/>
          <rule name="PAL scan order top field first?" value="ScanOrder" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:ScanOrder='TFF'" requested="TFF" actual="BFF" outcome="fail"/>
          <rule name="PAL colour primaries BT.601 PAL?" value="colour_primaries" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:colour_primaries='BT.601 PAL'" requested="BT.601 PAL" actual="BT.601 NTSC" outcome="fail"/>
        </policy>
      </policy>
      <policy name="Is the audio PCM or FLAC?" type="or" level="" rules_run="2" fail_count="1" warn_count="0" info_count="0" pass_count="1" outcome="pass">
        <rule name="Is the audio PCM?" value="Format" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:Format='PCM'" outcome="pass"/>
        <rule name="Is the audio FLAC?" value="Format" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:Format='FLAC'" requested="FLAC" actual="PCM" outcome="fail"/>
      </policy>
      <policy name="1 or 2 channels of audio?" type="or" level="" rules_run="2" fail_count="1" warn_count="0" info_count="0" pass_count="1" outcome="pass">
        <rule name="1 channel of audio?" value="Channels" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:Channels='1'" requested="1" actual="2" outcome="fail"/>
        <rule name="2 channels of audio?" value="Channels" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:Channels='2'" outcome="pass"/>
      </policy>
    </policy>
  </media>
</MediaConch>
dericed commented 1 month ago

Hey @DSohl it looks like the matroska didn't finish writing properly. Normally the muxer writes all the audiovisual data and then goes back and adds the crc's and cues and some other data when it's finalizing it, but that last step didn't happen. How did you stop the recording?

DSohl commented 1 month ago

@dericed I've been stoppung the recording by hitting the esc key. Can I add those crc's, cues and the other data after the digitizing process?

DSohl commented 1 month ago

@dericed A new maybe-related-maybe-not thing that I've started seeing this morning: when I start the vrecord GUI in the Mac terminal, I get this message:

(base) /Users/medialab
≈:≈ vrecord
Starting the vrecord GUI. To bypass the GUI, run like 'vrecord FILENAME'.
2024-07-31 10:58:38.554 defaults[1732:11578] 
The domain/default pair of (/Library/Extensions/DeckLink_Driver.kext/Contents/Info.plist, CFBundleVersion) does not exist
No devices found.

The GUI will open, and the UltraStudio 4K Extreme is listed as a device found. What's this mean?

dericed commented 1 month ago

You can rewrap it with ffmpeg yourfile.mkv -map 0 -c copy nice.mkv and then that result should pass that check. But I'm curious why it isn't finishing up right. Can you send the log? Also you're using the ffmpeg-dl (ffmpeg with decklink build) or something else?

DSohl commented 1 month ago

I truly appreciate your looking into this so quickly. Here's the log (and yeah, it's ffmpeg-dl)

JPC_AV_01755_capture_options.log

michaelangeletti commented 1 month ago

Hi @dericed and @Dsohl, I'm having a very similar issue with vrecord 2024-07-09 (ffmpeg-dl). I'm using a Mac Studio (Apple M1 Max, Sonoma 14.6) with UltraStudio 4K Extreme 3.

Running vrecord results in "no devices found" warning, as well as an error in the output below the video stream description (No such filter: ''), and then the policy check fails after the file is written. It looks to me like the mkv is finishing properly in the Media Conch report. I usually use q to quit or just close the video window.

I put a test file with all the outputs here (unexpectedly getting an empty eia608 text and an scc file too) : https://drive.google.com/drive/folders/1cKx5SbVGIz2ab5PnR3tcORNwSJSsNE8t?usp=sharing

Here is the Terminal output:

smpl-video2$ vrecord test       
No devices found.
Summary: FFV1 version 3/matroska yuv422p10 file from ntsc component analog.  Frame MD5s=false, QCTools XML=No. Inputs recorded to /Volumes/Ernie/test_pm.mkv and Auxiliary Files created in /Volumes/Ernie. 
Hit enter to start recording

Close the playback window to stop recording.
Guessed Channel Layout for Input Stream #0.0 : 7.1
Input #0, matroska,webm, from 'pipe:':
  Metadata:
    ENCODER         : Lavf59.27.100
  Duration: N/A, start: 0.000000, bitrate: 9216 kb/s
  Stream #0:0: Audio: pcm_s24le, 48000 Hz, 8 channels, s32 (24 bit), 9216 kb/s
    Metadata:
      ENCODER         : Lavc59.37.100 pcm_s24le
  Stream #0:1: Video: v210 (v210 / 0x30313276), yuv422p10le(bottom first), 720x486, 29.97 fps, 29.97 tbr, 1k tbn
No such filter: ''
[Parsed_pan_5 @ 0x600001d88370] [SWR @ 0x140090000] Input channel layout has a different number of channels than the number of used channels, ignoring layout
[Parsed_pan_4 @ 0x600001d882c0] [SWR @ 0x1400a8000] Input channel layout has a different number of channels than the number of used channels, ignoring layout
 143.31 M-V:  0.001 fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0   
av_interleaved_write_frame(): Broken pipe
Error writing trailer of pipe:: Broken pipe
Error closing file pipe:: Broken pipe
mv: /Volumes/Ernie/test_pm_vrecord_input.log: set owner/group (was: 503/0): Operation not permitted
mv: /Volumes/Ernie/test_pm_frame_eia608data.txt: set owner/group (was: 503/0): Operation not permitted
Checking file conformance against FFV1 video policy...
 2024-07-31T17:38:54 - File did not pass vrecord policy check for FFV1 video and may not conform to digital preservation standards. Try another file?
 2024-07-31T17:38:54 - See /Volumes/Ernie/test_pm_mediaconchreport.xml for a full MediaConch policy report.
Vrecord is attaching logs to your Matroska file:
The file is being analyzed.
The changes are written to the file.
Done.
The file is being analyzed.
The changes are written to the file.
Done.
Vrecord is done attaching logs to your Matroska file!
smpl-video2$ 
DSohl commented 1 month ago

HI, @dericed - the prompt you gave to rewrap the file was unsuccessful. Here's what I get:

(base) /Users/medialab
≈:≈ ffmpeg /Users/medialab/Desktop/JPC/20240801/Test/test1.mkv -map 0 -c copy nice.mkv
ffmpeg version 7.0.1 Copyright (c) 2000-2024 the FFmpeg developers
  built with Apple clang version 15.0.0 (clang-1500.3.9.4)
  configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/7.0.1 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags='-Wl,-ld_classic' --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libharfbuzz --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon
  libavutil      59.  8.100 / 59.  8.100
  libavcodec     61.  3.100 / 61.  3.100
  libavformat    61.  1.100 / 61.  1.100
  libavdevice    61.  1.100 / 61.  1.100
  libavfilter    10.  1.100 / 10.  1.100
  libswscale      8.  1.100 /  8.  1.100
  libswresample   5.  1.100 /  5.  1.100
  libpostproc    58.  1.100 / 58.  1.100
Output #0, matroska, to '/Users/medialab/Desktop/JPC/20240801/Test/test1.mkv':
[out#0/matroska @ 0x6000034783c0] Output file does not contain any stream
Error opening output file /Users/medialab/Desktop/JPC/20240801/Test/test1.mkv.
Error opening output files: Invalid argument

Did I do that wrong? like, am I being too literal by using "nice.mkv"

dericed commented 1 month ago

you can name the output as you want, but you're missing the input flag. try ffmpeg -i /Users/medialab/Desktop/JPC/20240801/Test/test1.mkv -map 0 -c copy nice.mkv

libbyhopfauf commented 1 month ago

@dericed @michaelangeletti @DSohl I am experiencing the same issues with the latest release of vrecord (2024-07-09). I'm running macOS Monterey 12.4 on a MacMini (M1, 2020) and using a Blackmagic UltraStudio HD Mini.

Running vrecord -e results in "no devices found" warning. Screen Shot 2024-08-13 at 1 18 44 PM

For all captures (regardless of ending the capture by exiting out of the playback window or setting a duration and letting it exit on its own), I receive an error in the output below the video stream description (No such filter: ''), and then the policy check fails after the file is written. Screen Shot 2024-08-13 at 1 44 24 PM

It looks to me like the MKV is finishing properly in the MediaConch report, but the report looks a little wonky (randomly has "&gt;=" sprinkled throughout).

<?xml version="1.0" encoding="UTF-8"?>
<MediaConch xmlns="https://mediaarea.net/mediaconch" xmlns:mmt="https://mediaarea.net/micromediatrace" xmlns:mi="https://mediaarea.net/mediainfo" version="0.3" verbosity="0">
  <media ref="/Volumes/Mac1_HD/PIs/BIHM/2015.1.65/2015.1.65.mkv">
    <policy name="Check validity of FFV1 Matroska and Quicktime files" type="and" level="" rules_run="21" fail_count="2" warn_count="0" info_count="0" pass_count="19" outcome="fail">
      <description>This policy tests FFV1 Matroska and Quicktime files made using vrecord and checks their validity</description>
      <rule name="Is the video format FFV1?" value="Format" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:Format='FFV1'" outcome="pass"/>
      <rule name="FFV1 is version 3.4 or later?" value="Format_Version" tracktype="Video" operator="&gt;=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:Format_Version&gt;='3.4'" outcome="pass"/>
      <rule name="FFV1 is encoded in GOP size of 1?" value="Format_Settings_GOP" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:Format_Settings_GOP='N=1'" outcome="pass"/>
      <rule name="Is the frame rate mode constant?" value="FrameRate_Mode" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:FrameRate_Mode='CFR'" outcome="pass"/>
      <rule name="Is the color space YUV?" value="ColorSpace" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:ColorSpace='YUV'" outcome="pass"/>
      <rule name="Is the chroma subsampling 4:2:2?" value="ChromaSubsampling" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:ChromaSubsampling='4:2:2'" outcome="pass"/>
      <rule name="Is the video interlaced?" value="ScanType" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:ScanType='Interlaced'" outcome="pass"/>
      <rule name="Is the compression mode lossless?" value="Compression_Mode" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:Compression_Mode='Lossless'" outcome="pass"/>
      <rule name="Is max slice count at least 4?" value="extra/MaxSlicesCount" tracktype="Video" operator="&gt;=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:extra/mi:MaxSlicesCount&gt;='4'" requested="4" actual="" outcome="fail"/>
      <rule name="Is error detection type per slice?" value="extra/ErrorDetectionType" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:extra/mi:ErrorDetectionType='Per slice'" outcome="pass"/>
      <rule name="Is the video stream first?" value="StreamOrder" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:StreamOrder='0'" outcome="pass"/>
      <rule name="Is the colour description present?" value="colour_description_present" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:colour_description_present='Yes'" outcome="pass"/>
      <rule name="Are the transfer characteristics BT.709?" value="transfer_characteristics" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:transfer_characteristics='BT.709'" outcome="pass"/>
      <rule name="Is the audio stream on track 2?" value="StreamOrder" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:StreamOrder='1'" outcome="pass"/>
      <rule name="Is the audio bit depth 24?" value="BitDepth" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:BitDepth='24'" outcome="pass"/>
      <rule name="Is the sample rate 48kHz?" value="SamplingRate" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:SamplingRate='48000'" outcome="pass"/>
      <policy name="Is the container Matroska or Quicktime?" type="or" level="" rules_run="2" fail_count="2" warn_count="0" info_count="0" pass_count="0" outcome="fail">
        <policy name="Is it good Matroska?" type="and" level="" rules_run="3" fail_count="1" warn_count="0" info_count="0" pass_count="2" outcome="fail">
          <policy name="Is it new Matroska with an UUID?" type="and" level="" rules_run="5" fail_count="0" warn_count="0" info_count="0" pass_count="5" outcome="pass">
            <rule name="Is it Matroska?" value="Format" tracktype="General" operator="=" xpath="mi:MediaInfo/mi:track[@type='General']/mi:Format='Matroska'" outcome="pass"/>
            <rule name="Matroska version 4 or greater?" value="Format_Version" tracktype="General" operator="&gt;=" xpath="mi:MediaInfo/mi:track[@type='General']/mi:Format_Version&gt;='4'" outcome="pass"/>
            <rule name="Unique ID is present?" value="UniqueID" tracktype="General" xpath="mi:MediaInfo/mi:track[@type='General']/mi:UniqueID" outcome="pass"/>
            <rule name="Is the FFV1 Codec ID V_MS/VFW/FOURCC / FFV1?" value="CodecID" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:CodecID='V_MS/VFW/FOURCC / FFV1'" outcome="pass"/>
            <policy name="Is the audio Codec ID A_PCM/INT/LIT or A_FLAC?" type="or" level="" rules_run="2" fail_count="1" warn_count="0" info_count="0" pass_count="1" outcome="pass">
              <rule name="Is the Codec ID A_PCM/INT/LIT?" value="CodecID" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:CodecID='A_PCM/INT/LIT'" outcome="pass"/>
              <rule name="Is the Codec ID A_FLAC?" value="CodecID" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:CodecID='A_FLAC'" requested="A_FLAC" actual="A_PCM/INT/LIT" outcome="fail"/>
            </policy>
          </policy>
          <policy name="Is it NTSC SD or PAL SD?" type="or" level="" rules_run="2" fail_count="1" warn_count="0" info_count="0" pass_count="1" outcome="pass">
            <description>Quick test for NTSC vs Pal to validate matrix coefficients. Full NTSC vs PAL test below</description>
            <policy name="Is it NTSC?" type="and" level="" rules_run="1" fail_count="0" warn_count="0" info_count="0" pass_count="1" outcome="pass">
              <rule name="NTSC FrameRate 29.970?" value="FrameRate" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:FrameRate='29.970'" outcome="pass"/>
            </policy>
            <policy name="Is it PAL?" type="and" level="" rules_run="2" fail_count="2" warn_count="0" info_count="0" pass_count="0" outcome="fail">
              <description>The PAL matrix coefficients value is reported differently depending on container. This test validates for Matroska</description>
              <rule name="PAL FrameRate 25.000?" value="FrameRate" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:FrameRate='25.000'" requested="25.000" actual="29.970" outcome="fail"/>
              <policy name="Are the matrix coefficients BT.470 System B, BT.470 System G?" type="or" level="" rules_run="2" fail_count="2" warn_count="0" info_count="0" pass_count="0" outcome="fail">
                <rule name="Are the matrix coefficients BT.470 System B, BT.470 System G?" value="matrix_coefficients" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:matrix_coefficients='BT.470 System B, BT.470 System G'" requested="BT.470 System B, BT.470 System G" actual="BT.601" outcome="fail"/>
                <rule name="Are the matrix coefficients BT.470 System B/G?" value="matrix_coefficients" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:matrix_coefficients='BT.470 System B/G'" requested="BT.470 System B/G" actual="BT.601" outcome="fail"/>
              </policy>
            </policy>
          </policy>
          <policy name="Has Matroska finished writing?" type="and" level="" rules_run="4" fail_count="4" warn_count="0" info_count="0" pass_count="0" outcome="fail">
            <rule name="Duration is greater than zero?" scope="mmt" value="Segment/Info/Duration/Data" operator="&gt;" xpath="mmt:MicroMediaTrace/mmt:b[@n='Segment']/mmt:b[@n='Info']/mmt:b[@n='Duration']/mmt:d&gt;'0'" requested="0" actual="" outcome="fail"/>
            <rule name="SeekHead is present?" scope="mmt" value="Segment/SeekHead/" xpath="mmt:MicroMediaTrace/mmt:b[@n='Segment']/mmt:b[@n='SeekHead']" actual="" outcome="fail"/>
            <rule name="Cues is present?" scope="mmt" value="Segment/Cues/" xpath="mmt:MicroMediaTrace/mmt:b[@n='Segment']/mmt:b[@n='Cues']" actual="" outcome="fail"/>
            <policy name="Select Top-Level Elements have CRCs?" type="and" level="" rules_run="6" fail_count="6" warn_count="0" info_count="0" pass_count="0" outcome="fail">
              <rule name="SeekHead CRC-32 is present?" scope="mmt" value="Segment/SeekHead/CRC-32/" xpath="mmt:MicroMediaTrace/mmt:b[@n='Segment']/mmt:b[@n='SeekHead']/mmt:b[@n='CRC-32']" actual="" outcome="fail"/>
              <rule name="Info CRC-32 is present?" scope="mmt" value="Segment/Info/CRC-32/" xpath="mmt:MicroMediaTrace/mmt:b[@n='Segment']/mmt:b[@n='Info']/mmt:b[@n='CRC-32']" actual="" outcome="fail"/>
              <rule name="Tracks CRC-32 is present?" scope="mmt" value="Segment/Tracks/CRC-32/" xpath="mmt:MicroMediaTrace/mmt:b[@n='Segment']/mmt:b[@n='Tracks']/mmt:b[@n='CRC-32']" actual="" outcome="fail"/>
              <rule name="Cluster CRC-32 is present?" scope="mmt" value="Segment/Cluster/CRC-32/" xpath="mmt:MicroMediaTrace/mmt:b[@n='Segment']/mmt:b[@n='Cluster']/mmt:b[@n='CRC-32']" actual="" outcome="fail"/>
              <rule name="Cues CRC-32 is present?" scope="mmt" value="Segment/Cues/CRC-32/" xpath="mmt:MicroMediaTrace/mmt:b[@n='Segment']/mmt:b[@n='Cues']/mmt:b[@n='CRC-32']" actual="" outcome="fail"/>
              <rule name="Tags CRC-32 is present?" scope="mmt" value="Segment/Tags/CRC-32/" xpath="mmt:MicroMediaTrace/mmt:b[@n='Segment']/mmt:b[@n='Tags']/mmt:b[@n='CRC-32']" actual="" outcome="fail"/>
            </policy>
          </policy>
        </policy>
        <policy name="Is it good Quicktime?" type="and" level="" rules_run="8" fail_count="5" warn_count="0" info_count="0" pass_count="3" outcome="fail">
          <rule name="Is the file extension mov?" value="FileExtension" tracktype="General" operator="=" xpath="mi:MediaInfo/mi:track[@type='General']/mi:FileExtension='mov'" requested="mov" actual="mkv" outcome="fail"/>
          <rule name="Is the format MPEG-4?" value="Format" tracktype="General" operator="=" xpath="mi:MediaInfo/mi:track[@type='General']/mi:Format='MPEG-4'" requested="MPEG-4" actual="Matroska" outcome="fail"/>
          <rule name="Is the format profile QuickTime?" value="Format_Profile" tracktype="General" operator="=" xpath="mi:MediaInfo/mi:track[@type='General']/mi:Format_Profile='QuickTime'" requested="QuickTime" actual="" outcome="fail"/>
          <rule name="Is the FFV1 Codec ID FFV1?" value="CodecID" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:CodecID='FFV1'" requested="FFV1" actual="V_MS/VFW/FOURCC / FFV1" outcome="fail"/>
          <rule name="Is the PCM Codec ID in24?" value="CodecID" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:CodecID='in24'" requested="in24" actual="A_PCM/INT/LIT" outcome="fail"/>
          <rule name="Is the endianness Little?" value="Format_Settings_Endianness" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:Format_Settings_Endianness='Little'" outcome="pass"/>
          <rule name="Is the signedness signed?" value="Format_Settings_Sign" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:Format_Settings_Sign='Signed'" outcome="pass"/>
          <policy name="Is it NTSC SD or PAL SD?" type="or" level="" rules_run="2" fail_count="1" warn_count="0" info_count="0" pass_count="1" outcome="pass">
            <policy name="Is it NTSC?" type="and" level="" rules_run="1" fail_count="0" warn_count="0" info_count="0" pass_count="1" outcome="pass">
              <rule name="NTSC FrameRate 29.970?" value="FrameRate" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:FrameRate='29.970'" outcome="pass"/>
            </policy>
            <policy name="Is it PAL?" type="and" level="" rules_run="2" fail_count="1" warn_count="0" info_count="0" pass_count="1" outcome="fail">
              <description>The PAL matrix coefficients value is reported differently depending on container. This test validates for Quicktime</description>
              <rule name="PAL FrameRate 25.000?" value="FrameRate" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:FrameRate='25.000'" requested="25.000" actual="29.970" outcome="fail"/>
              <rule name="Are the matrix coefficients BT.601?" value="matrix_coefficients" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:matrix_coefficients='BT.601'" outcome="pass"/>
            </policy>
          </policy>
        </policy>
      </policy>
      <policy name="Is the video bit depth 8 or 10?" type="or" level="" rules_run="2" fail_count="1" warn_count="0" info_count="0" pass_count="1" outcome="pass">
        <rule name="Is the video bit depth 8?" value="BitDepth" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:BitDepth='8'" requested="8" actual="10" outcome="fail"/>
        <rule name="Is the video bit depth 10?" value="BitDepth" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:BitDepth='10'" outcome="pass"/>
      </policy>
      <policy name="Is it NTSC SD or PAL SD?" type="or" level="" rules_run="2" fail_count="1" warn_count="0" info_count="0" pass_count="1" outcome="pass">
        <policy name="Is it NTSC?" type="and" level="" rules_run="6" fail_count="0" warn_count="0" info_count="0" pass_count="6" outcome="pass">
          <rule name="NTSC height 486?" value="Height" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:Height='486'" outcome="pass"/>
          <rule name="NTSC width 720?" value="Width" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:Width='720'" outcome="pass"/>
          <rule name="NTSC FrameRate 29.970?" value="FrameRate" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:FrameRate='29.970'" outcome="pass"/>
          <rule name="NTSC scan order bottom field first?" value="ScanOrder" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:ScanOrder='BFF'" outcome="pass"/>
          <rule name="NTSC colour primaries BT.601 NTSC?" value="colour_primaries" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:colour_primaries='BT.601 NTSC'" outcome="pass"/>
          <rule name="Are the matrix coefficients BT.601?" value="matrix_coefficients" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:matrix_coefficients='BT.601'" outcome="pass"/>
        </policy>
        <policy name="Is it PAL?" type="and" level="" rules_run="5" fail_count="4" warn_count="0" info_count="0" pass_count="1" outcome="fail">
          <rule name="PAL height 576?" value="Height" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:Height='576'" requested="576" actual="486" outcome="fail"/>
          <rule name="PAL Width 720?" value="Width" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:Width='720'" outcome="pass"/>
          <rule name="PAL FrameRate 25.000?" value="FrameRate" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:FrameRate='25.000'" requested="25.000" actual="29.970" outcome="fail"/>
          <rule name="PAL scan order top field first?" value="ScanOrder" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:ScanOrder='TFF'" requested="TFF" actual="BFF" outcome="fail"/>
          <rule name="PAL colour primaries BT.601 PAL?" value="colour_primaries" tracktype="Video" operator="=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:colour_primaries='BT.601 PAL'" requested="BT.601 PAL" actual="BT.601 NTSC" outcome="fail"/>
        </policy>
      </policy>
      <policy name="Is the audio PCM or FLAC?" type="or" level="" rules_run="2" fail_count="1" warn_count="0" info_count="0" pass_count="1" outcome="pass">
        <rule name="Is the audio PCM?" value="Format" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:Format='PCM'" outcome="pass"/>
        <rule name="Is the audio FLAC?" value="Format" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:Format='FLAC'" requested="FLAC" actual="PCM" outcome="fail"/>
      </policy>
      <policy name="1 or 2 channels of audio?" type="or" level="" rules_run="2" fail_count="1" warn_count="0" info_count="0" pass_count="1" outcome="pass">
        <rule name="1 channel of audio?" value="Channels" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:Channels='1'" requested="1" actual="2" outcome="fail"/>
        <rule name="2 channels of audio?" value="Channels" tracktype="Audio" operator="=" xpath="mi:MediaInfo/mi:track[@type='Audio']/mi:Channels='2'" outcome="pass"/>
      </policy>
    </policy>
  </media>
</MediaConch>

According to the vrecord generated MediaConch report, it looks like the fails are happening in with the following rules:

<policy name="Is the container Matroska or Quicktime?" type="or" level="" rules_run="2" fail_count="2" warn_count="0" info_count="0" pass_count="0" outcome="fail"> <policy name="Is it good Matroska?" type="and" level="" rules_run="3" fail_count="1" warn_count="0" info_count="0" pass_count="2" outcome="fail"> Which is weird because the container is MKV.

<rule name="Is max slice count at least 4?" value="extra/MaxSlicesCount" tracktype="Video" operator="&gt;=" xpath="mi:MediaInfo/mi:track[@type='Video']/mi:extra/mi:MaxSlicesCount&gt;='4'" requested="4" actual="" outcome="fail"/> Which is weird because I always have it set to 16.

When I run the same video through the Media Conch GUI using the example FFV1 MKV policy, it passes everything except the aspect ratio (which is likely due to what @dericed mentioned regarding the new recommended aspect ratio setting). But all of the other test that failed when vrecord ran them passed. Screen Shot 2024-08-13 at 12 00 27 PM

I also noticed that the ffmpeg dependencies are stored in a different place than is mentioned here: Issue #788 (but maybe that's a separate issue/no longer where they are supposed to be).

DSohl commented 3 weeks ago

Checking in: are you still having these issues @michaelangeletti and @libbyhopfauf ?

@dericed - I appreciate the rewrap directions, and it seems to be working. Any inkling where my setup's gone wrong? It'd be splendid if there's anything that I can do to remove that extra step.

(cc: @BleakleyMcD )

dericed commented 3 weeks ago

Hey @DSohl, I think you just need an update, since that DAR tests were removed before the last release, see https://github.com/amiaopensource/vrecord/commit/5b9fa8b3ddf7e040e353cb1c4f4d4fd1962b07ea

michaelangeletti commented 2 weeks ago

Hi @DSohl ! This morning, I uninstalled BMD Desktop Video, vrecord and Homebrew, and reinstalled everything. I wanted to start fresh. I'm using vrecord 2024-08-23. I'm no longer getting 'no devices found', but files are still not passing the policy check:

smpl@li-sm-7283-a216 ~ % vrecord mangelet_vrecord_v2024-08-23_betacamsp_test
Summary: FFV1 version 3/matroska yuv422p10 file from ntsc component analog.  Frame MD5s=false, QCTools XML=No. Inputs recorded to /Volumes/Bert/mangelet_vrecord_v2024-08-23_betacamsp_test_pm.mkv and Auxiliary Files created in /Volumes/Bert. 
Hit enter to start recording

Close the playback window to stop recording.
Guessed Channel Layout for Input Stream #0.0 : 7.1
Input #0, matroska,webm, from 'pipe:':
  Metadata:
    ENCODER         : Lavf59.27.100
  Duration: N/A, start: 0.000000, bitrate: 9216 kb/s
  Stream #0:0: Audio: pcm_s24le, 48000 Hz, 8 channels, s32 (24 bit), 9216 kb/s
    Metadata:
      ENCODER         : Lavc59.37.100 pcm_s24le
  Stream #0:1: Video: v210 (v210 / 0x30313276), yuv422p10le(bottom first), 720x486, 29.97 fps, 29.97 tbr, 1k tbn
    Metadata:
      TIMECODE        : 00:59:01;17
[Parsed_pan_0 @ 0x6000037988f0] Pure channel mapping detected: 0 1 2 3
[Parsed_pan_0 @ 0x60000379ca50] Pure channel mapping detected: 0 1 2 3
[Parsed_pan_6 @ 0x600001ac8630] [SWR @ 0x1392b0000] Input channel layout has a different number of channels than the number of used channels, ignoring layout
[Parsed_pan_5 @ 0x600001ac84d0] [SWR @ 0x1392c8000] Input channel layout has a different number of channels than the number of used channels, ignoring layout
  66.25 A-V:  0.079 fd=  64 aq=    0KB vq=    0KB sq=    0B f=0/0   
av_interleaved_write_frame(): Broken pipe
Error writing trailer of pipe:: Broken pipe
Error closing file pipe:: Broken pipe
mv: /Volumes/Bert/mangelet_vrecord_v2024-08-23_betacamsp_test_pm_vrecord_input.log: set owner/group (was: 503/0): Operation not permitted
mv: /Volumes/Bert/mangelet_vrecord_v2024-08-23_betacamsp_test_pm_rp188ltc_frame_timecodes.txt: set owner/group (was: 503/0): Operation not permitted
Checking file conformance against FFV1 video policy...
 2024-08-26T08:32:18 - File did not pass vrecord policy check for FFV1 video and may not conform to digital preservation standards. Try another file?
 2024-08-26T08:32:19 - See /Volumes/Bert/mangelet_vrecord_v2024-08-23_betacamsp_test_pm_mediaconchreport.xml for a full MediaConch policy report.
Vrecord is attaching logs to your Matroska file:
The file is being analyzed.
The changes are written to the file.
Done.
The file is being analyzed.
The changes are written to the file.
Done.
Vrecord is done attaching logs to your Matroska file!
smpl@li-sm-7283-a216 ~ % 

The set of files from my test are available here.

DSohl commented 2 weeks ago

Hi, @dericed - I ran brew update and brew upgrade and this is everything that appears in Terminal when I end the recording:

av_interleaved_write_frame(): Broken pipe
Error writing trailer of pipe:: Broken pipe
Error closing file pipe:: Broken pipe
Checking file conformance against FFV1 video policy...
 2024-08-26T10:54:46 - File did not pass vrecord policy check for FFV1 video and may not conform to digital preservation standards. Try another file?
 2024-08-26T10:54:46 - See /Users/medialab/Desktop/JPC/20240826/JPC_AV_01598/JPC_AV_01598_ffv1_mediaconchreport.xml for a full MediaConch policy report.
Vrecord is attaching logs to your Matroska file:
The file is being analyzed.
The changes are written to the file.
Done.
The file is being analyzed.
The changes are written to the file.
Done.
Vrecord is done attaching logs to your Matroska file!

@michaelangeletti how are you proceeding? Are you keeping the capture as your archival master copy, or remapping it? Or something else?

michaelangeletti commented 2 weeks ago

@DSohl , for the time being, I'm keeping the files as they are, but I'm working on a limited collection of tapes that will get prepped for accessioning into our repository in the coming weeks. I may decide to re-wrap them in batches before accessioning. The missing crc values are a bummer, but the files still are still making it through the rest of the processes in our workflow without problems. But I am curious to know what it is about our installations that's causing it.

dericed commented 2 weeks ago

Hey @DSohl, can you send /Users/medialab/Desktop/JPC/20240826/JPC_AV_01598/JPC_AV_01598_ffv1_mediaconchreport.xml. Also how are you going about stopping the recording?

michaelangeletti commented 2 weeks ago

Here is mine, @dericed mangelet_vrecord_v2024-08-23_betacamsp_test_pm_mediaconchreport.zip

Like @libbyhopfauf , mine has "&gt;=" sprinkled throughout

DSohl commented 2 weeks ago

@dericed I stop the recording via the esc key.

Like @libbyhopfauf and @michaelangeletti, I've got several instances of "&gt;="

Here's the sidecar files for the test recording I made the A.M. JPC_AV_01598.zip

dericed commented 2 weeks ago

@DSohl and could you also go to the Config tab and copy/paste back what's in the Environment box?

DSohl commented 2 weeks ago

@dericed sure thing!

VRECORD_VARS_FILE="/tmp/v__opt_homebrew_bin_vrecord_variables.txt"
OS_TYPE="macOS"
RESOURCE_PATH="/opt/homebrew/opt/vrecord"
DEFAULTFONT="/System/Library/Fonts/Supplemental/Andale Mono.ttf"
CORE_COUNT="12"
OPEN_COMMAND="open"
ZCAT_COMMAND="gzcat"
COMPUTER_MODEL_NAME="Mac mini"
DIR_SELECTION_DIALOG="Select an existing folder (or drag/drop one below). File System/Volumes for external media."
GTKDIALOGBIN="/opt/homebrew/bin/gtkdialog"
COMPUTER_MODEL_ID="Mac14,12"
COMPUTER_PROCESSOR_NAME=""
COMPUTER_PROCESSOR_SPEED=""
COMPUTER_PROCESSOR_COUNT=""
COMPUTER_MEMORY="32 GB"
COMPUTER_SERIAL="H9HDW53JMV"
CAPTURELOGSUFFIX="_vrecord_input.log"
TIMECODELOGSUFFIX="_frame_timecodes.txt"
BREW_PREFIX="/opt/homebrew/opt/ffmpegdecklink"
FFMPEG_BIN="/opt/homebrew/opt/ffmpegdecklink/bin/ffmpeg-dl"
FFPLAY_BIN="/opt/homebrew/opt/ffmpegdecklink/bin/ffplay-dl"
FFPROBE_BIN="/opt/homebrew/opt/ffmpegdecklink/bin/ffprobe-dl"
dericed commented 2 weeks ago

hmmmm, and the terminal output when you run just /opt/homebrew/opt/ffmpegdecklink/bin/ffmpeg-dl?

DSohl commented 2 weeks ago

≈:≈ /opt/homebrew/opt/ffmpegdecklink/bin/ffmpeg-dl ffmpeg version 5.1.4 Copyright (c) 2000-2023 the FFmpeg developers built with Apple clang version 15.0.0 (clang-1500.3.9.4) configuration: --prefix=/opt/homebrew/Cellar/ffmpegdecklink/5.1.4 --disable-shared --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libfreetype --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libsnappy --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-libfontconfig --disable-htmlpages --disable-libjack --disable-indev=jack --enable-neon --enable-nonfree --enable-decklink --extra-cflags=-I/opt/homebrew/include --extra-ldflags=-L/opt/homebrew/include libavutil 57. 28.100 / 57. 28.100 libavcodec 59. 37.100 / 59. 37.100 libavformat 59. 27.100 / 59. 27.100 libavdevice 59. 7.100 / 59. 7.100 libavfilter 8. 44.100 / 8. 44.100 libswscale 6. 7.100 / 6. 7.100 libswresample 4. 7.100 / 4. 7.100 libpostproc 56. 6.100 / 56. 6.100 Hyper fast Audio and Video encoder usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'

dericed commented 2 weeks ago

This all seems right. Closing ffplay (via hitting the red-close-window button or via the ESC key), should send a SIGPIPE command to ffmpeg which will have it finalizing the container. Here's it's ending the write more abruptly, trying to think about why. Does closing ffplay via the red corner button finish differently?

DSohl commented 2 weeks ago

ESC and closing with the corner button yield the same results.

privatezero commented 2 weeks ago

I have a PR that I think might address this: https://github.com/amiaopensource/vrecord/pull/832 Could people test and see if that works on their end?

EmCNabs commented 2 weeks ago

Same issues here...vrecord session ending with:

Checking file conformance against FFV1 video policy...
 2024-08-27T14:20:52 - File did not pass vrecord policy check for FFV1 video and 
may not conform to digital preservation standards. Try another file?
 2024-08-27T14:20:52 - See /Users/medialab/Desktop/01_vrecord_Capture/00_Daily_TEST_30Seconds/TEST3min_
BlackMagicFix_ffv1_mediaconchreport.xml for a full MediaConch policy report.

Like @DSohl, @libbyhopfauf, & @michaelangeletti I have a couple instances of &gt;= in the XML report. On mine they show up in the responses for rules: "FFV1 is version 3.4 or later?" ; "Is max slice count at least 4?" ; "Matroska version 4 or greater?" mainly after operator =

Here is the XML for the test I ran today TEST3min_BlackMagicFix.zip

I was also getting the "No devices found" line on starting vrecord, but same as @michaelangeletti I uninstalled and then reinstalled the latest Blackmagic Desktop Video Setup. Then after going into System Preferences/Privacy & Security and "allowing" for Desktop Video to work, the "No Devices Found" message no longer appeared.

iamdamosuzuki commented 2 weeks ago

Just tested #832 and it got rid of the FFV1 policy error

EmCNabs commented 2 weeks ago

Just tested #832 and it got rid of the FFV1 policy error

Testing #832 worked for me as well!

And saw that the source Policy XML includes the &gt;= I am seeing in my reports, so glad to know that is not an error that will cause problems.

dericed commented 2 weeks ago

Yay, IIUC this issue is still open as @DSohl has an instance where the recording process doesn't end correctly.

dericed commented 2 weeks ago

Hey @DSohl can you brew update ; brew upgrade and retry?

DSohl commented 2 weeks ago

@dericed - Hot dog! It's a success! 2024-08-29T09:55:43 - File passed policy check for FFV1 video.

Many thanks to everyone who chimed in. Unless there's anything else going on here, I'll close this as "resolved."