2009-09-01 7 views
4

J'ai une caméra réseau Sony (SNC-RZ25N) dont j'essaie désespérément d'obtenir des données dans un format significatif. La documentation dit qu'il envoie des données brutes MPEG-4, mais n'est pas plus spécifique que. Je peux capturer un segment du flux en utilisant curl (http://techhead.biz/media/tsv.m4v) et il jouera en utilisant VLC et ffplay (bien qu'il joue trop vite dans ffplay). Après un jour et demi de bricolage, je viens de découvrir que je ne peux pas utiliser ffmpeg pour convertir ce flux directement. Pour un, la seule façon dont ffmpeg accepte les données canalisées en entrée (ce dont je suis au courant) est au format 'yuv4mpegpipe'.Convertir des données brutes en flux MPEG-4 en H.264

J'ai essayé d'utiliser ffmpeg en utilisant 'm4v' comme format spécifié, mais il semble vouloir lire le flux entier avant de commencer le traitement.

Quelqu'un sait comment je peux le faire? Utiliser des outils de ligne de commande? Bibliothèques Open Source dans tout langage de programmation? Des solutions plus simples sont préférables, mais n'importe quelle solution de travail serait géniale.

+0

Notez que la documentation indique également que la caméra fournit des instantanés JPEG via la requête HTTP '/ jpeg' et des flux M-JPEG via '/ mjpeg'. Ceux-ci vont être beaucoup plus faciles à intégrer avec différents logiciels et frameworks qu'une saveur personnalisée de MPEG-4. –

Répondre

1

Il apparaît MPlayer peut lire votre fichier m4v sur HTTP, et au moins avec votre fichier d'exemple cela fonctionne:

mkfifo /tmp/fifo 
mplayer -benchmark -vo yuv4mpeg:file=/tmp/fifo http://techhead.biz/media/tsv.m4v 
ffmpeg -f yuv4mpegpipe -i /tmp/fifo -vcodec libx264 -vpre libx264-hq /tmp/foo.mp4 

(-benchmark dit mplayer d'ignorer la durée de trame, peut ou non être nécessaire)

Sinon, avec juste mencoder:

mencoder -o /tmp/foo.avi -of avi -ovc x264 -x264encopts bitrate=250 http://techhead.biz/media/tsv.m4v 

Enfin, si vous n'avez pas réellement besoin H.264, vous pouvez simplement mettre les données MPEG-ES existant dans tout récipient pour mat dont vous avez besoin; MP4Box pourrait être en mesure de le faire, et ffmpeg et mencoder peuvent le faire s'ils supportent le format de sortie.

+0

Merci. J'ai essayé quelque chose de similaire avec VLC. Il joue pendant un moment, puis se bloque. Je ne sais pas si c'est VLC ou ffmpeg. Il semble que tout, VLC et mplayer inclus, utilise ffmpeg (ou au moins libavcodec) pour décoder MPEG-4. Bien sûr, ce que je veux finalement, c'est un moyen de redistribuer ce contenu aux utilisateurs. Nous avons déjà installé Flash Media Server, mais j'ai eu de la difficulté à combler le fossé et je suis ouvert à d'autres solutions. –

+0

vlc et mplayer utilisent certainement un code différent pour récupérer la vidéo, donc mplayer peut fonctionner là où vlc ne le fait pas. En outre, vous pouvez probablement utiliser mencoder et ignorer l'appel ffmpeg, vous donnant une troisième approche pour essayer. Je vais mettre à jour la réponse avec ça. – derobert

Questions connexes