如何在网页中显示带有flv文件的字幕?

时间:2009-03-23 19:10:49

标签: flv flvplayback subtitle

我为mp4格式的视频创建了字幕,我希望将其作为FLV文件放在网上。 是否可以将字幕与flv文件一起播放而不将它们集成到视频图像中,从而将它们保留为srt格式?

1 个答案:

答案 0 :(得分:0)

我找到了一种方法,使用JW flv播放器:

  1. 将.srt文件转换为xml文件(下面的php代码)
  2. 然后添加一个指向xml文件的变量“captions”:
  3. s0.addVariable( “字幕”, “路径/到/ subtitles.xml”);

    直播示例here

    // script to convert multi-line srt caption files to new-format (02-05-08) tt XML caption files
    $use_cdata_tags = true;
    $debug_output = true;
    
    // the directory to write the new files in
    // it must exist, be writeable, and be outside of the directory that is being scanned
    $new_directory = '../temp/';
    
    /////////////////////////////////// no user configuration below this \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    
    // get filename or scan directory if it's a directory
    $filename = (isset($_GET["filename"])) ? strval($_GET["filename"]) : "./";
    
    // read each file into an array
    $it = new RecursiveDirectoryIterator("$filename");
    
    foreach(new RecursiveIteratorIterator($it) as $file)
    {
    
    // debug('Filename', $file); exit;
    // debug('Ext', substr(strtolower($file), (strlen($file) - 4), 4));// exit;
    
    // debug - only use test file
    // if($file == '.\multi-line_test_file.srt')
    
      // check for .srt extension
      if(substr(strtolower($file), (strlen($file) - 4), 4) == '.srt')
      {
        $ttxml     = '';
        $full_line = '';
    
        if($file_array = file($file))
        {
          // write tt , head, and div elements for the new file
         $ttxml .= "";
          $ttxml .= "\n";
          $ttxml .= "  \n";
          $ttxml .= "  \n";
          $ttxml .= "  \n";
          $ttxml .= "    \n";
    
          foreach($file_array as $line)
          {
            $line = rtrim($line);
    
    // debug('Line', $line);
    
            // get begin and end
            //                00  :  00  :  32  ,   000   -->   00  :  00  :  37  ,   000
            if(preg_match('/(\d\d):(\d\d):(\d\d),(\d\d\d) --> (\d\d):(\d\d):(\d\d),(\d\d\d)/', $line, $match))
            {
              $begin = $match[1] . ":" . $match[2] . ":" . $match[3] . "." . $match[4];
              $end   = $match[5] . ":" . $match[6] . ":" . $match[7] . "." . $match[8];
              $full_line = '';
            }
            // if the next line is not blank, get the text
            elseif($line != '')
            {
              if($full_line != '')
              {
                $full_line .= '
    ' . $line; } else { $full_line .= $line; } } // if the next line is blank, write the paragraph if($line == '') { // write new paragraph // Nothing is going on.

    if($use_cdata_tags) { $ttxml .= "

    \n"; } else { $ttxml .= " " . $full_line . "

    \n"; } // debug('Text', $line); // debug('ttxml', $ttxml); exit; $full_line = ''; } } // write ending tags $ttxml .= " \n"; $ttxml .= " \n"; $ttxml .= "\n"; // write new file $new_file = $new_directory . substr($file, 0, (strlen($file) - 4)) . '.xml'; $fh = fopen($new_file, 'w') or die('Can\'t open: ' . $new_file); fwrite($fh, $ttxml) or die('Can\'t write to: ' . $new_file); fclose($fh); } } } function debug($title, $value) { global $debug_output; if ($debug_output) { print "
    ";
        if (is_array($value))
        {
          print $title . ":\n";
          print_r($value);
        }
        else
        {
          print $title . ": " . $value;
        }
        print "
    \n"; } } ?>