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>