تخطي إلى المحتوى الرئيسي
الدعم
تسجيل الدخول باستخدام حساب Microsoft
تسجيل الدخول أو إنشاء حساب.
مرحباً،
تحديد استخدام حساب مختلف!
لديك حسابات متعددة
اختر الحساب الذي تريد تسجيل الدخول باستخدامه.

الملخص

يعالج هذا التحديث مشكلة ترميز بيانات التعريف التي تتسبب في عدم تشغيل ملفات الموسيقى Free Lossless Audio Codec (FLAC) إذا تم تغيير عنوانها أو مغنيها أو بيانات تعريف أخرى. 

السبب

قد تحدث هذه المشكلة عندما تحتوي ملفات FLAC على إطار ID3 قبل رأس FLAC. يحتوي إطار ID3 على بيانات تعريف مثل العنوان والفنان. افترض معالج الخاصية FLAC أن جميع ملفات FLAC بدأت باستخدام fLaC لرمز البدء 4 byte ولم تأخذ في الاعتبار إطار ID3 في بداية الملف. وبالتالي، سيتم الكتابة فوق إطار ID3 بدون أن يعرض fLaC رمز البدء الملف غير القابل ل التشغيل.

الحل

لمنع هذه المشكلة لملفات موسيقى FLAC المستقبلية، قم بتثبيت 25 مايو 2021 — KB5003214 (الإصدارات OS 19041.1013 و19042.1013 و19043.1013) Preview.

لإصلاح ملفات موسيقى FLAC المتأثرة، تشغيل البرنامج النصي التالي من PowerShell.

