8
votes

Streaming FFServer H.264 de Logitech C920 sans ré-codage

J'essaie de diffuser un flux de webcam natif .H264 à partir d'une webcam Logitech C920 en temps réel à partir d'un périphérique Odroid (un robot) via FFServer en cours d'exécution sur un serveur distinct (Centos 7.1) au navigateur des utilisateurs sans reconquellement de la .h264 Feed vidéo.

Avoir une vidéo vidéo en temps réel dans le navigateur est un défi à lui-même, alors pour l'instant, je m'essaie tout simplement d'obtenir la webcam de Logitech C920 sur l'Odroid pour diffuser son flux vidéo Native .H264 en temps réel comme MP4 via FFServer aux utilisateurs sans la nécessité de réenregorter la vidéo dans le processus. De toute évidence, je veux éviter de re-encoder comme cela prendrait trop de temps processeur et tuerais l'alimentation vidéo en temps réel. Plus tard, j'ai peut-être besoin de changer le conteneur vers .flv ou RTP, afin qu'il puisse être joué à partir du navigateur de manière en temps réel. J'utilise la webcam Logitech C920, car elle peut faire .h264 encoder sur le matériel. (Il a été testé en enregistrant un fichier directement, cela fonctionne, à l'exception du problème «sacré» bien connu lié à un bogue de noyau Linux: http://sourceforge.net/p/Message/33164469/ , mais c'est une histoire différente) p>

Le problème est que cependant que je définissais FFMPEG-FFServer up, dès que FFServer est dans l'image que l'alimentation est retenue - même de H264 (Native) à H264 (LibX264) - Prenant 100% de la CPU sur le dispositif Odroid et Introduction d'un délai énorme dans l'alimentation vidéo. P>

ci-dessous sont mes paramètres FFMPEG et FFSERVER. P>

FFMPEG à partir du périphérique ODROID en streaming le flux .H264 à FFServer P>

Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))


0 commentaires

3 Réponses :


0
votes

Pouvez-vous supprimer le -vcodec h264 comme je vois que vous mentionnez deux codecs vidéo -vcodec h264 et encore -vcodec copier . Et une autre chose que FFServer ne prend pas en charge le streaming de mp4 . Essayez de la convertir en Webm ou flv . Voir Débuter Stream Simple MP4 avec FFServer


2 commentaires

Donc, ce que j'ai essayé: 1. Supprimé -VCodec H264 , donc j'exécutais ffmpeg -s 1920x1080 -f v4l2 -i / dev / vidéo0 -copyinkf -vcodec copier http: // xxxyyyy.com:8090/feed1.ffm - Cela a abouti à la caméra en envoyant un format Rawvideo et non H264, donc évidemment, il y avait un transcodage à H264 qui n'est pas bon.


J'ai également essayé la suggestion n ° 2, convertissant en Flv. La conversion a toujours le problème d'origine, le transcodage de H264 (Native) à H264 (LIBX264), en utilisant donc 100% de processeur et sans l'utilisation de l'alimentation codée déjà H264 de la webcam, mais à nouveau à nouveau à H264. En tant que tel, le problème initial que j'ai décrit (le réencodage) existe toujours.



5
votes

Eh bien, ce n'est pas vraiment une réponse, mais j'ai réussi à le faire en passant à VLC. Malheureusement, je n'ai pas réussi à faire de FFServer pour accepter le flux entrant .H264 tel que, sans re-encoder et même si j'aurais eu, j'ai toujours eu ce problème de la régression des noyaux FFMPEG-C920-Linux: http://sourceforge.net/p/linux-uvc/mailman/message/33164469/

En tant que tel, il semblait raisonnable d'abandonner la ligne FFMPEG-FFSERVER et essayez VLC. P>

Si quelqu'un d'autre est intéressé, avec VLC j'ai réussi à réaliser la distribution non réencodée du Alimentation native de NativeCam de Webcam C920 en exécutant le suivi: p>

sur le périphérique Odroid, cela ramassera le flux .H264 de la came et p>

http://[ip of centos server]:8080


0 commentaires

1
votes

Autre chose que j'ai remarquée dans votre configuration est que vous transcodez à haut profil dans libx264 - "LIBX264 @ 0X12590E0] haut, niveau 1b"

Essayez de définir le profil sur de base ou principal et qui réduira considérablement les frais généraux de la CPU. Le mode haut est destiné à encoder des trucs comme des disques de rayons bleues.


0 commentaires