Восстановление поврежденных записей m4a

4

Я использовал Ubuntu на своем школьном компьютере в этом году, я обычно записываю лекции, на которые не могу надеяться поспевать за профессором, у меня есть разрешение на это. Я использовал аудио-рекордер по умолчанию, который вы можете установить, sudo apt-get install audio-recorderпотому что он был самым простым в использовании. Ранее в семестре у них записи были в порядке. Но теперь они испорчены, как только запись сделана. Они в формате .m4a.

Я перепробовал много уроков, включая редактирование шестнадцатеричных данных записи, не повезло. Я не знаю, где начинается запись, так как, когда я пытаюсь сделать новую запись, она повреждена. Я попытался использовать ffmpeg, чтобы получить эту ошибку, moov atom not foundпоиск которой не помогает решить проблему. Или я получаю сообщение об ошибке, в protocol not found. Did you mean in.m4a?котором указано имя файла, который я набрал правильно. ffmpeg возвращает ошибку «протокол не найден». Затем он говорит, что вы имеете в виду файл, который я вставил. Faad возвращает эту ошибку: Unable to find correct AAC sound track in the MP4 file.Я также попытался восстановить MP4, и он работает, поэтому файл можно исправить. Но это будет стоить 86 долларов, и мне нужно исправить 6 записей.

Я попытался удалить и переустановить ограниченные кодеки.

Любая помощь будет принята с благодарностью.

KeenanKer
источник
1
drive.google.com/file/d/1pt2op6vgr0Kvwi96wKdDoY0COI4vJUUN/… Надеюсь, с ссылкой на диск все в порядке
KeenanKer
1
drive.google.com/open?id=1QN90YlEOllGyWdG3azZu_3OhxLhNZQ3f Вот меньший, если он слишком большой.
KeenanKer

Ответы:

4

Смотрите здесь , внизу страницы.
Если нужно, установите faad sudo apt install faad
dd ibs=1 skip=44 if=yourfilename.m4a of=raw.m4a
faad -a newname.m4a raw.m4a
Все кредиты автору ссылки, на которую я указываю, потому что я не знаю, что делаю, но я проверил это на вашем большом файле, и он работает. Первая команда занимает некоторое время. Потерпи. Пробовал на убунту 16.04.

Как указано в комментариях, результат может быть открыт в VLC, но не в Audacious. Но мы можем использовать vlc для его перекодирования или переписать в другой формат. Сценарий ниже преобразует все файлы * .m4a в текущем каталоге в * .mp3.
#!/bin/bash

quote=\"  
executable="/usr/bin/vlc"
argument3=vlc://quit

#transcoding parameters
acodecvalue=mp3
bitratevalue=128
accessvalue=file
muxvalue=raw

for x in *.m4a; do
    inputname="${x}"
    strippedname=${x%.m4a}
    outputname=${strippedname}.mp3
    quote_outputname=${quote}./${outputname}${quote}
    echo ${inputname}
    echo ${quote_outputname}
    qtranscode=#transcode{vcodec=none,acodec=$acodecvalue, # continue line !
    ab=$bitratevalue,channels=$channelsvalue}              # continue line !
    :standard{access=$accessvalue,mux=$muxvalue,dst=${quote_outputname}}
    argument1="$inputname"
    argument2=--sout=$qtranscode
    "$executable" -I dummy "$argument1" "$argument2" "$argument3"
done
oscar1919
источник
1

Это работает, но значения, используемые в dd, не подходят для каждого случая. Здесь автор исходного поста объясняет почему: Оригинальный пост этого решения

По сути, вы удаляете заголовок файла, пропуская 44 байта с помощью dd, но это значение варьируется от файла к файлу, как это случилось со мной.

Решение состоит в том, чтобы использовать шестнадцатеричный редактор (я предлагаю на копии сломанного файла) и удалить все от начала до конца слова «mdat». В моем случае это было 28 байтов вместо 44.

Я использую 0xED в качестве шестнадцатеричного редактора для Mac (он бесплатный и работает на последней Mac OS, Mojave, на момент написания статьи). Кроме того, для Mac вы можете установить faad с помощью Homebrew, запустив

brew install faad2

Вам может потребоваться указать частоту дискретизации файла, если она отличается от 44,100 Гц при использовании faad с ключами -s

Если faad возвращает эту ошибку, Error: Maximum number of bitstream elements exceededэто может означать, что вы удалили слишком много байтов с начала файла, как это сначала произошло со мной.

Наконец, после обработки необработанного файла с помощью faad вы захотите перекодировать файл m4a, чтобы убедиться, что у вас есть правильный и совместимый файл, это можно легко сделать с помощью ffmpeg

ffmpeg -i newfile.m4a -c:a aac output.m4a
Диего Алифано
источник