هام: لن يستعيد هذا البرنامج النصي بيانات التعريف المفقودة التي تم تخزينها في إطار ID3. ومع ذلك، فهو يجعل الملف قابلا للعب مرة أخرى.

  1. افتح "المفكرة".

  2. نسخ البرنامج النصي التالي ولصقه في المفكرة:

    # Copyright 2021 Microsoft

    # سيصلح هذا البرنامج النصي ملف FLAC الذي تالف بواسطة Media Foundation في إشارة إلى KB5003430.

    # راجع KB5003430 للحصول على مزيد من المعلومات

    param(

    [parameter(Mandatory=$true,

    HelpMessage="المسار إلى ملف FLAC الذي تالف بواسطة Media Foundation"،

    ValueFromRemainingArguments=$true)]

    [ValidateScript({ -not [String]::IsNullOrEmpty($_) -and (Test-Path $_) })]

    [String]$File

    )

    # نحتاج إلى عمل أي أخطاء عند وجود أي أخطاء في حاضنة الملفات الحالية

    $FileDirectory = Split-Path -حل $File

    $Filename = Split-Path -ورقة -حل $File

    $FullPath = Join-Path -حل $FileDirectory $Filename

    $Filename = [String]::Format("Backup_{0:yyyyMMdd_hhmmss}_{1}", [DateTime]::Now, $Filename)

    $BackupLocation = Join-Path $FileDirectory $Filename

    Write-Output "أداة إصلاح MICROSOFT FLAC. ستصلح هذه الأداة ملف صوت FLAC الذي كان تالفا عند تحرير تفاصيله."

    Write-Output "الملف المتأثر: $FullPath"

    Write-Output "سيتم إنشاء نسخة احتياطية للملف: $BackupLocation"

    Write-Output "هل ترغب في المتابعة؟"

    $choice=$host.ui.PromptForChoice("تصحيح برنامج FLAC النصي"، "هل تريد المتابعة"، ('&نعم'، '&لا')، 1)

    الدالة ParseStreamInfoMetadataBlock([System.IO.FileStream]$stream)

    {

    $blockType = $stream. ReadByte()

    $lastBlock = ($blockType -shr 7) -ne 0

    $blockType = $blockType -band 0x7F

    إذا ($blockType -ne 0)

    {

    إرجاع $false

    }

    $blockSize = (($stream. ReadByte() -shl 16) -bor ($stream. ReadByte() -shl 8) -$stream. ReadByte())

    إذا ($blockSize -lt 34)

    {

    إرجاع $false

    }

    $minAudioBlockSize = ($stream. ReadByte() -shl 8) -$stream. ReadByte()

    $maxAudioBlockSize = ($stream. ReadByte() -shl 8) -$stream. ReadByte()

    إذا ($minAudioBlockSize -lt 16 -أو $maxAudioBlockSize -lt 16)

    {

    إرجاع $false

    }

    $minFrameSize = (($stream. ReadByte() -shl 16) -bor ($stream. ReadByte() -shl 8) -$stream. ReadByte())

    $maxFrameSize = (($stream. ReadByte() -shl 16) -bor ($stream. ReadByte() -shl 8) -$stream. ReadByte())

    $sampleInfo = (($stream. ReadByte() -shl 24) -bor ($stream. ReadByte() -shl 16) -bor ($stream. ReadByte() -shl 8) -$stream. ReadByte())

    $sampleRate = $sampleInfo -shr 12

    $channelCount = (($sampleInfo -shr 9) -band 0x7) + 1

    $bitsPerSample = (($sampleInfo -shr 4) -band 0x1F) + 1

    [UInt64]$sampleCount = (($stream. ReadByte() -shl 24) -bor ($stream. ReadByte() -shl 16) -bor ($stream. ReadByte() -shl 8) -$stream. ReadByte())

    $sampleCount = (([UInt64]$sampleInfo -band 0xF) -shl 32) -$sampleCount

    $MD 5HashBytes = New-Object بايت[] 16

    $stream. Read($MD 5HashBytes, 0, $MD 5HashBytes.Length)

    $MD 5Hash = [Guid]($MD 5HashBytes)

    إذا ($sampleRate -eq 0)

    {

    إرجاع $false

    }

    # يعني تمرير هذه الاختبارات أنه من المرجح أن يكون لدينا رأس معلومات دفق ويمكننا إعادة إنشاء الملف

    Write-Output "معلومات تدفق الملفات"

    Write-Output "معدل العينة: $sampleRate"

    Write-Output "قنوات الصوت: $channelCount"

    Write-Output "عمق العينة: $bitsPerSample"

    Write-Output "MD5 Audio Sample Hash: $MD 5Hash"

    إرجاع $true

    }

    إذا ($choice -eq 0)

    {

    Copy-Item $FullPath الوجهة $BackupLocation -Force

    $stream = [System.IO.File]::Open($FullPath, [System.IO.FileMode]::Open)

    $stream. Seek(4, [System.IO.SeekOrigin]::Begin)

    بينما ($stream. ReadByte() -eq 0) {}

    # نحتاج الآن إلى معرفة المكان الذي يبدأ فيه إطار بيانات تعريف FLAC صالح

    # من المرجح أننا نشير إلى آخر بايت من حجم العضو بحيث نسعى للخلف 4 بايت ونعيد المحاولة

    $flacDataStartPosition = $stream. الموضع - 4

    $stream. Seek($flacDataStartPosition, [System.IO.SeekOrigin]::Begin)

    بينما (-not(ParseStreamInfoMetadataBlock($stream)))

    {

    $flacDataStartPosition = $flacDataStartPosition + 1

    $stream. Seek($flacDataStartPosition, [System.IO.SeekOrigin]::Begin)

    }

    # إدراج رمز البدء

    $stream. Seek($flacDataStartPosition, [System.IO.SeekOrigin]::Begin)

    if (Test-Path "$FullPath.tmp")

    {

    Remove-Item "$FullPath.tmp"

    }

    $fixedStream = [System.IO.File]::Open("$FullPath.tmp", [System.IO.FileMode]::CreateNew)

    [byte[]]$startCode = [char[]]('f', 'L', 'a', 'C');

    $fixedStream.Write($startCode، 0، $startCode.Length)

    $stream. CopyTo($fixedStream)

    $stream. Close()

    $fixedStream.Close()

    Move-Item -Force "$FullPath.tmp" $FullPath

    }

  3. في القائمة ملف، انقر فوق حفظ.

  4. في مربع الحوار حفظ باسم، حدد موقع المجلد الذي تريد حفظ البرنامج النصي PowerShell فيه.

  5. في المربع اسم الملف، اكتب FixFlacFiles.ps1، غير المربع حفظ بنوع إلى المستندات النصية (*.txt) ثم انقر فوق حفظ.

  6. في Windows المستكشف، حدد موقع البرنامج النصي PowerShell الذي حفظته.

  7. انقر ب زر الماوس الأيمن فوق البرنامج النصي ثم انقر فوق تشغيل باستخدام PowerShell.

  8. عند المطالبة، اكتب اسم الملف لملف FLAC غير القابل لإعادة التشغيل، ثم اضغط على Enter.

هل تحتاج إلى مزيد من المساعدة؟

الخروج من الخيارات إضافية؟

استكشف مزايا الاشتراك، واستعرض الدورات التدريبية، وتعرف على كيفية تأمين جهازك، والمزيد.

تساعدك المجتمعات على طرح الأسئلة والإجابة عليها، وتقديم الملاحظات، وسماعها من الخبراء ذوي الاطلاع الواسع.

هل كانت المعلومات مفيدة؟

ما مدى رضاك عن جودة اللغة؟
ما الذي أثّر في تجربتك؟
بالضغط على "إرسال"، سيتم استخدام ملاحظاتك لتحسين منتجات Microsoft وخدماتها. سيتمكن مسؤول تكنولوجيا المعلومات لديك من جمع هذه البيانات. بيان الخصوصية.

نشكرك على ملاحظاتك!

×