9
votes

Comment convertir par programme des fichiers vidéo FLV en MP4 à l'aide d'un script shell dans OS X?

Je veux lot de convertir un répertoire contenant des centaines de fichiers FLV afin que chaque fichier ait un équivalent MP4. J'essaie d'automatiser ce processus en écrivant un script shell et en l'exécutant depuis le terminal. Comment puis-je faire ça? La plupart des instructions disponibles sont pour Linux à l'aide de FFMPEG, mais je pense que OS X ne l'a pas. Merci.


0 commentaires

6 Réponses :


16
votes

Vous pouvez installer FFMPEG via homebrew ou Macports . Le communD pour installer FFMPEG avec homebrew est Brew Install Install FFMPEG code>; De même, la commande à installer FFMPEG avec MacPorts est Port Sudo Installez FFMPEG code>. Une fois que vous avez installé FFMPEG, voici un script simple (et un peu naïf) pour convertir les fichiers. Vous devrez peut-être ajouter plus d'indicateurs, en fonction des options souhaitées.

#! /bin/bash
function convert_all_to_mp4() {
  for file in *.flv ; do
    local bname=$(basename "$file" .flv)
    local mp4name="$bname.mp4"
    ffmpeg -i "$file" "$mp4name"
  done
}
convert_all_to_mp4


3 commentaires

Ce code a un grand potentiel. Va essayer de sortir. Je peux imaginer tant d'utilisations pour elle autres que cette tâche. Merci. ;-)


Bonjour, je suis nouveau dans ce domaine, aidez-moi s'il vous plaît, où doit ajouter ce script et comment appeler ce script sur le bouton Cliquez sur l'événement


@avi, j'ai mis à jour la réponse pour inclure quelques détails supplémentaires sur la façon d'appeler le script. Cependant, les bases de Bash sont un peu au-delà de la portée de la question. Vous pouvez trouver d'autres informations sur Stackoverflow sur la manière d'invoquer des scripts Bash et de manipuler la variable d'environnement de chemin.



2
votes
#!/bin/bash

shopt -s nullglob
shopt -s nocaseglob
for file in *.flv
do
  ffmpeg -i "$file" "${file%flv}mp4"
done

0 commentaires

1
votes

0
votes

Une autre alternative est MPEG StreamClip qui a une très bonne fonction lot .


0 commentaires

10
votes

Conversion de FLV en MP4 à l'aide de FFMPEG

AIM: STRT> Convertissez plusieurs fichiers vidéo Adobe Flash (FLV) en MP4 à l'aide d'un script Bash. P>

mon environnement : strong> Mac OS X 10.5.8, Terminal V.240.2, Bash V.3.2.17 (Cette solution doit fonctionner avec la plupart des systèmes Mac Apple). P>

Langue: strong> bash p>

Description: strong> Ce script recherchera tous les fichiers FLV dans l'emplacement spécifié, itérera par chacun, la convertissant en une vidéo MP4 équivalente et placez-les dans le sous-répertoire mp4-yymmdd-hhmmss em>. Les fichiers journaux générés pendant le processus sont placés dans le répertoire log em> de ce sous-répertoire. P>

Prérequis: strong>

Téléchargez le binaire FFMPEG et placez-le dans le répertoire / usr / local / bin code>.
Mon code est basé sur le blog de Jan sur Trick77.com. Voir "Références" pour plus de détails.
Téléchargez mon script Bash à partir de la section "Bash Script". P>

Explication de mon code strong> p>

  • copie des fichiers MP4 présents Li>
  • Détectez le type de codec vidéo à l'aide de FFMPEG -I [Fichier] Code>. Li>
  • cycle à chaque vidéo et convertir en fonction du type de codec vidéo utilisé. Li>
  • concaténer tous les fichiers journaux FFMPEG li> ul> limitations: strong>

    Seulement traite des vidéos avec les codecs FLV1 et H264. P>


    Utilisation: strong> p> xxx pré>

    Exemple: strong> p> xxx pré>

    Sortie: strong>
    Fichiers MP4 dans le MP4-YMMMDDD-HHMMSS EM> SubDirectory P>

    Journaux: strong>

    Convert-flv-To-MP4.log.txt - Connexion du programme
    ffmpeg-yyyyymmdd-hhmmss.log.txt - journal binaire FFMPEG pour chaque fichier converti de
    ffmpeg.log.txt - compilation de toutes les journaux FFMPEG ci-dessus
    MetaData.csv - Metadata pour chaque fichier vidéo P>

    Discussion: strong>

    Dans ma première tentative, je n'ai pas pu convertir des vidéos avec le flux vidéo FLV1 à l'aide de l'option -Copy code> FFMPEG. Au lieu de cela, je devais utiliser les options FFMPEG suivantes: P>

    -Strict expérimental -b -b: un 64k code> p>

    Cela signifie que la conversion ne s'arrête pas Les erreurs mineures et qu'il utilise une conversion de taux de bits audio 64K. P>

    à l'aide de l'option code> -Copy code> vous permet de remettre la vidéo d'entrée et est donc rapide. Sinon, FFMPEG transcodifie le fichier, qui prend considérablement plus longtemps. Ce script déterminera quelle option à utiliser. P>

    CLÉ SNIPPET DE CODE: FORT> P>

    ls ${inputdir}/*.flv>$inputlist
    for i in $(cat $inputlist); do
        ...
        case $vtype in
            flv1)
                ffmpeg -report -v info -nostdin -fflags discardcorrupt -i $i -strict experimental -c:v mpeg4 -b:a 64k ${outputdir}/${basename}.mp4 
            h264)
                ffmpeg -report -v verbose -nostdin -fflags discardcorrupt -i $i -vcodec copy -acodec copy ${outputdir}/${basename}.mp4
        esac
        ...
    done
    


0 commentaires

0
votes
find . -iname "*.flv" -exec ffmpeg -nostdin -fflags discardcorrupt -i "{}" -strict experimental -c:v mpeg4 -b:a 192k "{}.mp4"  \;

1 commentaires

Bonjour, voici quelques directives pour votre réponse: il est non recommandé pour poster des réponses uniquement du code, envisagez également de fournir une explication de votre code et de la manière dont il résout le problème de la question. Les réponses avec une explication sont généralement plus utiles et de meilleure qualité, et sont plus susceptibles d'attirer des upvotes.