2017-09-30 9 views
2

Je veux exécuter un script bash qui ferait ce qui suit:Travailler avec mkfifo et les flux de transport, est-ce possible?

L'application 'ffmpeg' génère un fichier de flux de transport LIVE (.ts). J'ai besoin de travailler sur ce live streaam (effectuer un démultiplexage, etc.). Maintenant, je sais que cela doit être fait via FIFOs; mais voici ma tâche.

Je dois rediriger la sortie de ffmpeg pour écrire sur un FIFO, puis une autre application fonctionnera sur ce FIFO. Cela se produit continuellement en temps réel jusqu'à ce que j'appuie sur, disons Ctrl + C.

Est-ce possible? Est-ce que je dois faire ceci est deux terminaux?

Je suis en train d'écrire un script bash pour les opérations ci-dessus (et plus encore) alors dois-je appeler deux terminaux, ou peut-être fork?

Veuillez aviser.

Merci d'avance!

+1

Qu'est-ce qui ne se limite pas à un tuyau? – szatmary

+0

ffmpeg ne supporte pas les tuyaux; au moins pas de tuyaux nommés. De plus, je dois exécuter simultanément trois instances de ffmpeg sur trois canaux différents, puis utiliser les trois canaux comme entrée pour une quatrième instance ffmpeg qui les combine en quelque sorte. –

+1

Ffmpeg supporte absolument les tuyaux. – szatmary

Répondre

1

FFmpeg prend en charge les tuyaux. Tout ce que vous avez à faire est l'approche comme suit:

  1. faire un fifo

    mkfifo first.ts 
    
  2. course ffmpeg avec tuyau

    ffmpeg -i sample.ts -c copy -muxrate 5000000 pipe:1 > first.ts 
    
  3. exécuter d'autres outils qui fonctionnent avec flux de transport fichiers, par exemple Outil OpenCaster tscbrmuxer qui peut ajouter par ex. Table NIT pour le transport fichier flux

    tscbrmuxer b:3008 NIT.ts b:5000000 first.ts > second.ts 
    
  4. Si vous voulez arrêter 2 outils simplement tuer la dernière qui utilise tuyau/fifo. dans le cas où vous devez tuer tscbrmuxer.

    kill tscbrmuxer 
    

    OU
    Si vous n'êtes pas en cours d'exécution dernier outil en arrière-plan simplement tuer avec [ctrl + c]

Merci à l'aide d'une telle approche (par exemple, comme un script shell ou Python un) tous les outils qui utilisent le tuyau/fifo seront terminés en raison du tuyau cassé.

J'espère que cela va vous aider.