[Libav-user] Check an address to see if there is any video stream on it or not

Hadi hadi.hadizadeh at hotmail.com
Sun Jan 12 18:26:46 CET 2014


Thanks for the response, it works! :) I was thinking to put such a code within a thread. Whenever "avformat_open_input" finds a stream at the given address, then the thread can be terminated. In the meantime, the program can do other stuffs. But do you know how I can make a thread with libavcodec functions?

----------------------------------------
> From: grisme at yandex.ru
> To: libav-user at ffmpeg.org
> Date: Sun, 12 Jan 2014 22:38:51 +0600
> Subject: Re: [Libav-user] Check an address to see if there is any video stream on it or not
>
>
> 12.01.2014, 22:23, "Hadi" <hadi.hadizadeh at hotmail.com>:
>> I want to read a video stream from a UDP address using libavcodec functions. To do so, I use the following code:
>>
>> char *url = "udp://127.0.0.1:1000";
>> AVFormatContext *oc = NULL;
>> avformat_open_input(&oc, url, NULL , NULL);
>>
>> If we run this code, then function "avformat_open_input" starts listening on the given UDP address, and it looks like the program is halted if there is no video stream at the given UDP address.
>>
>> Now, I want to write a code to first check the given UDP address quickly to see whether there is any data on it or not, if there is no data then the program should neglect running "avformat_open_input", otherwise it should run this function so that I can avoid the halting situation.
>>
>> Any idea how I can do this? Thanks!
>> _______________________________________________
>> Libav-user mailing list
>> Libav-user at ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/libav-user
>
> use interrupt_callback function to "unblock" avformat_open_input(...);
> concept:
>
> time_t check_timestamp;
>
> static int interrupt_cb(void* inputdata)
> {
> time_t current_timestamp;
> current_timestamp = time(0)
> if (current_timestamp - check_timestamp>= 10)
> return true; // interrupt blocked function
> else
> return false; // NOT interrupt, wait more seconds...
> }
> ...
> oc = avformat_allocate_context();
> oc->interrupt_callbacl = (AVIOInterruptCB){interrupt_cb, NULL};
> checl_timestamp = time(0);
> if (avformat_open_input(&oc, url, NULL , NULL) < 0)
> {
> // error processing
> }
>
> something like that :) if avformat_open_input frezzes more than 10 seconds (in this example), interrupt_cb will break it execution.
>
> --
> С уважением, Евгений Гарифуллин.
> e-mail: grisme at yandex.ru
> jabber: joffadark at jabber.ufanet.ru
> ICQ : 387906261
> _______________________________________________
> Libav-user mailing list
> Libav-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/libav-user 		 	   		  


More information about the Libav-user mailing list