J'essaie de diffuser H264 vers VLC via RTP sans RTSP, c'est-à-dire recevoir le flux H.264 de la caméra IP, et l'envoyer à VLC sur un autre hôte. VLC a ouvert l'URL "rtp: // @: 12345". Notez que openRTSP faire la même chose, mais les données de sortie dans le fichier en utilisant la classe H264VideoFileSink, je remplace cette partie du code:utiliser live555 pour diffuser H264 à VLC
if (strcmp(subsession->mediumName(), "video") == 0) {
if (strcmp(subsession->codecName(), "H264") == 0) {
// For H.264 video stream, we use a special sink that adds 'start codes',
// and (at the start) the SPS and PPS NAL units:
//fileSink = H264VideoFileSink::createNew(*env, outFileName,
// subsession->fmtp_spropparametersets(),
// fileSinkBufferSize, oneFilePerFrame);
char const* outputAddressStr = "192.168.1.123"; // this could also be unicast
struct in_addr outputAddress;
outputAddress.s_addr = our_inet_addr(outputAddressStr);
const Port outputPort(12345);
unsigned char const outputTTL = 255;
Groupsock outputGroupsock(*env, outputAddress, outputPort, outputTTL);
rtpSink = H264VideoRTPSink::createNew(*env, &outputGroupsock, 96);
}
…
puis,
subsession->sink = rtpSink;
subsession->sink->startPlaying(*(subsession->readSource()),
subsessionAfterPlaying,
subsession);
Le résultat est que openRTSP est en cours d'exécution, mais VLC a reçu rien. J'ai utilisé Wireshark pour vérifier, aucun paquet envoyé à destination IP et port.
J'essaie également testMP3Streamer, remplacer l'adresse de multidiffusion avec l'adresse unicast aboved. VLC pourrait le jouer. Quelqu'un pourrait-il me donner quelques suggestions?
Cela fonctionne! VLC dit "Une description au format SDP est nécessaire pour recevoir le flux RTP. Notez que les URI rtp: // ne peuvent pas fonctionner avec le format de charge utile RTP dynamique (96). »Cela signifie que les paquets RTP ont été réellement reçus par VLC. Je vous remercie. – myggao