web-dev-qa-db-fra.com

Comment ajouter un MOOV atom dans un fichier vidéo mp4

Je travaille sur un appareil en direct vers un serveur en streaming sur Android. Je peux envoyer des données en octets sur le serveur mais quand je joue ce fichier pendant l'enregistrement sur le serveur VLC dire que MOOV atom not found. Après de nombreuses solutions de contournement, j'ai constaté que MOOV atom d'un fichier mp4 génère à la fin. Mais je dois lire ce fichier sur le serveur pendant l'enregistrement signifie en direct. Je passe par le code source de SPYDROID et SIPDROID mais aucun d'entre eux ne fonctionne. J'ai essayé d'ajouter move atom sur le côté serveur en utilisant - FFMPEG mais n'a pas eu de succès. Tout le monde a une idée comment puis-je y parvenir. Merci d'avance.

22
Ravinder

Vous avez un problème. La boîte "moov" est une sorte de table des matières. Si tout le contenu n'est pas là, vous ne pouvez pas avoir une table des matières complète. Aie!

Si vous souhaitez vous en tenir à MP4 et si vous écrivez le fichier par vous-même, vous pouvez écrire le fichier sous le nom de fichier MP4 fragmenté. Un fichier MP4 fragmenté contient plusieurs petits morceaux autonomes de la vidéo - chacun avec sa propre table des matières. Cela vous permettrait de lire le fichier avant la fin de l'enregistrement complet.

Si vous n'avez pas besoin de rester avec MP4, une option serait d'écrire le flux h264 brut sur le serveur. Ensuite, vous n'avez pas ce genre de table des matières. VLC peut lire des flux h264 bruts.

12
Sebastian Annies

Exécutez qt_faststart pour déplacer le moov atom au début du flux.

qt-faststart in.mp4 out.mp4
3
d33pika

Il est possible de déplacer le moov atom au début du fichier vidéo en utilisant FFMpeg.

ffmpeg -i input_video_file.mp4 -vcodec copy -acodec copy -movflags faststart output_video_file.mp4
3
Abdullah Farweez

Utilisez MP4Box pour déplacer MOOV atom au début du fichier et entrelacé pour diffuser en bloc.

MP4Box test.mp4 test.mp4
3
Hemant

Il existe un outil non tronqué qui prétend réparer les vidéos inachevées (tronquées) mp4, m4v, mov, 3gp. Je ne l'ai pas testé moi-même mais cela peut valoir la peine d'être essayé.

1
k3a

Ajoutez à votre gradle cette lib: compilez 'net.ypresto.qtfaststartjava: qtfaststart: 0.1.0' puis

File input = new File(path + "/input.mp4"); // Your input file
File output = new File(path + "/output.mp4"); // Your output file
try{
    if(!output.exists()) // if there is no output file we'll create one
        output.createNewFile();
    }
}catch (IOException e){
    Log.e("TAG", e.toString());
}

try{
    QtFastStart.fastStart(input, output); // Adds moov to your input
                                          // Now your output file is ready to stream!
}catch (QtFastStart.MalformedFileException m){
    Log.e("QT", m.toString());
}catch (QtFastStart.UnsupportedFileException q){
    Log.e("QT", q.toString());
}catch (IOException i){
    Log.e("QT", i.toString());
}

Ici c'est tout

0
Tunahan Bayındır