Ffmpeg script mp4 à mp3

0

La question

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

Ce lot convertit tous *.mp4 fichiers dans le répertoire courant un fichier mp3. ffmpeg doit être installé ou inclus dans la distribution. Parfois, je ne veux pas tout dans le MDC converti. Je voudrais modifier ce script pour que.

  1. Si il n'y a pas d'arguments, le script ne fait rien
  2. Si l'argument est *.mp4 il convertit tous .mp4 pour .mp3
  3. Si l'argument est un nom de fichier.mp4 il ne convertit qu'un fichier à un nom de fichier.mp3

Puis-je obtenir de l'aide avec ce script bash code ? TIA ! Vous ne savez pas comment lire les arguments hors de la ligne de commande et les mettre dans le script

$1 $2 ? Montrez-moi un exemple. Je devrais être capable de faire les autres.

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

La meilleure réponse

0

Vous pouvez laisser la coquille gérer les extensions, et puis dans votre script en boucle sur les paramètres positionnels. Vous pouvez le faire avec

for i in "$@"

ou, encore plus court, juste

for i

le comportement par défaut est d'une boucle sur les paramètres positionnels.

Donc, votre script devrait ressembler à

#!/usr/bin/env bash

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

et vous l'appeler comme

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

Je vous remercie beaucoup. Cela fonctionne bien. Puis-je utiliser $i en aucun script bash pour lire le premier argument après le scrfipt nom ? Je pensais que c'était de $1 $2 $3 etc.
teddymills

@teddymills La "magie" est dans le for i ligne, ce qui implicitement n' for i in "$@"$@ est un tableau de tous les paramètres positionnels. $1, $2 etc. les différents paramètres positionnels, si vous souhaitez accéder directement.
Benjamin W.

Le nom de i est arbitraire; vous pouvez également utiliser for param ou for file au lieu de cela, et la référence avec $param ou $file.
Benjamin W.

Dans d'autres langues

Cette page est dans d'autres langues

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