Ffmpeg script de mp4 para mp3

0

Pergunta

#!/bin/bash
for i in *.mp4
do
ffmpeg -i "$i" -ab 128k "${i%mp4}mp3"
done

Este lote converte todos *.mp4 arquivos do diretório atual para um mp3. ffmpeg precisa ser instalado, ou incluída na distribuição. Às vezes eu não quero tudo o CWD convertido. Eu gostaria de modificar esse script para isso.

  1. Se não houver argumentos, que o script não faz nada
  2. Se o argumento é *.mp4 converte todos .mp4 to .mp3
  3. Se o argumento é o nome do arquivo.mp4 ele só converte um arquivo o nome do arquivo.mp3

Posso obter alguma ajuda com isso bash script de código ? TIA ! Não tem certeza de como ler os argumentos da linha de comando e colocá-los no script

$1 $2 ? Mostre-me um exemplo. Eu deveria ser capaz de fazer a outros.

bash ffmpeg script
2021-11-23 16:45:49
1

Melhor resposta

0

Você pode deixar o shell de lidar com as expansões, e, em seguida, em seu script de loop sobre os parâmetros posicionais. Você poderia fazer isso com

for i in "$@"

ou, ainda menor, apenas

for i

como o comportamento padrão é um loop sobre os parâmetros posicionais.

Assim, o script ficaria como

#!/usr/bin/env bash

for i; do
    ffmpeg -i "$i" -ab 128k "${i%mp4}mp3"
done

e você poderia chamá-lo como

yourscript           # Do nothing
yourscript *.mp4     # Expands to all .mp4 files
yourscript file.mp4  # Process just file.mp4
2021-11-23 17:13:32

Muito obrigado. Isso funciona bem. Posso usar o $eu em qualquer bash script para ler o primeiro argumento após o scrfipt nome ? Eu pensei que era de us $1 $2 $3, etc.
teddymills

@teddymills A "magia" está no for i linha, o que, implicitamente, faz for i in "$@", onde $@ é uma matriz de todos os parâmetros posicionais. $1, $2 etc. a pessoa parâmetros posicionais, se você gostaria de acessá-los diretamente.
Benjamin W.

O nome i é arbitrário; você também pode usar for param ou for file em vez disso, e a referência a ele com $param ou $file.
Benjamin W.

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................