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

发布于 2024-07-15 19:34:04 字数 95 浏览 10 评论 0原文

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

I've created subtitles for a video in mp4 format, that i would like to put online, as an FLV file.
Is it possible to have the subtitles played along with the flv file without integrating them into the video images, so keeping them in srt format ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清风无影 2024-07-22 19:34:04

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

  1. 将 .srt 文件转换为 xml 文件(下面的 php 代码),
  2. 然后添加指向 xml 文件的变量“captions”:

s0.addVariable("captions","path/to/字幕.xml");

实时示例

// 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";
}
}

?>

<代码>

I found a way, using JW flv player :

  1. convert your .srt file to an xml file (php code below)
  2. then add a variable "captions" pointing to your xml file:

s0.addVariable("captions","path/to/subtitles.xml");

live example 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";
}
}

?>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文