2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

【開発】 TS関連ソフトウェア総合スレ Part13

1 :名無しさん@編集中:2014/01/05(日) 00:15:08.32 ID:e/ygnYY5.net
専用スレが立っていないTS周り諸々のソフトウェアについて語りましょう

過去スレ
【開発】PT1 Friio HDUS bon系 TS関連ソフトウェア総合スレ (Part1)
http://pc11.2ch.net/test/read.cgi/avi/1230739003/
【開発】 TS関連ソフトウェア総合スレ Part2
http://pc11.2ch.net/test/read.cgi/avi/1235667096/
【開発】 TS関連ソフトウェア総合スレ Part3
http://pc11.2ch.net/test/read.cgi/avi/1240726004/
【開発】 TS関連ソフトウェア総合スレ Part4
http://pc11.2ch.net/test/read.cgi/avi/1246099246/
【開発】 TS関連ソフトウェア総合スレ Part5
http://pc11.2ch.net/test/read.cgi/avi/1252674823/
【開発】 TS関連ソフトウェア総合スレ Part6
http://pc11.2ch.net/test/read.cgi/avi/1259061990/
【開発】 TS関連ソフトウェア総合スレ Part7
http://pc11.2ch.net/test/read.cgi/avi/1269400568/
【開発】 TS関連ソフトウェア総合スレ Part8
http://hibari.2ch.net/test/read.cgi/avi/1279108411/
【開発】 TS関連ソフトウェア総合スレ Part9
http://hibari.2ch.net/test/read.cgi/avi/1314275425/
【開発】 TS関連ソフトウェア総合スレ Part10
http://toro.2ch.net/test/read.cgi/avi/1323049561/
【開発】 TS関連ソフトウェア総合スレ Part11
http://toro.2ch.net/test/read.cgi/avi/1341073328/
【開発】 TS関連ソフトウェア総合スレ Part12
http://toro.2ch.net/test/read.cgi/avi/1358933709/

722 :名無しさん@編集中:2014/08/05(火) 18:57:20.06 ID:aSy5oO72.net
>>721
712で言いたかったのは、MurdocでCMカットの断片接合を作り、tstimekeeperで
連続PTSにして再生しているというとか、transcoderに入力して良好な結果を得ていると
いうようなやり方は、実は「ごまかし」であり、見かけ上「ごまかし」に気が
付かない場合が多いのだということです。
Mordocで音ズレするという報告の多くは、demux-muxやtetimekeeperなどを使っての
PTS振り直しを行わず、再生や変換を試みてみたりしているのが原因だと思います。
また、Murdocでは切断場所によって、開始位置での音声モードが本来と違うモードに
認識されてしまうように切り出されることがしばしばありますので、切片先頭で
音声モードが正しく認識できる箇所で切られているかを確認する必要があります。
WOWOWの5.1ch映画先頭のstereo-5.1に変化した直後の数GOPはまともに5.1chと
認識されない場合が多いのが一例です。 MurdocでのCMカットで、もう一つの
Murdocを起動して、中抜き箇所の次のGOPの音声認識をしつつ、行う人はほとんど
いないと思いますが、断片を別々にファイルセーブして、断片先頭の音声認識を
調べると音声モード認識間違いが起きるようにカットされた断片をしばしば目にします。
これらのチェックを行わずに単純にCUT編集したのでは「音ズレ」や再生中止、変換中止に
なるのは当然です。

723 :名無しさん@編集中:2014/08/05(火) 18:58:07.30 ID:aSy5oO72.net
私が言いたいのは、TS断片のファイルでは先頭処理だけでなく末尾処理を
行なっておかないとトラブルの原因になるということです。
またきれいな終端部を得るためには、切り出しソフトがちゃんと最終映像パケットに
対応する音声パケットを持つように切り出さなければいけませんが、市販ソフトや
公開フリーウェアソフトの大半では処理仕様が不明です。 だったら切り出しソフトを
作ってしまおうと考えるところです。
 尚、切断してファイル収録してしまったものを事後処理で調整しようとすると、
最終映像対応の音声は切り落とされていて存在しないため、幾つかの映像パケ
ットを切り落とすか、無音音声を挿入するかになりますが、こんなことをやるぐらいなら、
切り出し時に最終映像対応の音声パケットを含むように切り出すべく、切断ソフトを
選択/改造/開発しようと思います。 「選択」でいいものがあれば教えてください。

>>「TS としてきちんと同期再生できるなら、いずれにせよ問題ないわけだし。 」
TSとしてきちんと同期再生できても、変換成果物のマージで音ヅレが出るようなTSでは困ります。

724 :名無しさん@編集中:2014/08/05(火) 19:17:54.38 ID:gd/LKyn0.net
いいからさっさと形に

725 :名無しさん@編集中:2014/08/05(火) 20:22:21.73 ID:jLkd8n5x.net
>>722-720
そんなことあんた以外みんなわかってるって、何をいまさら
あんたそれに対して次の方向性なんにも語らんよなぐちぐち言ってるだけで
これだから夏休みは・・・

726 :名無しさん@編集中:2014/08/05(火) 20:43:02.30 ID:/PLuf0I8.net
そもそもTSファイル自体が連続してるストリームの一部を切り出したものだろ
先端終端が都合いいなんて保障はないのが当然で必要ならマージ側がきちんと対処すべき事柄だろ

727 :名無しさん@編集中:2014/08/05(火) 22:18:31.37 ID:X4Joj0o6.net
小保方のマムコの代償は随分と高くついたな

728 :名無しさん@編集中:2014/08/05(火) 22:23:55.53 ID:aHaXrzDZ.net
音声だけ切断を正しい位置まで遅らせるって方向性はアリだと思う
ただ再結合が通常の単純な貼り合わせで済むかどうかが微妙かな

