- Timestamp:
- 2010-07-19T14:00:53+12:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
gs2-extensions/video/trunk/perllib/plugins/VideoConverter.pm
r21824 r22432 208 208 # Here we use mediaInfo to get all the possible metadata in XML form that could then be parsed 209 209 #the result will vary depending on the file type and how it was encoded 210 sub mediaInfo_XML_Cmd 211 212 213 210 sub mediaInfo_XML_Cmd { 211 my ($video, $outhandle, $verbosity) = @_; 212 213 # Use MediaInfo CLI to get the file spec according to the requested parameter 214 214 my $command = "mediainfo --Output=XML \"$video\""; 215 215 216 216 print $outhandle " $command\n" if ($verbosity > 2); 217 217 my $result = ''; 218 218 $result = `$command 2>&1`; 219 219 print $outhandle " $result\n" if ($verbosity > 4); 220 220 221 221 # Return the asked spec 222 222 return ($result); … … 224 224 225 225 #Here we parse the video specs contained in the XML text in order to create a metadata entry for each field 226 sub mediaInfo_parse_XML { 227 my ($xmlTxt, $outhandle, $verbosity) = @_; 228 229 my @parts = split(/<track\s+type=\"(.*?)\">/is,$xmlTxt); 230 231 shift @parts; # Skip preamble 232 my $metadata_table = {}; 233 234 while (@parts) { 235 my $type = shift(@parts); 236 my $vals = shift(@parts); 237 my @fieldlist=(); 238 while ($vals =~ s/<(.*?)>(.*?)<\/\1>//) { 239 my $metaname = $1; 240 my $metaval = $2; 241 my $fullmetaname = "mi.$type\^$metaname"; 242 $metadata_table->{$fullmetaname}= $metaval; 243 push(@fieldlist,$fullmetaname); 244 } 245 246 $metadata_table->{"mi.${type}Fields"}= join(",",@fieldlist); 247 226 sub mediaInfo_parse_XML { 227 my ($xmlTxt, $outhandle, $verbosity) = @_; 228 229 my @parts = split(/<track\s+type=\"(.*?)\">/is,$xmlTxt); 230 231 shift @parts; # Skip preamble 232 my $metadata_table = {}; 233 234 while (@parts) { 235 my $type = shift(@parts); 236 my $vals = shift(@parts); 237 my @fieldlist=(); 238 while ($vals =~ s/<(.*?)>(.*?)<\/\1>//) { 239 my $metaname = $1; 240 my $metaval = $2; 241 my $fullmetaname = "mi.$type\^$metaname"; 242 $metadata_table->{$fullmetaname}= $metaval; 243 push(@fieldlist,$fullmetaname); 248 244 } 249 245 250 return $metadata_table; 251 252 } 253 254 sub identify { 246 $metadata_table->{"mi.${type}Fields"}= join(",",@fieldlist); 247 248 } 249 250 return $metadata_table; 251 252 } 253 254 sub identifyMI { 255 255 my ($video, $outhandle, $verbosity) = @_; 256 256 … … 291 291 292 292 293 sub identify 2{293 sub identify { 294 294 my ($video, $outhandle, $verbosity) = @_; 295 295 … … 1001 1001 1002 1002 1003 my $ifilename = $originalfilename || $filename; 1004 1003 1005 my ($stream_cmd,$ofla_filename,$ofla_file) 1004 = $self->stream_flv_audio_cmd($ originalfilename || $filename);1006 = $self->stream_flv_audio_cmd($ifilename); 1005 1007 1006 1008 … … 1011 1013 1012 1014 my ($streamable_regenerated,$streamable_result,$streamable_had_error) 1013 = $self->$optionally_run_general_cmd($stream_cmd,$ofla_filename, 1015 = $self->$optionally_run_general_cmd($stream_cmd, 1016 $ifilename,$ofla_filename, 1014 1017 $streamable_options); 1015 1018 … … 1072 1075 my $streaming_quality = "high"; 1073 1076 1077 my $ifilename = $originalfilename || $filename; 1078 1074 1079 my ($stream_cmd,$oflash_filename,$oflash_file) 1075 = $self->stream_flv_video_cmd($ originalfilename || $filename,1080 = $self->stream_flv_video_cmd($ifilename, 1076 1081 $video_width,$video_height, 1077 1082 $streaming_quality, … … 1085 1090 1086 1091 my ($streamable_regenerated,$streamable_result,$streamable_had_error) 1087 = $self->$optionally_run_general_cmd($stream_cmd,$oflash_filename,$streamable_options); 1092 = $self->$optionally_run_general_cmd($stream_cmd, 1093 $ifilename,$oflash_filename, 1094 $streamable_options); 1088 1095 1089 1096 if (!$streamable_had_error) { … … 1131 1138 sub enable_h264_streaming 1132 1139 { 1133 1140 my $self = shift (@_); 1134 1141 my ($doc_obj,$originalfilename,$filename,$convertto_regenerated, 1135 1142 $video_width,$video_height) = @_; 1136 1143 1137 1144 1138 1145 my $section = $doc_obj->get_top_section(); … … 1153 1160 my $streaming_HQ_AudioBitrate = $self->{'streamingHQAudioBitrate'}; 1154 1161 1162 my $ifilename = $originalfilename || $filename; 1155 1163 my ($stream_cmd,$oflash_filename,$oflash_file) 1156 = $self->stream_mp4_video_cmd($ originalfilename || $filename,1164 = $self->stream_mp4_video_cmd($ifilename, 1157 1165 $streaming_HQ_size, 1158 1166 $streaming_HQ_VideoBitrate, … … 1161 1169 1162 1170 my $streamable_options = { @{$self->{'handbrake_monitor'}}, 1163 1164 1171 'message_prefix' => "MP4 Stream", 1172 'message' => "Generating streamable MP4 video: $oflash_file" }; 1165 1173 1166 1174 1167 1175 my ($streamable_regenerated,$streamable_result,$streamable_had_error) 1168 = $self->$optionally_run_general_cmd($stream_cmd,$oflash_filename,$streamable_options); 1176 = $self->$optionally_run_general_cmd($stream_cmd, 1177 $ifilename,$oflash_filename, 1178 $streamable_options); 1169 1179 1170 1180 if (!$streamable_had_error) {
Note:
See TracChangeset
for help on using the changeset viewer.