
Recherche avancée
Autres articles (93)
-
Qualité du média après traitement
21 juin 2013, parLe bon réglage du logiciel qui traite les média est important pour un équilibre entre les partis ( bande passante de l’hébergeur, qualité du média pour le rédacteur et le visiteur, accessibilité pour le visiteur ). Comment régler la qualité de son média ?
Plus la qualité du média est importante, plus la bande passante sera utilisée. Le visiteur avec une connexion internet à petit débit devra attendre plus longtemps. Inversement plus, la qualité du média est pauvre et donc le média devient dégradé voire (...) -
Les thèmes de MediaSpip
4 juin 20133 thèmes sont proposés à l’origine par MédiaSPIP. L’utilisateur MédiaSPIP peut rajouter des thèmes selon ses besoins.
Thèmes MediaSPIP
3 thèmes ont été développés au départ pour MediaSPIP : * SPIPeo : thème par défaut de MédiaSPIP. Il met en avant la présentation du site et les documents média les plus récents ( le type de tri peut être modifié - titre, popularité, date) . * Arscenic : il s’agit du thème utilisé sur le site officiel du projet, constitué notamment d’un bandeau rouge en début de page. La structure (...) -
Encoding and processing into web-friendly formats
13 avril 2011, parMediaSPIP automatically converts uploaded files to internet-compatible formats.
Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
All uploaded files are stored online in their original format, so you can (...)
Sur d’autres sites (3911)
-
ffmpeg says : "option framerate not found"
16 juillet 2013, par JasonGood afternoon.
I've been trying to use ffmpeg to split a .mpeg into a sequence of .jpeg images. Please note that this is the inverse problem of the one specified here, but the problem I'm facing is not the same as the problem the author of that thread is facing.
Specifically, I have tried all the following mpeg codecs available in my ffmpeg installation :
DEV D ffv1 FFmpeg video codec #1
DEVSD ffvhuff Huffyuv FFmpeg variant
DEVSDT mpeg1video MPEG-1 video
D V DT mpeg1video_vdpau MPEG-1 video (VDPAU acceleration)
D V D mpeg2_crystalhd MPEG-2 Video (CrystalHD acceleration)
DEVSDT mpeg2video MPEG-2 video
DEVSDT mpeg4 MPEG-4 part 2
D V D mpeg4_crystalhd MPEG-4 Part 2 (CrystalHD acceleration)
D V DT mpeg4_vdpau MPEG-4 part 2 (VDPAU)
D VSDT mpegvideo MPEG-1 video
D V DT mpegvideo_vdpau MPEG-1/2 video (VDPAU acceleration)
D VSDT mpegvideo_xvmc MPEG-1/2 video XvMC (X-Video Motion Compensation)
DEVSD msmpeg4 MPEG-4 part 2 Microsoft variant version 3
D V D msmpeg4_crystalhd MPEG-4 Part 2 Microsoft variant version 3 (CrystalHD acceleration)
D VSD msmpeg4v1 MPEG-4 part 2 Microsoft variant version 1
DEVSD msmpeg4v2 MPEG-4 part 2 Microsoft variant version 2I've tried supplying ffmpeg with all different codecs to try to split an input .mpeg video file with 2548 frames into 2548 .jpegs, by using the -vcodec option :
ffmpeg -r 2548 -i frames.mpeg frames_%06d.jpg -vcodec $codec
where
$codec
is any codec among the ones listed above, e.g.ffv1
,mpeg4
, etc. However, all my efforts result in the following error :[NULL @ 0x1948f20] Value 4707126720094797824.000000 for parameter 'probesize' out of range
[NULL @ 0x1948f20] Value 4707126720094797824.000000 for parameter 'analyzeduration' out of range
[NULL @ 0x1948f20] Value 4697254411347427328.000000 for parameter 'indexmem' out of range
[NULL @ 0x1948f20] Value 4703785510416416768.000000 for parameter 'rtbufsize' out of range
[NULL @ 0x1948f20] Value -4616189618054758400.000000 for parameter 'fpsprobesize' out of range
[NULL @ 0x1948f20] Value 4607182418800017408.000000 for parameter 'f_err_detect' out of range
[NULL @ 0x1948f20] Value 4607182418800017408.000000 for parameter 'err_detect' out of range
Option framerate not found.Which is weird, because I've actually specified the frame rate parameter through the -r switch. I googled a bit and it appears that this error was mentioned approximately a year and a half ago on the ffmpeg bug tracker but that information makes little sense to me because it's relevant to the devs. Curiously, if I interchange the position of the parameters and put -r after -i or even after -vcodec, the error message changes to :
[NULL @ 0x24abf20] Value 4707126720094797824.000000 for parameter 'probesize' out of range
[NULL @ 0x24abf20] Value 4707126720094797824.000000 for parameter 'analyzeduration' out of range
[NULL @ 0x24abf20] Value 4697254411347427328.000000 for parameter 'indexmem' out of range
[NULL @ 0x24abf20] Value 4703785510416416768.000000 for parameter 'rtbufsize' out of range
[NULL @ 0x24abf20] Value -4616189618054758400.000000 for parameter 'fpsprobesize' out of range
[NULL @ 0x24abf20] Value 4607182418800017408.000000 for parameter 'f_err_detect' out of range
[NULL @ 0x24abf20] Value 4607182418800017408.000000 for parameter 'err_detect' out of range
[NULL @ 0x24b23c0] Value 4686111960511545344.000000 for parameter 'b' out of range
[NULL @ 0x24b23c0] Value 4683532506232782848.000000 for parameter 'ab' out of range
[NULL @ 0x24b23c0] Value 4705844345939427328.000000 for parameter 'bt' out of range
[NULL @ 0x24b23c0] Value 4617315517961601024.000000 for parameter 'me_method' out of range
[NULL @ 0x24b23c0] Value 4622945017495814144.000000 for parameter 'g' out of range
[NULL @ 0x24b23c0] Value 4611686018427387904.000000 for parameter 'qmin' out of range
[NULL @ 0x24b23c0] Value 4629418941960159232.000000 for parameter 'qmax' out of range
[NULL @ 0x24b23c0] Value 4613937818241073152.000000 for parameter 'qdiff' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'wpredp' out of range
[NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'bug' out of range
[NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'er' out of range
[NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'err_detect' out of range
[NULL @ 0x24b23c0] Value 4613937818241073152.000000 for parameter 'ec' out of range
[NULL @ 0x24b23c0] Value 4620693217682128896.000000 for parameter 'ildctcmp' out of range
[NULL @ 0x24b23c0] Value 4620693217682128896.000000 for parameter 'subq' out of range
[NULL @ 0x24b23c0] Value 4696837138094751744.000000 for parameter 'ibias' out of range
[NULL @ 0x24b23c0] Value 4696837138094751744.000000 for parameter 'pbias' out of range
[NULL @ 0x24b23c0] Value 4642507528377204736.000000 for parameter 'lmin' out of range
[NULL @ 0x24b23c0] Value 4660262442142531584.000000 for parameter 'lmax' out of range
[NULL @ 0x24b23c0] Value 4696130710463840256.000000 for parameter 'flags2' out of range
[NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'threads' out of range
[NULL @ 0x24b23c0] Value 4620693217682128896.000000 for parameter 'nssew' out of range
[NULL @ 0x24b23c0] Value -4586705114244317184.000000 for parameter 'profile' out of range
[NULL @ 0x24b23c0] Value -4586705114244317184.000000 for parameter 'level' out of range
[NULL @ 0x24b23c0] Value 4623507967449235456.000000 for parameter 'skipcmp' out of range
[NULL @ 0x24b23c0] Value 4642507528377204736.000000 for parameter 'mblmin' out of range
[NULL @ 0x24b23c0] Value 4660262442142531584.000000 for parameter 'mblmax' out of range
[NULL @ 0x24b23c0] Value 4643211215818981376.000000 for parameter 'mepc' out of range
[NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'bidir_refine' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'cqp' out of range
[NULL @ 0x24b23c0] Value 4627730092099895296.000000 for parameter 'keyint_min' out of range
[NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'refs' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'directpred' out of range
[NULL @ 0x24b23c0] Value 4618441417868443648.000000 for parameter 'sc_factor' out of range
[NULL @ 0x24b23c0] Value 4643211215818981376.000000 for parameter 'mv0_threshold' out of range
[NULL @ 0x24b23c0] Value 4630826316843712512.000000 for parameter 'b_sensitivity' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'compression_level' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'min_prediction_order' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'max_prediction_order' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'prediction_order_method' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'min_partition_order' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'max_partition_order' out of range
[NULL @ 0x24b23c0] Value 4607182418800017408.000000 for parameter 'ticks_per_frame' out of range
[NULL @ 0x24b23c0] Value 4611686018427387904.000000 for parameter 'color_primaries' out of range
[NULL @ 0x24b23c0] Value 4611686018427387904.000000 for parameter 'color_trc' out of range
[NULL @ 0x24b23c0] Value 4611686018427387904.000000 for parameter 'colorspace' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'aq_mode' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'rc_lookahead' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'lpc_type' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'lpc_passes' out of range
[NULL @ 0x24b23c0] Value 4613937818241073152.000000 for parameter 'thread_type' out of range
[NULL @ 0x24b23c0] Value -4616189618054758400.000000 for parameter 'request_sample_fmt' out of range
frames.mpeg: could not find codec parametersI'm at a loss as to what to do with this problem, and am looking for some assistance.
Kind regards,
Jason
-
ffmpeg 1.0.7 takes minute to create a thumbnail on "broken" video file but other files are seconds to create thumbnail
8 juillet 2015, par Wiggler JtagI’ve been using ffmpeg 1.0.7 for over 450GB (cca 400 files) for creating thumbnails and grabbing video-file information. It tooks me like 1-2 seconds to create 10 thumbnails from 8GB file. But now I’ve got some ’broken’ video file (672 MB) which creates me 1 thumbnail over a minute, 10 thumbnails its over 10 minutes -> my server burns :
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9769 www-data 20 0 395m 28m 7212 R 157.0 0.4 0:04.99 ffmpegI opened the file in Windows Media Player and getting blank screen while -> video file is weird, opened it in VLC and it wrote me :
Because this AVI file index is broken or missing, seeking will not work correctly. VLC won't repair your file but can temporary fix this problem by building an index in memory.
I’ve clicked ’Play as is’ and it plays the video file correctly, however my webserver burns because of FFmpeg and PHP waits for the return fromexec();
command. Thumbnails are also created fine after 10 minutes, but how can I fix this problem or to prevent from executing FFmpeg for creating thumbnails on these broken ’video’ files ?This is my php :
$cmd = "ffmpeg -i error.avi 2>&1";
$info = `$cmd`;
echo '<pre>';
print_r($info);
echo '</pre>';this is the output I am getting (very quickly)
ffmpeg version 1.0.7 Copyright (c) 2000-2013 the FFmpeg developers
built on Jul 19 2013 07:14:44 with gcc 4.7 (Debian 4.7.2-5)
configuration: --prefix=/usr --extra-cflags='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security ' --extra-ldflags='-Wl,-z,relro' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-libvpx --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-librtmp --enable-avfilter --enable-libfreetype --enable-libvo-aacenc --disable-decoder=amrnb --enable-libvo-amrwbenc --enable-libaacplus --libdir=/usr/lib/x86_64-linux-gnu --disable-vda --enable-libbluray --enable-libcdio --enable-gnutls --enable-frei0r --enable-openssl --enable-libass --enable-libopus --enable-fontconfig --enable-libfdk-aac --enable-libdc1394 --disable-altivec --dis libavutil 51. 73.101 / 51. 73.101
libavcodec 54. 59.100 / 54. 59.100
libavformat 54. 29.104 / 54. 29.104
libavdevice 54. 2.101 / 54. 2.101
libavfilter 3. 17.100 / 3. 17.100
libswscale 2. 1.101 / 2. 1.101
libswresample 0. 15.100 / 0. 15.100
libpostproc 52. 0.100 / 52. 0.100
Input #0, avi, from 'error.avi':
Metadata:
encoder : VirtualDubMod 1.5.10.2 (build 2540/release)
Duration: 01:29:39.32, start: 0.000000, bitrate: 1048 kb/s
Stream #0:0: Video: mpeg4 (Advanced Simple Profile) (XVID / 0x44495658), yuv420p, 640x272 [SAR 1:1 DAR 40:17], 23.98 tbr, 23.98 tbn, 23.98 tbc
Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, s16, 128 kb/s
At least one output file must be specifiedSo it looks like just creating thumbnails is having problems :
exec("ffmpeg -ss 01:11:43 -i error.avi -vframes 1 -s 616x320 -an output_1.jpg 2>&1");
Where could be the problem ? Thanks for your suggestions !
Btw. I am posting this on SO because I’m not sure where it belongs more than here - I think it could be done somehow by PHP but I’m not really sure.
EDIT : I have added timeout, which "fixes" my problem, but even latest version of FFmpeg 2. stucks on creating thumbnail from broken video files.
exec("timeout 5s ffmpeg -ss 01:11:43 -i error.avi -vframes 1 -s 616x320 -an output_1.jpg 2>&1");
-
Live555 : X264 Stream Live source based on "testOnDemandRTSPServer"
12 janvier 2017, par user2660369I am trying to create a rtsp Server that streams the OpenGL output of my program. I had a look at How to write a Live555 FramedSource to allow me to stream H.264 live, but I need the stream to be unicast. So I had a look at testOnDemandRTSPServer. Using the same Code fails. To my understanding I need to provide memory in which I store my h264 frames so the OnDemandServer can read them on Demand.
H264VideoStreamServerMediaSubsession.cpp
H264VideoStreamServerMediaSubsession*
H264VideoStreamServerMediaSubsession::createNew(UsageEnvironment& env,
Boolean reuseFirstSource) {
return new H264VideoStreamServerMediaSubsession(env, reuseFirstSource);
}
H264VideoStreamServerMediaSubsession::H264VideoStreamServerMediaSubsession(UsageEnvironment& env, Boolean reuseFirstSource)
: OnDemandServerMediaSubsession(env, reuseFirstSource), fAuxSDPLine(NULL), fDoneFlag(0), fDummyRTPSink(NULL) {
}
H264VideoStreamServerMediaSubsession::~H264VideoStreamServerMediaSubsession() {
delete[] fAuxSDPLine;
}
static void afterPlayingDummy(void* clientData) {
H264VideoStreamServerMediaSubsession* subsess = (H264VideoStreamServerMediaSubsession*)clientData;
subsess->afterPlayingDummy1();
}
void H264VideoStreamServerMediaSubsession::afterPlayingDummy1() {
// Unschedule any pending 'checking' task:
envir().taskScheduler().unscheduleDelayedTask(nextTask());
// Signal the event loop that we're done:
setDoneFlag();
}
static void checkForAuxSDPLine(void* clientData) {
H264VideoStreamServerMediaSubsession* subsess = (H264VideoStreamServerMediaSubsession*)clientData;
subsess->checkForAuxSDPLine1();
}
void H264VideoStreamServerMediaSubsession::checkForAuxSDPLine1() {
char const* dasl;
if (fAuxSDPLine != NULL) {
// Signal the event loop that we're done:
setDoneFlag();
} else if (fDummyRTPSink != NULL && (dasl = fDummyRTPSink->auxSDPLine()) != NULL) {
fAuxSDPLine = strDup(dasl);
fDummyRTPSink = NULL;
// Signal the event loop that we're done:
setDoneFlag();
} else {
// try again after a brief delay:
int uSecsToDelay = 100000; // 100 ms
nextTask() = envir().taskScheduler().scheduleDelayedTask(uSecsToDelay,
(TaskFunc*)checkForAuxSDPLine, this);
}
}
char const* H264VideoStreamServerMediaSubsession::getAuxSDPLine(RTPSink* rtpSink, FramedSource* inputSource) {
if (fAuxSDPLine != NULL) return fAuxSDPLine; // it's already been set up (for a previous client)
if (fDummyRTPSink == NULL) { // we're not already setting it up for another, concurrent stream
// Note: For H264 video files, the 'config' information ("profile-level-id" and "sprop-parameter-sets") isn't known
// until we start reading the file. This means that "rtpSink"s "auxSDPLine()" will be NULL initially,
// and we need to start reading data from our file until this changes.
fDummyRTPSink = rtpSink;
// Start reading the file:
fDummyRTPSink->startPlaying(*inputSource, afterPlayingDummy, this);
// Check whether the sink's 'auxSDPLine()' is ready:
checkForAuxSDPLine(this);
}
envir().taskScheduler().doEventLoop(&fDoneFlag);
return fAuxSDPLine;
}
FramedSource* H264VideoStreamServerMediaSubsession::createNewStreamSource(unsigned /*clientSessionId*/, unsigned& estBitrate) {
estBitrate = 500; // kb
megamol::remotecontrol::View3D_MRC *parent = (megamol::remotecontrol::View3D_MRC*)this->parent;
return H264VideoStreamFramer::createNew(envir(), parent->h264FramedSource);
}
RTPSink* H264VideoStreamServerMediaSubsession::createNewRTPSink(Groupsock* rtpGroupsock, unsigned char rtpPayloadTypeIfDynamic, FramedSource* /*inputSource*/) {
return H264VideoRTPSink::createNew(envir(), rtpGroupsock, rtpPayloadTypeIfDynamic);
}FramedSource.cpp
H264FramedSource* H264FramedSource::createNew(UsageEnvironment& env,
unsigned preferredFrameSize,
unsigned playTimePerFrame)
{
return new H264FramedSource(env, preferredFrameSize, playTimePerFrame);
}
H264FramedSource::H264FramedSource(UsageEnvironment& env,
unsigned preferredFrameSize,
unsigned playTimePerFrame)
: FramedSource(env),
fPreferredFrameSize(fMaxSize),
fPlayTimePerFrame(playTimePerFrame),
fLastPlayTime(0),
fCurIndex(0)
{
x264_param_default_preset(&param, "veryfast", "zerolatency");
param.i_threads = 1;
param.i_width = 1024;
param.i_height = 768;
param.i_fps_num = 30;
param.i_fps_den = 1;
// Intra refres:
param.i_keyint_max = 60;
param.b_intra_refresh = 1;
//Rate control:
param.rc.i_rc_method = X264_RC_CRF;
param.rc.f_rf_constant = 25;
param.rc.f_rf_constant_max = 35;
param.i_sps_id = 7;
//For streaming:
param.b_repeat_headers = 1;
param.b_annexb = 1;
x264_param_apply_profile(&param, "baseline");
param.i_log_level = X264_LOG_ERROR;
encoder = x264_encoder_open(&param);
pic_in.i_type = X264_TYPE_AUTO;
pic_in.i_qpplus1 = 0;
pic_in.img.i_csp = X264_CSP_I420;
pic_in.img.i_plane = 3;
x264_picture_alloc(&pic_in, X264_CSP_I420, 1024, 768);
convertCtx = sws_getContext(1024, 768, PIX_FMT_RGBA, 1024, 768, PIX_FMT_YUV420P, SWS_FAST_BILINEAR, NULL, NULL, NULL);
eventTriggerId = envir().taskScheduler().createEventTrigger(deliverFrame0);
}
H264FramedSource::~H264FramedSource()
{
envir().taskScheduler().deleteEventTrigger(eventTriggerId);
eventTriggerId = 0;
}
void H264FramedSource::AddToBuffer(uint8_t* buf, int surfaceSizeInBytes)
{
uint8_t* surfaceData = (new uint8_t[surfaceSizeInBytes]);
memcpy(surfaceData, buf, surfaceSizeInBytes);
int srcstride = 1024*4;
sws_scale(convertCtx, &surfaceData, &srcstride,0, 768, pic_in.img.plane, pic_in.img.i_stride);
x264_nal_t* nals = NULL;
int i_nals = 0;
int frame_size = -1;
frame_size = x264_encoder_encode(encoder, &nals, &i_nals, &pic_in, &pic_out);
static bool finished = false;
if (frame_size >= 0)
{
static bool alreadydone = false;
if(!alreadydone)
{
x264_encoder_headers(encoder, &nals, &i_nals);
alreadydone = true;
}
for(int i = 0; i < i_nals; ++i)
{
m_queue.push(nals[i]);
}
}
delete [] surfaceData;
surfaceData = nullptr;
envir().taskScheduler().triggerEvent(eventTriggerId, this);
}
void H264FramedSource::doGetNextFrame()
{
deliverFrame();
}
void H264FramedSource::deliverFrame0(void* clientData)
{
((H264FramedSource*)clientData)->deliverFrame();
}
void H264FramedSource::deliverFrame()
{
x264_nal_t nalToDeliver;
if (fPlayTimePerFrame > 0 && fPreferredFrameSize > 0) {
if (fPresentationTime.tv_sec == 0 && fPresentationTime.tv_usec == 0) {
// This is the first frame, so use the current time:
gettimeofday(&fPresentationTime, NULL);
} else {
// Increment by the play time of the previous data:
unsigned uSeconds = fPresentationTime.tv_usec + fLastPlayTime;
fPresentationTime.tv_sec += uSeconds/1000000;
fPresentationTime.tv_usec = uSeconds%1000000;
}
// Remember the play time of this data:
fLastPlayTime = (fPlayTimePerFrame*fFrameSize)/fPreferredFrameSize;
fDurationInMicroseconds = fLastPlayTime;
} else {
// We don't know a specific play time duration for this data,
// so just record the current time as being the 'presentation time':
gettimeofday(&fPresentationTime, NULL);
}
if(!m_queue.empty())
{
m_queue.wait_and_pop(nalToDeliver);
uint8_t* newFrameDataStart = (uint8_t*)0xD15EA5E;
newFrameDataStart = (uint8_t*)(nalToDeliver.p_payload);
unsigned newFrameSize = nalToDeliver.i_payload;
// Deliver the data here:
if (newFrameSize > fMaxSize) {
fFrameSize = fMaxSize;
fNumTruncatedBytes = newFrameSize - fMaxSize;
}
else {
fFrameSize = newFrameSize;
}
memcpy(fTo, nalToDeliver.p_payload, nalToDeliver.i_payload);
FramedSource::afterGetting(this);
}
}Relevant part of the RTSP-Server Therad
RTSPServer* rtspServer = RTSPServer::createNew(*(parent->env), 8554, NULL);
if (rtspServer == NULL) {
*(parent->env) << "Failed to create RTSP server: " << (parent->env)->getResultMsg() << "\n";
exit(1);
}
char const* streamName = "Stream";
parent->h264FramedSource = H264FramedSource::createNew(*(parent->env), 0, 0);
H264VideoStreamServerMediaSubsession *h264VideoStreamServerMediaSubsession = H264VideoStreamServerMediaSubsession::createNew(*(parent->env), true);
h264VideoStreamServerMediaSubsession->parent = parent;
sms->addSubsession(h264VideoStreamServerMediaSubsession);
rtspServer->addServerMediaSession(sms);
parent->env->taskScheduler().doEventLoop(); // does not returnOnce a connection exists the render loop calls
h264FramedSource->AddToBuffer(videoData, 1024*768*4);