映像と音声が規定の時間差を保った状態で他のストリームも含めて規定の均等さで直列化されてるのが通常のTSだけど、
音声だけが暫く並んで一時的に時間ずれがゼロになり、
今度は映像だけが暫く並んでまた規定の時間ずれに戻るという結合部分のイレギュラーなTS並びが正常に処理されるのかどうか
実作業に入る前に目的の再生環境がその規定から外れたTSを受け入れるかどうかは確認しておいた方がいいかもしれんね
もし再生環境がバッファリング乱れ(プチフリ)等を起こすなら、結合前後のパケットの再配置を行う結合コードも実装が必要になってくる

tsselectの抽出機能を尻尾の後続部分に対して利用すれば試験TSはそこまで手間かけずに作れるだろう

729 :名無しさん@編集中:2014/08/05(火) 22:48:43.15 ID:KDZ28yG3.net
いくら接合面を綺麗にしたところで、結局GOP単位なんだから、
人間から見れば接合面前後で必ずゴミが見えることになるわけで、
そこはどうでも良いという人間のくせに、切断面だけはやたらと気にするんだな。

先頭の整形は意味があるが、昆布のCオプションで充分だけどな。これで先頭を
綺麗にしておくと、再生時に画が出るのが速くなるというか、一瞬の遅れが無くなる。

730 :名無しさん@編集中:2014/08/05(火) 23:11:48.44 ID:aHaXrzDZ.net
多分やりたいのは無劣化でのCMカットとかそういう事じゃないかと思う

ぶっちゃけ音声に関してはCM切り替え前に400ms程度だったらまるまる無音区間とか
どうでもいい音源な事も多いから、実質的効果がどんだけあるのかってのは俺も思う

ただGOPに関してはちょっと同意出来んかな
机上の理屈としてはopenGOPの場合は前フレが欠落した場合はGOP全体が乱れる事になるはずだが、
CM前後のような全く異なる画像の場合はIフレへの流用が少なく、乱れる時でも3フレ(IBB)以内にほぼ収まる
少なくともこれまで実際に地上波/BSのopenGOPをデコーダに直接突っ込んだ時はそういう画像だった

それを踏まえて考えた時に、前のCMを1GOP分残して無駄なコマを入れるか、無劣化を諦めて必要なコマだけで繋ぐか、
3フレ以内の乱れを許容して必要なコマだけで無劣化のまま繋ぐかで3番目を選ぶのはなくはねーと思う

731 :名無しさん@編集中:2014/08/06(水) 00:09:50.73 ID:ldUodyog.net
車輪の再発明やってんのか、ここは

732 :名無しさん@編集中:2014/08/06(水) 00:52:49.75 ID:iBd2PVhO.net
発明はしてない

733 :名無しさん@編集中:2014/08/06(水) 02:30:05.61 ID:WRELGeWt.net
>>730 「多分やりたいのは無劣化でのCMカットとかそういう事じゃないかと思う 」

   そうじゃない。

 途中で音声モードが変更されるcaptured-TS(mpeg2/aac)から、終始同一の音声モードになっている
1本ものの.m2ts(H.264/ac3)を得るために、TSを音声モードで分割して各々transcodeし、音声モードが
揃うようにして得た.m2tsをマージすることで、これを得たい。
この際、.tsからffmpeg、x264で.m2ts(H.264/ac3)を作ると、元のTSで末尾音声が
切り落とされているために、.264に比べて.ac3が短くなったものになってしまい、
数個の.m2tsをマージした時には音ヅレが発生してしまう。 これを防止するために、
各.m2tsで映像長と音声長を揃えておく必要があり、そうするために元のTSの映像の最終PTSと
音声の最終PTSを揃えておきたい。

734 :名無しさん@編集中:2014/08/06(水) 02:32:14.06 ID:WRELGeWt.net
元の各TS断片の映像の最終PTSと音声の最終PTSを揃えておきたい。

735 :名無しさん@編集中:2014/08/06(水) 07:43:24.22 ID:uLE9XNgo.net
>>730
>机上の理屈としてはopenGOPの場合は前フレが欠落した場合はGOP全体が乱れる事になるはずだが、
いや、MPEG-2 の場合、先頭の BB だけじゃない?
H.264 だと参照の自由度が高いのでもっと広範囲に影響するんだろうけど。
それはともかく、あの乱れは特殊ワイプだと思えば別に気にならないw

736 :名無しさん@編集中:2014/08/06(水) 07:44:43.33 ID:uLE9XNgo.net
>>733
>>694 では音声の変換は特殊な例と書いてたが、それがメインだったの?
音声再エンコでいいならいくらでも方法はあるが、
どうしても TS を切ってそれぞれ変換したあとくっつけたいの?
いくら末尾を調整したところで境界問題から正確なものにはならず、
断片が多いと誤差がどんどん蓄積されるようなものにしかならないが、
そんなので嬉しいの?

