web-dev-qa-db-fra.com

Combinez un flux vidéo h.264 et audio opus en un seul fichier vidéo

J'ai un fichier vidéo codé au format H.264 dans un fichier MP4 et un fichier audio codé au format Opus dans un fichier WebM. Quel serait le meilleur moyen de combiner ces fichiers en un seul mp4? Je ne veux pas réencoder les fichiers et perdre de la qualité.

4
Qwertie

Cela peut être fait relativement facilement avec FFmpeg. Si vous utilisez Xenial Xerus LTS, exécutez simplement les éléments suivants:

Sudo apt-get install ffmpeg

Si toutefois vous utilisez Trusty Tahr LTS, vous feriez mieux de créer le vôtre à partir de ces simples instructions de copier-coller ...

Pour démontrer la technique, j'ai créé 2 fichiers de test:

  1. Ce fichier appelé test.mp4 a le flux h.264 souhaité et se présente sous le format suivant: notez bien les identificateurs de flux:

    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661) ...
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D)...
    
  2. Ces fichiers appelés test1.webm ont le flux Opus que vous souhaitez et se présentent sous le format suivant. Notez à nouveau attentivement les identificateurs de flux:

    Stream #0:0: Video: vp9 (Profile 0)...
    Stream #0:1: Audio: opus, 48000 Hz, stereo, fltp (default)
    

Remarque: Dans votre exemple, le conteneur Webm ne peut contenir qu'un flux audio avec aucun flux vidéo . Dans ce cas, votre flux audio Opus aurait l'identifiant Stream #0:0.

Sachez également que pour le moment vous ne pouvez pas placer Opus Audio dans un conteneur MP4, mais il se trouve très facilement dans un conteneur MKV. Voici la méthode la plus simple:

ffmpeg -i test.mp4 -i test1.webm -c copy -map 0:0 -map 1:1 -shortest out.mkv

Ceci accomplit ce qui suit:

  1. -c copy copier les codecs sans transcodage
  2. -map 0:0 sélectionnez le 1er fichier d'entrée: 1er flux = le flux h.264 souhaité
  3. -map 1:1 sélectionnez le 2e fichier d'entrée: 2e flux = le flux Opus souhaité
  4. -shortest arrête l'encodage à la fin du flux d'entrée le plus court

Pour des méthodes plus élaborées qui seront nécessaires avec des fichiers multi-flux , voir le lien dans mes références ...

Références:

3
andrew.46

Etant donné qu'Opus n'est pas conforme à la norme de conteneur MP4 et que H.264 est également déplacé dans les conteneurs WebM (un MKV restreint), vous devez utiliser MKV et espérer que les lecteurs prennent en charge les pistes audio Opus.

Le remixage peut être aussi simple que d'ouvrir l'interface graphique de Mkvmerge en faisant glisser les deux fichiers et en sélectionnant les pistes que vous souhaitez inclure dans la sortie. Mais personne ne vous empêche de rechercher toutes les options impliquées pour l'utilitaire de ligne de commande (la nouvelle interface graphique doit toujours avoir la possibilité de copier l'intégralité de la commande) ou d'apprendre à utiliser ffmpeg.

2
LiveWireBT