Hi All,
I'm trying to stream (unicast) an H264 from elementary stream file. The final
goal is to stream NAL packets from a hardware encoder but this should be easily
adopted once the file streamer works.
The ES file was created by a remux software and is playable by mplayer.
The problem is my streamer exits after about 1 sec and the afterPlaying
callback is called. The ByteStreamFileSource::doGetNextFrame() function fails
on feof(fFid) with 16, which means the code trys to read 16 bytes past the end
of file marker.
This is what I do to stream it:
Groupsock rtpGroupsock(*env, destinationAddress, rtpPort, ttl);
Groupsock rtcpGroupsock(*env, destinationAddress, rtcpPort, ttl);
videoSink = SimpleRTPSink::createNew(*env, &rtpGroupsock, 33, 90000, "video",
"mp2t", 1, True, False /*no 'M' bit*/);
estimatedSessionBandwidth = 5000; // in kbps; for RTCP b/w share
const unsigned maxCNAMElen = 100;
unsigned char CNAME[maxCNAMElen+1];
gethostname((char*)CNAME, maxCNAMElen);
CNAME[maxCNAMElen] = '\0'; // just in case
RTCPInstance* rtcp = RTCPInstance::createNew(*env, &rtcpGroupsock,
estimatedSessionBandwidth, CNAME,
videoSink, NULL /* we're a server */, false);
play();
env->taskScheduler().doEventLoop(&exit_flag); // does not return
Medium::close(videoSource);
Medium::close(rtcp);
return 0; // only to prevent compiler warning
}
void afterPlaying(void* /*clientData*/)
{
*env << "...done reading from file\n";
exit_flag = 1;
}
void play()
{
unsigned const inputDataChunkSize = 7*188;
// Open the input file as a 'byte-stream file source':
ByteStreamFileSource* videoFile
= ByteStreamFileSource::createNew(*env, video,
inputDataChunkSize);
if (!videoFile )
exit(1);
// Create a 'framer' for the input source (to give us proper
inter-packet gaps):
videoSource = MPEG2TransportStreamFromESSource::createNew(*env);
((MPEG2TransportStreamFromESSource*)videoSource)->addNewVideoSource(videoFile,
10);
// Finally, start playing:
*env << "Beginning to read from file...\n";
videoSink->startPlaying(*videoSource, afterPlaying, videoSink);
}
What am I missing here?
_______________________________________________
live-devel mailing list
[email protected]
http://lists.live555.com/mailman/listinfo/live-devel