737 :名無しさん@編集中:2014/08/06(水) 08:32:07.32 ID:pJ31/nt4.net
いいからぼくのかんがえたさいこうの(ry
を完結にまとめろよ。
だらだら長いんだよ。

目的が手段になってね?

738 :名無しさん@編集中:2014/08/06(水) 09:43:50.10 ID:Hv1hWXT5.net
>>735
スマン
openだと何かIフレもIフレ同士で前方参照を使う事があるような誤解をしてたわ

しかしだとすると乱れは理論上は0〜2コマ(Bフレ2つの場合)に収まらないとおかしい事になるが、
たまにBフレ2つ形式でもGOP内3コマ目まで乱れてたのは何だったんだ
またDirectShowデコーダ特有の流し始めの怪しい挙動の一部か?
やっぱり見て捨ての順方向視聴でなく無作為プレビューにはDirectShowフィルタの実装は向かない、素直にlibavcodec使えって事か…

739 :名無しさん@編集中:2014/08/08(金) 21:04:22.16 ID:cr5mSlnK.net
Marumo ISDB Splitterでtsファイル再生するとカードリーダーのランプが点滅してうざい
スクランブル解除機能ないくせに何故カードを読みに行く

740 :名無しさん@編集中:2014/08/09(土) 00:00:36.22 ID:X2LIxmNC.net
ランプにビニテでも張っておくか、カードリーダ自体を見えないところに移せよw

741 :名無しさん@編集中:2014/08/09(土) 01:26:24.98 ID:Vuf8vpET.net
さくらはほんとにエロイな

742 :名無しさん@編集中:2014/08/09(土) 06:20:12.90 ID:H2m2ZnZK.net
TSをスマートレンダリングで編集できるフリーソフトが未だに一つも出てこないのは何故なのか
技術的にそんなに難しいもんなの?

743 :名無しさん@編集中:2014/08/09(土) 10:20:03.78 ID:iKggiKDk.net
技術的に簡単ならそれを実装してるフリーソフトがいくつも出来てるよ

744 :名無しさん@編集中:2014/08/09(土) 10:47:04.94 ID:VIVVLaqJ.net


745 :名無しさん@編集中:2014/08/09(土) 15:13:02.84 ID:ZmJ0Avhu.net
>>742
無い事もないが
UIが使いづらいから却下だよな。

746 :名無しさん@編集中:2014/08/09(土) 16:27:42.72 ID:8Arh2u0a.net
フレーム単位でカット編集しようと思ったらどうしても先頭GOPは再エンコしなきゃならんからな

747 :名無しさん@編集中:2014/08/09(土) 17:29:12.14 ID:H2m2ZnZK.net
>>745
なんていうソフト?

>>746
それって難しいことなのか

748 :名無しさん@編集中:2014/08/09(土) 17:39:45.74 ID:u29+SnMK.net
MPEG2の再エンコードにはライセンス料金が必要だから。

749 :名無しさん@編集中:2014/08/09(土) 17:40:26.88 ID:H2m2ZnZK.net
なるほど

750 :名無しさん@編集中:2014/08/09(土) 18:08:01.53 ID:ZmJ0Avhu.net
たとえばJahshakaやShotcutとか。

751 :名無しさん@編集中:2014/08/09(土) 18:33:09.49 ID:6Ldzq7u+.net
>>747
難しいってより、お前が気にする事じゃない。
そんな事より自力で検索なりできるようになる事だ。

752 :名無しさん@編集中:2014/08/11(月) 21:53:29.94 ID:Z9wiHDdJ.net
MurdocCutterは画面を見ながら切断箇所を指定する使い勝手がいいが、指定箇所最後のGOP映像の
音声が一部切り離されてしまうのが欠点だ(先頭の切り捨て映像対応の音声パケットは、ハンドリングする
殆どのソフトでは「出だし同期」で処理される)。
今回MurdocCutter(V.19g1)で作成したGOPファイルと切断指示して作成したClop-fileとを使って、
最終音声を保持して切り出しできるコマンドラインアプリのプログラムを作ってみたところ、結果良好。
Murdocで単純切り出しした.tsをdemux-mux処理で先頭部処理した.tsでは 映像再生時間に比べて、
音声再生時間が 200〜400msec短くなってしまうが、末端部処理を考慮した今回のプログラムで切り出すと、
映像/音声の再生長の差は0〜20msecの範囲に収めることができた。

動作としては、選択領域の先頭パケットから最終パケット以後の数GOP分のパケットまで、
PIDフィルタリングして、出力ファイルにコピーするが、この際、映像/音声を各々PTSで取捨選択する仕様である。
(元々のMurdocでは選択領域の先頭パケットから、領域に続くGOP直前のパケットまでを、PIDフィルタリングして
コピー出力する。)
(1)選択先頭GOPおよび続く数GOPでは、PIDフィルタリングして単純コピーするが、音声パケットについては
 PTSが先頭映像のPTSの値以上になるまではコピーしない。超えたPTSのパケットが来た以後は、フィルタリング
 されたPIDのパケット全てを選択指定域の最終パケットまで単純コピーする。
(2)選択領域のコピーに続いて、数GOP分のパケットを、音声パケットのPTSが指定域に続く映像GOPのPTS値を
 超えるまで単純コピーする。 この際、映像パケットはskipして、コピーしない。

753 :名無しさん@編集中:2014/08/11(月) 22:15:33.53 ID:Z9wiHDdJ.net
> afterMurdoc(実行ファイル名) cropfile名(.bin) 出力ファイル名(.ts) enter で動かす。
(MurdocCutterはエラーチェックやPID選択指定、切り出し領域指定の機能だけ使い、GOPファイルと
clipファイルを作成するのに用い、実際の切り出しは自作プログラムで行う。)

入力する元のTSファイルへの絶対パスや選択PIDのリスト、選択GOP領域はcropfileから読み出し、
選択領域GOPの先頭映像パケットのPTS値、パケット連続番号、および選択領域の次のGOPのそれらは
GOPファイルから読み出す(GOPファイルはMurdocで「入力TSファイル絶対パス.txt」に自動的に命名されて
いるので、元のTSファイル名からGOPファイル名がわかる)

754 :名無しさん@編集中:2014/08/11(月) 22:25:13.44 ID:Z9wiHDdJ.net
今回参考にしたページ
 ttp://www.nhk.or.jp/strl/publica/bt/en/le0011.pdf
 ttp://dvd.sourceforge.net/dvdinfo/pes-hdr.html

755 :名無しさん@編集中:2014/08/13(水) 13:32:38.46 ID:GH+egBp1.net
おっぱい揉みて〜な

756 :名無しさん@編集中:2014/08/13(水) 16:17:17.93 ID:4S5phpNM.net
自分ので我慢しとけ

757 :名無しさん@編集中:2014/08/17(日) 12:44:01.81 ID:6A17RnRg.net
種無し巨峰は美味い!

758 :名無しさん@編集中:2014/08/17(日) 21:24:30.45 ID:fy7A/nYD.net
MurdocCutterで切り出したTSをBonTSDemuxV1.10mod10k7に通してm2v+aacにしたら、-18時間という異常なDelayのファイルがでた。
なんだかAudioのPTSが-1になってて、それとVideoのPTSと比較してるから異常になっている模様。
2個目のAudioPTSは正常に取れてるっぽいんだが、最初に失敗するるのはなんでだろう?

759 :名無しさん@編集中:2014/08/17(日) 21:31:32.87 ID:HnLz/CRM.net
MurdocCutter

760 :名無しさん@編集中:2014/08/17(日) 21:33:25.71 ID:+EQlwx2y.net
1日かけて鑑賞してみろや

761 :名無しさん@編集中:2014/08/18(月) 13:02:40.02 ID:9SQnvBUv.net
>>758 説明不足ですね!

(1)全部のTSについて、そうなるのですか?
(2)「-18時間という異常なDelay」のDelayはどうやって調べた結果ですか?
  ほかのやり方でDelayを調べてみても、同じ結果なのですか?
(3)「2個目のAudioPTS」における、1個目、2個目の数え方はどのように数えるのですか?

762 :名無しさん@編集中:2014/08/18(月) 13:47:46.74 ID:CInGzPIm.net
今時なんのためにm2vなんかにするんだ?

763 :名無しさん@編集中:2014/08/18(月) 14:15:24.79 ID:tn4KwoaR.net
エンコ

764 :名無しさん@編集中:2014/08/18(月) 14:17:03.40 ID:NnCyXJP6.net
いまどき分離しなくたっていいじゃんw

765 :名無しさん@編集中:2014/08/18(月) 18:01:23.45 ID:7ox6DU8F.net
知ったか乙。プププw

766 :名無しさん@編集中:2014/08/19(火) 00:43:23.49 ID:Xbp2yKx0.net
>>761
レスどうもです。

(1)全部ではないです。
今のところ90ファイル試したのうち2ファイルが異常値を出しています。
DELAYが-67854087msのファイルと-21105016msのファイルになってます。
同じ番組の別の切り出しファイルは正常値です。

(2)分離されたaacファイルは元ファイル名+" DELAY %dms.aac"が付加されるのでそこで気づきました。
TsConverter.cpp L534でdiffがその異常な値になっているのは確認できました。
他の遅延確認方法は知らないです

(3)TsDemuxer.cpp L178にブレークポイント設定しておいて
1回目のブレークでは
m_FirstAudioPts = pPacket->GetPtsCount();に-1が返ってきています。
2回目のブレークでは
m_NowAudioPts = pPacket->GetPtsCount();に6106843849(ビデオPTSに近い値)が返ってきています。

m_FirstAudotPtsとm_FirstVideoPtsの差がファイル名に付加されるのに-1と差をとってるので
とんでもない値になってしまっています。

TSで再生する場合は2個目のAudioPESが来たときに同期が行われるので異常値は影響を受けないのかと

1個目に気づいたファイルが16.2MBの小さいファイルだったので小さいのが原因かなと思ったけど
2個目みたら3,3GBあるのでファイルサイズは関係ないことだけはわかった

TSがそもそもおかしいのか、MurdocCutterがオーディオのストリームを細工してるのか、それともBonTsDemuxがバグってるのか

767 :名無しさん@編集中:2014/08/19(火) 04:52:18.81 ID:H9OGMpNv.net
>>766
TSの中のオーディオパケットには、形式的なタイムコードが「0xfffffffff」になっているものが
多数あります。 不勉強ゆえに、このタイプのPESヘッダを持つレコードが何を意味しているのか
わかりませんが、PTS取得の際にはこの種のパケットは無視するようにすると、
すべてうまくいくようです。 BonTSDemuxV1.10mod10k7のソースを見ていませんが、この種の
パケットの扱いにバグがあるのだろうと思います。
以下、私のプログラムでのaacパケットチェックの一例です。

clip PID list:
PID type name
0000 PAT
0301 PMT
0311 PCR PID
0340 V MPEG-2 Video
0341 A MPEG-2 AAC
********** 1th clip list end ******

SELECTED clip( GOP ) start from 30th untill 11875th : 11845 GOPs
SELECTED clip(PACKETS) start at 208246th untill 72788378th : 72580132 packets

at 208379th: pidinfo=5a pidnum=0341 found pts = 7263868515.0 ( 22:25:9.650 ) ST=7263910553.0(22:25:10.117)
ERROR getpts(): 208597 th TS packets header : 47 43 41 18 00 00 01 c0 02 da 80 00 07 ff ff ff ff ff ff ff
ERROR getpts(): 208597 th A/V PES packets with timecode : 00 00 01 c0 02 da 80 00 07 ff ff ff ff ff
at 208818th: pidinfo=5a pidnum=0341 found pts = 7263870435.0 ( 22:25:9.672 ) ST=7263910553.0(22:25:10.117)
at 209041th: pidinfo=5a pidnum=0341 found pts = 7263872355.0 ( 22:25:9.693 ) ST=7263910553.0(22:25:10.117)
ERROR getpts(): 209258 th TS packets header : 47 43 41 14 00 00 01 c0 02 da 80 00 07 ff ff ff ff ff ff ff
ERROR getpts(): 209258 th A/V PES packets with timecode : 00 00 01 c0 02 da 80 00 07 ff ff ff ff ff
at 209475th: pidinfo=5a pidnum=0341 found pts = 7263874275.0 ( 22:25:9.714 ) ST=7263910553.0(22:25:10.117)

768 :名無しさん@編集中:2014/08/19(火) 05:30:00.49 ID:ph/7f32Y.net
PTSがあるのはPTS flagが立ってる時だけ

769 :名無しさん@編集中:2014/08/19(火) 07:56:00.26 ID:SWB5Z+ed.net
PESヘッダの8バイト目を全く見てないのか
PTSが全装されてるAACは実放送じゃ普通だからテストの不備は問えんとしても、
これは仕様くらい読んでから実装しろと言われて仕方ないレベル

てかそれで何でPTSの変換式だけはちゃんと入手してんだよw

770 :名無しさん@編集中:2014/08/19(火) 11:13:43.54 ID:H9OGMpNv.net
>>769
 説明の表現が悪かったですね。 提示例では、ちゃんと PTS/DTS Flag を
チェックして、PTS/DTS-decodeのerrorを報告しています。
Payload-unit-startflagが立っているのに、PTS/DTSがない
オーディオパケットがあるのに注意すべきだといっているのです。

771 :名無しさん@編集中:2014/08/19(火) 11:53:43.18 ID:SWB5Z+ed.net
>>769は元のBonTSDemuxの実装の事を言っているのだが

772 :名無しさん@編集中:2014/08/19(火) 12:00:05.28 ID:yFQTz/EO.net
>>770
立ってないって。

00 00 01 -> start_code_prefix
c0 -> stream_id
02 da -> packet_length
80 -> ('10' / scramble_ctrl / priority / alignment_indicator / copyright / original_or_copy)
00 -> (pts_dts / escr / es_rate / dsm_trick_mode / copyinfo / crc / extension)
07 -> header_length

だから、pts_dts_flag は 0 じゃん。

773 :769:2014/08/19(火) 12:13:12.11 ID:yFQTz/EO.net
ん、違ったか。pts_dts_flag が立ってると主張してたわけじゃないか。スマン。
764 のログがフラグ見ずに PTS 取得してるとしか思えない内容だったので誤解した。

774 :名無しさん@編集中:2014/08/19(火) 12:45:49.33 ID:FsVCMROH.net
>>770
注意するも何も、Payload-unit start indicatorとPTS/DTSの有無には何の関係も無いわけで
TSパケットとPESパケットじゃ層が違うんだから、TSのフラグでPESの内容仮定してるようなプログラムがもしあるなら、
それは明確にダメプログラムでしょ…

775 :名無しさん@編集中:2014/08/19(火) 14:15:44.89 ID:ezloeLcC.net
まじでこっちでやってほしいレベル
TS初心者勉強会 27頁目
http://peace.2ch.net/test/read.cgi/avi/1397459139/

776 :名無しさん@編集中:2014/08/19(火) 14:29:08.95 ID:H9OGMpNv.net
おっしゃるとおり、Payload-unit start indicatorと
PTS/DTSの有無には何の関係もありません。 ただ、今回のケースでは
ファイル先頭部付近にあって、頭が切り離されて途中から始まった形の、
パケットはゴミですので捨てます。 ちゃんんと使い物になるパケットが始まる
(Payload-unit-startflagが立っている)のPTSのみに注目すればよく、
Payload-unit-startflagが立っていないものは、以下同伴家族として扱えばいいと
思います。 PESの内容判断の前にPayload-unit-startflagでふるい分けを
した後で、PTS付音声パケットであることを確認して、audio-delay算出の基になる
音声開始PTSを得るべきです。 ファイル先頭部の前出「音声ゴミ」はプレーヤー
やエンコードプログラムでは無視されるはずですので、Payload-unit-startflag
の立っていないパケットに着目する必要はないと思います。
着目しても意味がありません。

777 :名無しさん@編集中:2014/08/19(火) 14:54:29.22 ID:I8TBK4bL.net
なあ、そろそろこの質問のふりして自分が語りたいだけの長文君は無視しようぜ

778 :769:2014/08/19(火) 16:19:26.94 ID:yFQTz/EO.net
>>766
罪滅ぼしに軽く BonTsDemux のソースを眺めてみた。
結論から言うと、BonTsDemux のバグに見える。

763 も書いてる通り、TsDemuxer.cpp の 153〜190 行
[ CTsDemxuer::OnPesPacket() ] で

 m_FirstVideoPts
 m_FirstAudioPts

とかを設定してて、この二つから GetM2VAACDif() が diff を求めてるの
だけど、PTS を持たないケースを想定してない。

if (m_FirstAudioPts==0) のブロックで PTS が -1 なら 0 に戻して
即 return すれば解決しそうな気がするけど、影響範囲の精査は
してないのでバグがあっても責任はとれない。

779 :名無しさん@編集中:2014/08/19(火) 16:42:32.07 ID:zcptzzLq.net
>>777
あぁ、このスレで久々に名文をみた

780 :名無しさん@編集中:2014/08/19(火) 19:46:42.05 ID:FsVCMROH.net
>>776
それならわかるよ
でも>>770じゃ言葉が足りなさすぎて、TSとPESの層の違いを理解してない人に見えちゃうからさ
注意した方が良いかもね


で、俺も軽くBonTsDemuxのソースみてみた
>>769の疑問への答えとしては、CPesPacket::GetPtsCountでちゃんとPTS/DTSフラグのチェックはしてる
(フラグが立ってなかったらエラーとして-1が返る)
でも>>778の言う通り、最初の音声PES見つけた際にそのエラーのチェックをやってないな
CTsDemuxer::OnPesPacketにそのエラーチェック入れたらとりあえず>>758の状態は発生しなくなりそう
ただそれだけじゃ、こないだ話題になった先行映像に対応する音声パケット残りの影響の問題は残るかも

まあそこも含めて正しい音声delay値を取得するようにする事自体は大した手間じゃないと思うけど、
その手のチェックをCTsDemuxer::OnPesPacketに追加した場合の他への影響は>>778同様調べてないから、
修正するなら他の箇所への影響が問題無い事を要確認
(Demuxerの音声の頭出し部分なんだし、大丈夫なんじゃないかなーとは思うけど)

781 :名無しさん@編集中:2014/08/19(火) 20:18:30.37 ID:SWB5Z+ed.net
ああなるほど、仕様の理解が適当でフラグ自体を見ていない訳ではなく、
異常系が正常に流れてないコード不備があるって話なのか・・・納得

高度な対応をするなら最初にPTSが見つかったPESから先頭まで
順番にADTSフレームを遡って再生時間(サンプル数/sf_indexサンプリング周波数)を
引いていって正しいPTSを計算して使うという手もあるが、どうせ後処理で対応出来ない
ツールが出て来るだろうし、再生ソフトの方も対応出来んだろうから
PTSのない冒頭のPESは無視するのが妥当か

本来ならPTSを持たないその冒頭のPESヘッダを加工してPTSを突っ込んで
やればいいんだが、映像と違って音声はパディング0でマージンバイトの
ない運用の局がかなり多いのが処理として面倒臭い

782 :755:2014/08/19(火) 23:04:44.11 ID:Xbp2yKx0.net
m_FirstAudioPtsが参照されている部分を見た限りではpPacket->GetPtsCount()で-1が返ってきたら捨てればよさそうね。
CAdtsParser::CAdtsParserの中でADTSヘッダを探してるから1個めはどのみち捨てられてるっぽいし。
でもPTSの正常値には0が含まれるんだから、m_FirstAudioPtsの初期値(未設定値)を-1にした方がよくないかな?

検証用にファイルあげてみる(24時間後位に消えます)
ttp://www1.axfc.net/u/3300734
DLパスはこのスレのサーバー名*****.2ch.netの伏字

783 :755:2014/08/19(火) 23:19:07.49 ID:Xbp2yKx0.net
あ、CAdtsParser::StorePacketの中の書き間違いだ

784 :名無しさん@編集中:2014/08/19(火) 23:59:40.42 ID:VmRuCIA7.net
>>777
いちいちあぼーんするのめんどいな

コテつけろよ

785 :名無しさん@編集中:2014/08/20(水) 00:53:28.21 ID:VXX0AXQk.net
つNGID

786 :名無しさん@編集中:2014/08/20(水) 01:16:29.55 ID:/mhWecvl.net
アホ
それをいちしちやるのが面倒なんだろ

787 :名無しさん@編集中:2014/08/20(水) 02:47:14.09 ID:JREREQdN.net
NGにいれても日付が変わると無意味になるのに

788 :名無しさん@編集中:2014/08/20(水) 03:06:54.50 ID:945lsAkM.net
人生など高々残り20000日なのだ
そのくらい面倒臭がらずにやりなさい

789 :名無しさん@編集中:2014/08/20(水) 03:12:37.08 ID:zqrFCPYg.net
正規表現で文字数多いレスをNGにでもすれば?

790 :名無しさん@編集中:2014/08/20(水) 03:14:39.62 ID:JREREQdN.net
ねちっこくNGするよりスルー耐性をみにつけろ。

791 :名無しさん@編集中:2014/08/20(水) 10:16:26.98 ID:VXX0AXQk.net
スルーできずに文句言うより
さっさとNGIDに登録したほうが有益

792 :名無しさん@編集中:2014/08/20(水) 13:00:39.45 ID:nhJNpziC.net
>>776
あげ足を取るつもりはないのだが、大多数の人が誤解しているので、強調しておきます。
「正しい音声delay値を取得するようにする」といっても、「正しい音声delay値」というのは
元々ありません。 .mpegなどのPSファイルにはストリームヘッダに定義された「audio-delay」
が存在しますが、TS型ファイルについては「audio-delay」というのは定義されておらず、
映像/音声を分離してエンコード(Codec変換)したのちmuxする場合を含め、エンコーダーに対して
与えるべき、A/Vズレ補正値を「audio-delay」と呼んでいるようです。 同じTSでも通す
エンコーダーソフト毎に用いるべき補正値の適正値が違いますので(大半は同一)、報告される
TSの「audio-delay」が使うエンコーダーに適したものかどうかを知っておくことは重要です。
正しくは「自分の処理の都合上で適切な音声delay値」と言うべきなのです。
 
(1)TSMuxeR
  最初に出現するGOPの中で最初に含まれる音声パケット(payload-start)のPTS値とGOP中の
 第1フレーム映像( GOP先頭から最初に出現するのは第3フレーム映像であり、第1フレームは
 2番目のビデオパケット )のPTS値との差、(最初の音声PTS−第1フレーム映像PTS)を報告する。
 ソースが入手できないので完全解明ではないが、100個以上のTSで調べたが、当てはまらない
 TSは発見できなかった。

(2)MediaInfo
  TS先頭から映像/音声の同期がとれるようになるまでの音声パケットのバイト数を調べ、
 音声bit-rateで割って、audio-delay値とする。 >>781さんのいうように「先頭まで
 順番にADTSフレームを遡って」いるのとは方向が逆ですが、同じ考えです。

793 :名無しさん@編集中:2014/08/20(水) 13:01:52.15 ID:nhJNpziC.net
面白いのは、TSをTSmuxeRでdemuuxして.mpvと.aacをgetし、これを再度TSMuxeRして得た新TSは
開始(第1フレーム映像)PTS = 先頭音声PTS=10:00:00.000となり、TSmuxeRに読ませると
audio-delay=0.0msecであるが、MediaInfoに読ませるとaudio-delay = -67msec(バグのため
「-67秒」と表示)されてしまう。 67msecは映像2フレーム相当なので、Mediacoderでは先頭の
2フレーム(B-frame)は変換非対象として捨て、対応する音声も捨てる、即ち
「 video-delay = audio-delay = -67msec 」と考えるようだ。 この-67msecを補正値として
使うべきか、defaultの補正値(=0)を使うべきかは、使うエンコーダーソフトで異なってくるはずである。
 但し、このように先頭2フレーム映像を捨てると思われる結果になるのは、demux-muxで作った
10:00:00.000開始の全てのTSでみられるのだが、開始PTSがHH:MM:SS.xxxで
「TSMuxer版audio-delay=数msec」のテストファイルを作って調べると、「MediaInfo版audio-delay」と
「TSMuxer版audio-delay=数msec」は±1msecでほぼ一致するので、必ずしも常に先頭2フレーム分の映像を
捨てているというわけではないようだ。 何れにせよ、最終目的は音ヅレのない出力ファイルを得ることなので、
この辺ははっきりさせたいと思う。

調べきってはいないが、関連部分の一部を記すと

   \MediaInfo_GUI_GNU_FromSource\MediaInfoLib\Source\MediaInfo\Audio\File_Mpega.cpp の中の
if (BitRate)
{
Fill(Stream_General, 0, General_Duration, VBR_FileSize*8*1000/BitRate, 10, true);
Fill(Stream_General, 0, General_OverallBitRate, BitRate, 10, true);
Fill(Stream_Audio, 0, Audio_BitRate, BitRate, 10, true);
if (CalculateDelay && Buffer_TotalBytes_FirstSynched>10 && BitRate>0)
{
Fill(Stream_Audio, 0, Audio_Delay, Buffer_TotalBytes_FirstSynched*8*1000/BitRate, 0, true);
Fill(Stream_Audio, 0, Audio_Delay_Source, "Stream", Unlimited, true, true);
}
} 

794 :名無しさん@編集中:2014/08/20(水) 13:09:54.18 ID:nhJNpziC.net
ごめん。 「10:00:00.000」じゃなくて、「00:10:00.000」だった。

795 :名無しさん@編集中:2014/08/20(水) 13:37:39.47 ID:JREREQdN.net
イミフ。NGIDは所詮自己満足だからな。

796 :名無しさん@編集中:2014/08/20(水) 14:23:15.13 ID:7D8Rhjum.net
>>793
>>606 >>610

この程度の平仮名表記を間違えると内容まで信憑性に欠ける

797 :名無しさん@編集中:2014/08/20(水) 15:05:36.44 ID:nhJNpziC.net
>>796
なんで「ズレ」じゃなくて、「ヅレ」を使っているのか。 そこには理由がある。

798 :名無しさん@編集中:2014/08/20(水) 15:07:20.87 ID:+ftSfRer.net
ハゲじゃないもん
ちょっと抜け毛が気になるだけだもん

799 :名無しさん@編集中:2014/08/20(水) 17:38:41.43 ID:iCCwSeJU.net
無劣化出力とフレーム単位で編集できるソフトを教えてもらえませんか?

800 :名無しさん@編集中:2014/08/20(水) 18:07:37.26 ID:nhJNpziC.net
無劣化では原理的にフレーム単位での編集はできません。
フレーム単位で選択しようとすると、領域先頭部と領域末尾部では
エンコードしなおす必要がありますので、「無劣化」にはなりません。

801 :名無しさん@編集中:2014/08/20(水) 18:11:28.55 ID:VXX0AXQk.net
可逆圧縮のこといってるんじゃない?
可逆圧縮コーデックはのUtVideoがおすすめ

802 :名無しさん@編集中:2014/08/20(水) 18:26:53.16 ID:H669G/FF.net
皮肉で言ってるのか本気で言ってるのか・・・

803 :名無しさん@編集中:2014/08/20(水) 18:58:12.07 ID:iCCwSeJU.net
>>800
> 無劣化では原理的にフレーム単位での編集はできません。
> フレーム単位で選択しようとすると、領域先頭部と領域末尾部では
> エンコードしなおす必要がありますので、「無劣化」にはなりません。

やはりフレーム単位は無理ですか。
先頭と末尾の部分だけ再エンコードし、他を無劣化コピーとかはできないのでしょうか?

PowerDirectorのSVRTはよさそうだが、TSはどうやら対応外のフォーマットだようです。
それにエンコードの選択肢が少なさ過ぎるのです。

>>801
> 可逆圧縮のこといってるんじゃない?
> 可逆圧縮コーデックはのUtVideoがおすすめ

可逆のことではありませんが、いいこと聞きました。

>>802
> 皮肉で言ってるのか本気で言ってるのか・・・

残念ながら、素人の本気レスです(=o=;)

804 :名無しさん@編集中:2014/08/20(水) 19:28:23.88 ID:hiZiI78G.net
有料で良いならペガのを使いなよ

805 :名無しさん@編集中:2014/08/20(水) 19:49:49.29 ID:lr78srnJ.net
>>792
> 「正しい音声delay値」というのは元々ありません

PTSが何の略か知ってるならそんな事は当然わかってるだろうし、少なくともまともに会話してる人達には
別に誤解してる人もいないんじゃないか?
「正しい音声delay値」ってのは普通に「妥当な音声delay値」くらいの意味でしょ

んで、「妥当な音声delay値」の導き出し方がソフト毎の実装依存になってるのはまあ当然かと
そもそもの仕様が、ある映像や音声をいつ再生するかは指定されるが、厳密にどの映像と音声が対応してるかなんて情報は
無いってモノで、正しい方法なんてないんだからしょうがないわな

806 :名無しさん@編集中:2014/08/20(水) 20:00:17.26 ID:JREREQdN.net
可逆圧縮はほとんどデータ量が縮まないから正直嫌い。
その程度の圧縮率なら生データのままで保存した方がなにかとはかどるからなぁ

807 :名無しさん@編集中:2014/08/20(水) 20:09:09.43 ID:H669G/FF.net
保存のために可逆圧縮コーデックを使うやつなんていないだろ・・・

808 :名無しさん@編集中:2014/08/20(水) 20:19:48.28 ID:iCCwSeJU.net
>>804
> 有料で良いならペガのを使いなよ

ド素人なんです。

ペガとはどのソフトですか?
「PEGASYS」ですか?
そうだとしたら、「PEGASYS」のどのソフトがよいのでしょうか?

809 :名無しさん@編集中:2014/08/20(水) 20:25:27.90 ID:iCCwSeJU.net
すみません。「ペガのを」の「の」を見落としてしまいました。
なので、上のレスの「ペガとはどのソフトですか?」を気にしないでください(=o=;)

810 :名無しさん@編集中:2014/08/20(水) 20:40:25.52 ID:iCCwSeJU.net
調べてきました。
カットに特化した「TMPGEnc MPEG Smart Renderer 4」というソフトですね。

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

811 :名無しさん@編集中:2014/08/20(水) 20:45:54.70 ID:JREREQdN.net
>>807
じゃぁ何のために使うんだ?可逆圧縮。

812 :名無しさん@編集中:2014/08/20(水) 21:39:38.21 ID:H669G/FF.net
>>811
・・・キャプチャ等も含め、エンコ用の中間ファイルくらいじゃないの。
可逆のまま素材を保存する人がいないとは言わないけど、
ここがTSスレだということを鑑みると>>806の発言はなんかじわじわくるわ・・・。

813 :名無しさん@編集中:2014/08/20(水) 22:59:47.55 ID:VXX0AXQk.net
>>811
重たいフィルタをかけて2Passとか非効率的だから

814 :名無しさん@編集中:2014/08/21(木) 05:49:25.99 ID:O7a6el2p.net
可逆圧縮されたソースをデコードしながらエンコするわけだろ。
生ソースをそのままエンコするのとどんぐらい処理時間に差があるのさ?

815 :名無しさん@編集中:2014/08/21(木) 06:11:23.97 ID:CmEZMWdk.net
>>814

810 へのレスなのか ?

816 :名無しさん@編集中:2014/08/21(木) 06:19:28.35 ID:O7a6el2p.net
全員に対するレスだよ。どうせ反応したくてウズウズするのだろ?

817 :名無しさん@編集中:2014/08/21(木) 06:29:53.51 ID:CmEZMWdk.net
なーんだ、阿呆か…

818 :名無しさん@編集中:2014/08/21(木) 16:44:32.72 ID:QG5LmU/c.net
可逆圧縮でも、劣化が発生する場合があるから専門のスレで聞くこと

819 :名無しさん@編集中:2014/08/22(金) 13:15:15.89 ID:qVkbqs0C.net
そもそも可逆圧縮って生ソースのままだと読込とか編集とか重くてイライラするぅ(ガンガンガン速風に)って人向けだろ?
時代的にはスカジーをレイドで高速化してメモリ最大512MBの石器時代の頃の

820 :名無しさん@編集中:2014/08/22(金) 14:19:26.70 ID:JqFKa3hN.net
>>819
ただのTSソースエンコなら、いまどき2passを使う人もあまりいないだろうし、
可逆圧縮での中間出力をしてるような人はあんまりいないんじゃないかと思う。

カットや字幕付加などの単純な編集程度ならTSのまま扱ってもなんとかなることが多いだろうし、
これも可逆圧縮での中間出力をしてるような人はあまりいないかもしれない。

TS素材からのMAD作りとか、その他HD素材を使ったがっつり系の加工編集をする場合は
まだまだ可逆圧縮での中間出力は有用。
ただしProResやHQXのような非可逆イントラ系コーデックを使うケースも多い。

そんな感じじゃないかな。

821 :名無しさん@編集中:2014/08/22(金) 14:29:19.26 ID:xNaS6vj5.net
デコードが遅いってレベルのPCで可逆圧縮なんて意味ないと思うが・・。
ディジタルな今からは想像できないだろうけど
アナログ時代はNRとかシャープ化とかが必須だったんだよ。
それにそのころは2passのほうが安定してたし今の基準で考えたらダメ。

今使ってる人は>817みたいなMADとかの素材作りに使ってるんじゃね(フレーム単位で切り貼りできるし

822 :名無しさん@編集中:2014/08/22(金) 15:04:10.70 ID:JqFKa3hN.net
>>821
>デコードが遅いってレベルのPCで可逆圧縮なんて意味ないと思うが・・。

比較的低性能のPCで色々なフレームを動き回る編集作業をする場合は、
キーフレームからのデコードが必要になりデコード負荷も高いMPEG系ソースを扱うのは大変だったので、
比較的容易に各フレームにアクセスできるイントラ系コーデック(可逆圧縮を含む)への変換が定石になってて、
現在でもHD素材での編集作業はまだまだ負荷が高いのでイントラ系コーデックでの中間出力バンザイって感じでは。

アナログ時代のエンコはよく知らないけど、Huffyuv等で可逆圧縮して怪しげなCCESPに渡してた時代があったとは聞く。

総レス数 1004
299 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200