Tags:
video, segmentation, cut, multimedia, linkmedia
Owner:
gabriel.sargent@irisa.fr
This service detects hard cuts and dissolves within a video file.
[1] Manolis Delakis, "Multimodal Tennis Video Structure Analysis with Segment Models", PhD Thesis, Université de Rennes 1, France, October 2006 (Online version).
Vidseg takes a video file in input, and outputs a JSON file containing the frame number associated to hard cuts and dissolves.
{ "general_info":{ "src":"<input_file_name>", "video":{ "duration":"<time_in_hh:mm:ss_format>", "start":"<temporal_offset_in_seconds>", "format":"<format>", "resolution":"<width>x<height> pix", "frame_rate":"<frame_rate> fps", "bit_rate":"<bit rate> kb/s", "color_space":"<color_space_ref>" } }, "vidseg":{ "annotation_type":"shot transitions", "system":"vidseg (<profile>)", "parameters":"<input_parameters>", "modality":"video", "time_unit":"frames", "events":[ { "start": <frame_num_start>, "end": <frame_num_end>, "type": <type_of_transition> }, { "start": <frame_num_start>, "end": <frame_num_end>, "type": <type_of_transition> }, ... ] } }where <profile> is the cut detection thresholding profile selected. <type_of_transition> can take the labels "cut" or "grad" (dissolve) regarding the type of transition detected. <frame_num_end> and <frame_num_start> are the numbers of frames respectively associated to the beginning and the end of the transition.
The automatic thresholding can be adjusted using one of the two methods described below:
VidSeg was developed by Manolis Delakis and Sébastien Campion in IRISA/Inria Rennes. It is the property of IRISA and Inria and can be supplied under license on a case-by-case basis. It is registered at the Agency for Program Protection (APP) in France under the reference n°IDDN.FR.001.250009.000.S.P.2009.000.40000. This piece of software relies on OpenCV's python libraries, FFMPEG libraries and AVconv.
In input :
In output :
[ { "src": "OpenVideo_Mountain_Skywater_segment_11.mp4", "processorTypeSpeed": 0, "totalRunTime": 0, "totalDecodeTime": 0, "sysId": "pimpy default", "totalSegmentationTime": 0, "trans": [ { "type": "cut", "postFNum": 239, "preFNum": 238 }, { "type": "grad", "postFNum": 126, "preFNum": 103 }, { "type": "grad", "postFNum": 146, "preFNum": 103 }, { "type": "grad", "postFNum": 696, "preFNum": 653 }, { "type": "grad", "postFNum": 912, "preFNum": 877 } ] } ]VidSeg_hard_cut_and_dissolve_examples.jpg
22/08/2017 : Version 1.0,
This app id is : 6
This curl command will create a job, and return your job url, and also the average execution time
files and/or dataset are optionnal, think to remove them if not wantedcurl -H 'Authorization: Token token=<your_private_token>' -X POST -F job[webapp_id]=6 -F job[param]="" -F job[queue]=standard -F files[0]=@test.txt -F files[1]=@test2.csv -F job[file_url]=<my_file_url> -F job[dataset]=<my_dataset_name> https://allgo.inria.fr/api/v1/jobs
Then, check your job to get the url files with :
curl -H 'Authorization: Token token=<your_private_token>' -X GET https://allgo.inria.fr/api/v1/jobs/<job_id>