web-dev-qa-db-fra.com

Comment convertir (re-wrap) Transport Stream en conteneur MPEG-4 dans l'application iOS?

J'ai un flux en direct au format .ts, contenant de l'audio AAC et de la vidéo H.264. Je veux y jouer sur des appareils iOS. J'ai essayé d'utiliser n lecteur de film basé sur FFmpeg pour décoder et lire la vidéo, mais l'audio était en retard.

Puis-je reconditionner ce flux de transport dans un conteneur MPEG-4 pour jouer sur les appareils iOS - sans le convertir côté serveur?

Le serveur me renvoie une URL du flux en direct .ts et mon objectif est de lire ce flux sur les appareils iOS sans liste de lecture .m3u8 parce que je ne peux pas l'obtenir du serveur.

15
Aleksandr Suvorov

Pour recomposer simplement sans transcodage, vous pouvez utiliser: ffmpeg -i input.ts -acodec copy -vcodec copy out.mp4

28
d33pika

J'ai utilisé ffmpeg -i input.ts -acodec copy -vcodec copy out.mp4 et la conversion a échoué.

J'ai ensuite utilisé -bsf:a aac_adtstoasc indicateur et conversion passés, avec des erreurs "DTS non monotones", entraînant des horodatages incorrects dans le fichier de sortie.
Le fichier out.mp4 fonctionne bien, mais lorsque j'en extrait du son, la longueur du son est différente de celle de la vidéo.

Si j'utilise l'audio extrait pour remplacer celui-ci dans le fichier d'origine, l'audio du fichier vidéo résultant n'est pas synchronisé (retard audio).

J'ai ensuite importé le clip out.mp4 dans l'éditeur vidéo DaVinci Resolve. La longueur des fichiers audio et vidéo est identique, j'ai donc exporté l'audio uniquement et j'ai obtenu la même taille de fichier que la vidéo d'origine.

Cependant, lorsque j'ai joué le fichier et consulté le graphique audio dans Audacity, j'ai remarqué de nombreuses zones masquées (pas de son). Les fichiers audio créés avec Audacity, ffmpeg, VLC, VSDC Video Editor ont tous donné des fichiers audio de taille différente du fichier vidéo d'origine, bien qu'ils aient tous du son.

J'ai entendu parler de projectX pour démultiplexer un/v, comme une solution possible. Demux s'est terminé avec succès, mais a créé un fichier mp1 de 1 Ko, avec beaucoup d'erreurs: "PTS sans cadre".

eac3to a réussi à extraire l'audio AAC du fichier vidéo TS. Les deux fichiers avaient la même taille. L'utilisation de ffmpeg pour remplacer l'audio dans un fichier vidéo donne une synchro parfaite, aucun son en retard ou vierge.
Aucune erreur concernant "DTS non monotone" ou horodatages incorrects.

Terminé.

2
Zimba