maki-rxrz / caption2ass_pcr Goto Github PK
View Code? Open in Web Editor NEW[DL] https://1drv.ms/f/s!AtWZll0n7FiGjGj45fo564dwG5AW?e=FlPLXG
[DL] https://1drv.ms/f/s!AtWZll0n7FiGjGj45fo564dwG5AW?e=FlPLXG
I am trying compile your code using eclipse-cdt.
it reports:
Info: Internal Builder is used for build
g++ -O0 -g3 -Wall -c -fmessage-length=0 -o "src\\tslUtil.o" "..\\src\\tslUtil.cpp"
..\src\tslUtil.cpp: In function 'BOOL resync(BYTE*, FILE*)':
..\src\tslUtil.cpp:53:41: error: '_fseeki64' was not declared in this scope
_fseeki64(fp, -(188 - pos), SEEK_CUR);
^
Caption.all will assume all characters to be shift-jis encoded, causing this functionality practiaclly broken.
One solution comes from (NMM-HD)[https://www.nmm-hd.org/newbbs/viewtopic.php?f=16&t=720&p=6874] and it works perfectly on other codepages.
【詳細】
https://mevius.5ch.net/test/read.cgi/avi/1547654923/181
Caption2Ass_PCR で、.iniファイルに
[hoge]
PlayResX=1440
PlayResY=1080
とし、-asstype hoge としたときだけ、これが無視されて
PlayResX: 1920
PlayResY: 1080
という .ass ファイルができます。
他の数字のときは正しく反映されます。
PlayResX=1440 と PlayResY=1080 の一方だけ同じ数値でも、大丈夫です。
両方をこの数値にするときだけ、無視されます。
【原因】
Caption2Ass_PCR 0,2,0,6 (94a8e52) で追加された解像度変換(16:9→4:3)処理が有効な際に、ASS字幕のヘッダーに出力する解像度の値を管理している変数を計算用の値(=変換元16:9の値)で更新してしまっていた為、変換後4:3の値で出力されない状態になっていた。
【修正】
解像度の値を計算用と出力用で分けて管理、各々を使用する様に変更する。
【概要】
同一行に表示される2つの字幕データを連結する際にDRCS外字が含まれていた場合、
字幕同士の間にスペースを挿入せずに連結して出力する不具合が発生する。
【詳細】
まず発生条件に繫がる前提2つを提示。
[1]
2c769c5 (#2 参照)
で追加した字幕を連結する処理では文字数確認して挿入するスペースの数を決定してる。
(ASS字幕の表示位置をARIB字幕でのレイアウトに近しい物にする為)
[2]
字幕にDRCS外字が含まれている場合、Caption.dllの処理で「DRCS外字→ini指定の代替文字」へと置き換えが行われる。この置き換えにより、ARIB字幕での文字数とCaption2Ass_PCRが扱う文字列の文字数が一致しない状況が発生する。
(Caption2Ass_PCR は代替文字による文字数の増加を検知できない)
この前提 [1][2] により、連結対象となる字幕1・字幕2において、
代替文字により文字数が増加した字幕1の文字列の表示幅が字幕2の表示位置(X座標)に到達or超えてしまう状況が発生し、字幕同士の間にスペースを挿入せずに連結して出力する不具合が生じている。
【不具合例】
下記、■ が DRCS外字 (ini指定の代替文字:[ケイタイ])
・ARIB字幕
「■セリフ1」 「セリフ2」
・ASS字幕
「[ケイタイ]セリフ1セリフ2」
<補足> 求められる出力例
・ASS字幕
「[ケイタイ]セリフ1 セリフ2」
【修正】
ARIB字幕での文字数を Caption2Ass_PCR 上で取り扱う事が出来る様にする。
修正方法として下記2案を提示。
案1) 置き換え前の文字数を検出可能な様に Caption.dll の返すデータに情報を追加、Caption2Ass_PCR で計算に使用
案2) 代替文字への置き換えを Caption.dll 上で行わず Caption2Ass_PCR 上で行う様に変更
どちらの案も修正による影響が大きく検討が必要。※別アプリがCaption.dllを使う場合も考慮した変更にする必要有
【質問内容】
SRTやASS出力の時に、半角の記号(例:「(」「)」「(半角スペース)」)や文字(主にカタカナ、例:「ドア」「ゲーセン」)などを全角に出力することはできるでしょうか?
【使用環境】
Windows10、Caption2Ass_PCR_20170730
【現在の状況】
例1:
(男)ゲーセン?
例2:
・(ドアの音)
例3:
(少年)元カノだよ 元カノ
【予想の結果】
例1:
(男)ゲーセン?
例2:
・(ドアの音)
例3:
(少年)元カノだよ 元カノ
よろしくお願いします。
字幕の同一行連結出力の対応 ( #2 ) によって生じた不具合。
2c769c5 のコミットによって次の様な問題が発生している。
【不具合例】
HLC有 とHLC無 の字幕が同一行に表示、字幕間は隙間有。
・ARIB字幕 (※実際のHLCは四辺の囲み)
[ <HLC有> ] HLC無
・変更前の出力 (同一行に表示する字幕を別行に出力) ※SRTのみ
[ <HLC有> ]
HLC無
・変更後の出力 (同一行に出力するがHLC制御の囲みがない) ※ASS/SRT 両方
<HLC有> HLC無
【原因】
字幕別に持つHLC制御の情報をCaption2Ass_PCRの処理上で保持する中間データ毎に保持していなかった為、
連結出力時にHLC制御に応じた記号("[","]")をASS/SRT字幕に付与せずに出力してしまう。
【補足】
NHK(BSプレミアム)のTSデータにて本不具合の発生を確認。
What did I run?
Caption2Ass_PCR.exe "日本語.ts" -format srt
Expected Behavior
A file called "日本語.srt" is created.
Actual Behavior
Creation of the file fails, because file can not be read. The console gives following error:
[Source] ???.ts
[Target] ???
[Format] srt
Open TS File: ???.ts failed
Since no file called ??? exist, the program cannot run.
何を実行しましたか?
Caption2Ass_PCR.exe "日本語.ts" -format srt
想定される行動
日本語.srtというファイルが作成される。
実際の動作
ファイルを読み込めないため、ファイルの作成に失敗しました。コンソールでは以下のようなエラーが表示されます。
[Source] ???.ts
[Target] ???
[Format] srt
Open TS File: ???.ts failed
'???'というファイルが存在しないため、プログラムは実行できません。
【概要】
2行に渡って表示される字幕データの内、2行目の字幕の表示位置を間違った値で出力するケースが存在する。
【発生バージョン】
Caption2Ass_PCR 0,2,0,1 以降。
【状況】
Caption.dllから得るデータで、字幕2行目の表示位置の値が0で返される場合があり、
Caption2Ass_PCR側の表示位置算出に間違った計算処理を適応し、動画の範囲外となる値を出力してしまう。
【対応】
Caption.dll の処理を確認中。
一時的な処置としてCaption2Ass_PCR側に2行目の表示位置が無効な値(0)だった場合に補完する処理を追加。
b6b1e2c
--
(追記) 上記コミットではNG。
【概要】
2chでの以下の報告。
【開発】 TS関連ソフトウェア総合スレ Part16
http://echo.2ch.net/test/read.cgi/avi/1454953262/483
483 名前:名無しさん@編集中[sage] 投稿日:2016/12/19(月) 18:33:26.72 ID:AAdfwpQC
Caption2Ass_PCR.exe使ってるんだが、
BSアニマックスのassもsrtも、
空白「」・()。で改行されてしまうわ。
無料放送のせいかな?
【原因】
該当番組の字幕データは、同一行上に表示される字幕内容の各文字列のデータ間に
画面消去(CS)の制御符号が挿入されている。
Caption2Ass_PCR はCSの制御符号を処理中の行の終端と見なして出力を行っている為、
同一行上に表示される各文字列を別行に区切った形で出力してしまう。
例)
<通常番組>
[じゃあ][ ][もう一度][。]['CS']
↓↓↓
「じゃあ もう一度。」
<BSアニマックスの一部番組>
[じゃあ]['CS'][ ]['CS'][もう一度]['CS'][。]['CS']
↓↓↓
「じゃあ」
「 」
「もう一度」
「。」
【修正】
各文字列に設定された表示位置から、同一行上に文字列が繋がる形で表示されるかを判定、
該当文字列達を1行の字幕に連結して出力する様に修正。
HLC制御に関して、以下の問題が存在する事を確認。
( HLC制御に対応した最初から存在する不具合 )
【不具合内容】
HLC制御の出力指定(-hlc オプション)に box/draw を指定した際に、HLC制御として付与する矩形領域がHLC有の文字表示領域より小さいサイズとなるケースが存在する。
【発生条件】
HLC有の字幕データが語句毎に区切られている場合。
例) 文字前後にスペース有 (HLC制御はスペース含めてON)
文字
↓↓↓
・記号("[","]") 指定の場合
[ 文字 ]
・box/draw 指定の場合
文字
【原因】
box/draw 指定時のHLC出力はHLC制御ONとなった時点の字幕データを元に矩形領域のサイズを算出している為、最初に出現するスペース分の領域サイズで矩形情報を出力してしまう事で本不具合が発生している。
【補足】
NHK(BSプレミアム) のデータにて不具合発生を確認。
Onedrive download link error
{"error":{"code":"generalException","message":"General Exception While Processing"}}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.