Как захватить звуковой канал из видеофайла MP4 в отдельный звуковой файл?

Вам не нужен клиент самбы для этого. То, в чем Вы нуждаетесь, является smbfs или cifs модулем ядра. smbfs удерживается от использования и не должен использоваться (если Вы не можете использовать cifs по некоторым причинам. например, Ваше распределение слишком старо, или возможно Вы пытаетесь соединиться с полем Win95 или чем-то.)

Попытка:

# lsmod | grep cifs
# modprobe cifs
# lsmod | grep cifs
cifs                  279398  0 
# grep cifs /proc/filesystems
nodev   cifs

Затем попробуйте mount -t cifs ... как упомянуто Gilles.

Если это не работает, можно получить доступ к файлам с помощью smbclient (например). вместо того, чтобы монтировать файловую систему. smbclient находится в клиенте самбы и дает Вам интерфейс, подобный командной строке клиент FTP.

"Смонтировать [...] другой RHEL", существуют различные варианты. Вы могли использовать NFS (в этом случае, необходимо будет настроить сервер NFS на машине, которую Вы хотите смонтировать.) Другая возможность является sshfs, в этом случае все, в чем Вы нуждаетесь на сервере, сервер SSH, но клиенту будет нужен sshfs, который должен соединиться. Я не знаю, поддерживает ли RHEL 5.5 предохранитель. Также было бы возможно настроить Samba на другом поле RHEL и затем смонтировать использование mount -t cifs ... как будто это было поле Windows.

2
11.04.2012, 22:16
3 ответа

Если Вы знаете, что существует только 1 аудиопоток и что это aac, затем Вам только нужно это:

ffmpeg -acodec copy -i "movie.mp4" -y "audio.aac"

Если Вы хотите написать сценарий первого идентификатора аудиопотока и типа кодека/расширения файла, можно использовать это:

eval $(ffmpeg -i "movie.mp4" 2>&1 |awk '/Stream.*Audio/{print "stream=" $2 ";codec=" $4}' |head -n1)
stream=${stream:1}; stream=${stream/:/}
extn=${codec/,/}; [[ $extn == "aac" ]] || 
    { echo "You need to manually set the fiie extension. Codec type is: $codec"; exit 1; } 

ffmpeg -map $stream -acodec copy -i "movie.mp4" "audio.$extn"
1
27.01.2020, 22:07
  • 1
    : 1: Синтаксическая ошибка: "(" неожиданный –  Ivan 11.04.2012, 22:58
  • 2
    , возможно, ffmpeg -i в не вывод одна строка, которая соответствует /Stream.*Audio/ строка... Если существует больше чем один, то захватить первый, Вам нужно eval $(ffmpeg -i "movie.mp4" 2>&1 |awk '/Stream.*Audio/{print "stream=" $2 ";codec=" $4} |head -n1) .... Иначе просто эксперимент с ffmpeg -i и посмотрите то, в чем это нуждается, или для одноразового, вручную введите корректный тип файла... –  Peter.O 11.04.2012, 23:13
  • 3
    Между прочим, Вы, оказывается, знаете подобный прием для файлов FLV? ffmpeg говорит "Не могущий найти подходящий выходной формат для 'аудиофайла'". Кажется, что это думает, что это - webm. –  Ivan 20.06.2012, 03:33

Если Вы знаете, что существует только 1 аудиопоток и что это aac, затем Вам только нужно это:

ffmpeg -acodec copy -i "movie.mp4" -y "audio.aac"

Если Вы хотите написать сценарий первого идентификатора аудиопотока и типа кодека/расширения файла, можно использовать это:

eval $(ffmpeg -i "movie.mp4" 2>&1 |awk '/Stream.*Audio/{print "stream=" $2 ";codec=" $4}' |head -n1)
stream=${stream:1}; stream=${stream/:/}
extn=${codec/,/}; [[ $extn == "aac" ]] || 
    { echo "You need to manually set the fiie extension. Codec type is: $codec"; exit 1; } 

ffmpeg -map $stream -acodec copy -i "movie.mp4" "audio.$extn"
1
27.01.2020, 22:07

Учитывая видео на Youtube, извлечение аудио из видео не может необходимо, так как звуковые дорожки можно загрузить отдельно как , например, используя Firefox с последней версией надстройки Flashgot или используя mps-youtube (это инструмент, предназначенный для для воспроизведения и загрузки звуковых дорожек с youtube: подробнее здесь ).


Учитывая видеофайлы в формате mp4:

Как указано в здесь , можно использовать более общую команду без необходимости указывать конкретные имена файлов и добавить ее в настраиваемое меню диспетчера файлов, например :

ffmpeg -i "$0" -map 0:1 -c:a copy "${0%%.*}".m4a

(Использование .m4a предпочтительнее, поскольку он более широко поддерживается в качестве контейнера для .aac , но вместо этого вы можете использовать необработанный .aac ] если хотите.)

Кроме того, эта команда, запущенная в терминале, извлечет аудиодорожки из всех файлов mp4 в текущей папке:

for i in *.mp4; do ffmpeg -i "${i}" -map 0:1 -c:a copy "${i%.mp4}.m4a"; done

( здесь исходный пост)


См. комментарии и соответствующую информацию в связанных ответах и ​​вопросы о том, как использовать такие команды в контекстных меню файловых менеджеров.


Вышеуказанные и другие аналогичные команды могут использоваться также для извлечения звука из других типов видеофайлов путем соответствующей замены входных и выходных расширений.

Первая команда работает как таковая и для flv ; но для другого видео просто замените m4a любым звуком, содержащимся в видеоклипе. Вторая команда требует замены расширений видео и аудио, если она применяется к разным типам видеофайлов.

Обычно файлы mp4 и flv содержат aac аудио, файлы Webm содержат ogg и ] avi файлы содержат mp3 аудио. Чтобы точно знать, какой звук содержится в видео, используйте mediainfo : mediainfo-GUI или просто установите mediainfo и в Терминале: mediainfo .

2
27.01.2020, 22:07

Теги

Похожие вопросы