web-dev-qa-db-ja.com

一度に2つの字幕を表示できるビデオプレーヤーはありますか?

Ubuntu 13.10を使用しています。

視聴中に一度に2つの字幕を表示できるビデオプレーヤーはありますか?

ありがとうございました。

3
rɑːdʒɑ

2srt2ass と呼ばれるツールがあり、2つの別個の字幕SRTファイルで2つの言語を取得し、それらを1つのSSA/ASSファイルに結合して、画面の上部と下部に1つの言語を表示します。

そのようなものはおそらく再生の面で最もクリーンなソリューションです(とにかく持っているプレーヤーを使用することができます)が、これを行うためのビデオがたくさんある場合は始めるのは少し手間がかかります。

同じことを行う代替手段: SrtMerger

buntu Forumsのawkスクリプト もあり、同じことができるかもしれません。

4
Oli

Smplayerは、有名なmplayer、多くのプレーヤーの背後にあるエンジン用のGUIです。ストックSmplayerで2つの字幕を簡単に表示できるようになりました。 2番目の字幕を2番目のトラックとして選択するだけで、プレーヤーはそれを自動的に一番上に配置します。 blog によると:

これはSVN r6474以降で利用可能であり、mpvが必要です。

Mpvをインストールするには:Sudo apt-get install mpv

それでも機能しない場合は、構成ファイルをリセットしてください。 Smplayerによると FAQ

SMPlayerの構成ファイルを見つける最も簡単な方法は、[ヘルプ]メニューの[構成フォルダーを開く]オプションを選択することです。現在の設定を削除してデフォルト設定で開始する場合は、smplayer.iniファイルを削除するだけです(重要:ファイルを削除するときにSMPlayerが実行されていないことを確認してください)。

1
egy

DualSub を使用して字幕をマージすることもできます。 DualSubは2つのSRT字幕を組み合わせて、画面の利用可能な幅を2列に分割します。高度な設定が可能で、結果のマージされたSRTは、さまざまなプレーヤー(VLC、Windows Media Playerなど、テレビでも)で使用できます。

楽しい!

0
DualSub

次の(bash)スクリプトを使用して、mergeSubtitle.shとして保存し、ターミナルで「bash mergeSubtitle.sh」と入力して実行します。

#!/bin/sh
# mergeSubtitle.sh: Script to merge 2 SRT subtitle into single one
# This is script is freely available under the GNU/GPL license
# Author: Antonymous X
# [email protected]
# 07/19/2015

test "$#" -ne 3  && echo -e "Usage: 2subs \"<LANGUAGE_FILE_1>\" \"<LANGUAGE_FILE_2>\" \"<COMBINED_LANGUAGE_FILE_OUTPUT>\"\nDouble quotes are required in most cases unless the filenames do not contain whitespaces"
test "$#" -ne 3 && exit 1 
lang_file1=$1
lang_file2=$2
lang_file3=$3
# Create an empty output file since we'll be appending
touch "$lang_file3"
cp /dev/null "$lang_file3"
# Load srt files into memory and set IFS to '#' to avoid confusion with whitespaces
file1=$(cat "$lang_file1"|sed -r ':a;N;$!ba;s/(,[[:digit:]]{3,3}\n|([[:digit:]]){1,4})\n|([[:alpha:]])\n/\1|/g'|sed -r 's/\|$/#/g')
file2=$(cat "$lang_file2"|sed -r ':a;N;$!ba;s/(,[[:digit:]]{3,3}\n|([[:digit:]]){1,4})\n/\1|/g'|sed -r 's/(.$)/\1\n/g')
IFS='#'
# Split the content.  Notice double quoting so it prints newlines
for line in `echo "$file1"`
do
     LINE=$(echo $line|awk -F'|' '{print $1}'|sed  ':a;N;$!ba;s/\n/ /g'|sed -r 's/[[:cntrl:]]//g'|sed -r 's/[[:space:]]//g')
     TIME=$(echo $line|awk -F'|' '{print $2}'|sed  ':a;N;$!ba;s/\n/ /g'|sed -r 's/[[:cntrl:]]//g'|sed -r 's/^[[:space:]]+//g')
     DIALOG=$(echo $line|cut -d'|' -f3-|sed ':a;N;$!ba;s/\n/ /g'|sed -r 's/[[:cntrl:]]//g'|sed -r 's/^[[:space:]]+//g'|sed -r 's/^[[:space:]]+//g'|sed -r 's/\|/ /g')
     DIALOG2=`echo "$file2"|grep "^$LINE|"|sed ':a;N;$!ba;s/\n|\t/ /g'|sed -r 's/[[:cntrl:]]//g'|awk -F'|' '{print $3}'|sed -r 's/^[[:space:]]+//g'`
# Display a basic progress bar
     echo -n "#"   
# Write to output file
     echo -e "$LINE\n$TIME\nl1:$DIALOG\nl2:$DIALOG2\n" >> "$lang_file3"
done
echo #
# Write a funny message
echo Thou have been served
exit 0
0
Antonymous X