メモ程度の報告。ask.fmで質問されてた以下の件。
「L-SMASH Works r729で一部のWebMを読み込むとループ等の問題が発生することがある」
ttp://ask.fm/Paranoialmaniac サンプルWebM:
ttp://www1.axfc.net/u/3308419 手元だと、たくあん氏ビルドのr728でもループが再現。また、
8/23のffmpeg N-65840-g7444cf9でビルドしたr729
さっき引っ張ってきたffmpeg N-65991-g8c63a0dでビルドしたr729
でも再現。
昨日引っ張ってきたlibav v12_dev0-43-g9e8bbe7でビルドしたr729
だと問題無し。
サンプルファイル自体がおかしいのか、ffmpegまたはlibavに何らかの問題があるのか、
よくわかりませんがとりあえずそんな感じでした。
ffmpegの問題だからffmpeg.exeで再現できるサンプルとコマンド書いてffmpegにticket作れ
普通に考えればffmpegの問題だろうというのはわかってるけど、
俺は気が向いたから追加検証して、その結果を情報共有しとこうと思って書いただけだからなあ。
サンプルのWebMファイルもどうやって作ったものか知らないし、
こっちで適当に作ったWebMでは再現しないし、よくわからん。
質問者がちゃんと検証してffmpegに報告してくれることに期待してくれ。
ask.fmで質問した者です。
そのサンプルを作成したffmpegのバージョンはN-65366-g1c59419でオプションは以下のようになります。
-f rawvideo -s 1920x1080 -pix_fmt nv12 -r 24/1 -i "-" -vcodec vp9 -b:v 800K -g 240 -acodec libvorbis -b:a 128K -pass 1 -y "C:\enc\sintel_trailer_2k\sintel_trailer_2k_VP9_800Kbps.webm"
-f rawvideo -s 1920x1080 -pix_fmt nv12 -r 24/1 -i "-" -i "C:\enc\sintel_trailer_2k\sintel_trailer_2k_VP9_800Kbps.tmp.wav" -vcodec vp9 -b:v 800K -g 240 -acodec libvorbis -b:a 128K
-pass 2 -y "C:\enc\sintel_trailer_2k\sintel_trailer_2k_VP9_800Kbps.webm"
AviUtlのffmpeg / avconv 出力 0.04を使って作成しました。
検証してみたのですがffmpegでvp9の2passエンコードを使用すると問題が起きるようです。
ffmpegをN-65991-g8c63a0dなどに変更したり別の映像を使っても同様の問題が発生しました。
もちろんAviUtlを経由させずに直接ffmpegでエンコードして試しました。
最後にffmpegへの報告ですが、すみません私は英語が全く出来ないのでちょっと難しいです。
x264で.264を出力し、L-SMASHでMP4に入れたんだだけど
x264の報告だとI:19なところ、L-SMASHだとIDRが19でIが0になってます
これって正常なんでしょうか?
たんに自分の見方が間違ってたらごめんなさい
x264 r2085
L-SMASH rev1084
↓x264のログ
x264 [info]: frame I:19 Avg QP:14.24 size: 95723
x264 [info]: frame P:1200 Avg QP:16.76 size: 11198
x264 [info]: frame B:869 Avg QP:19.68 size: 1506
↓L-SMASHのログ
MP4 muxing mode
[H.264: Info]: IDR: 19, I: 0, P: 1200, B: 869, SI: 0, SP: 0, Unknown: 0
Track 1: H.264 Advanced Video Coding
Muxing completed!
正常
位
mp4boxだとIとIDRが19と表示されてたので
I:0を見て??になりました
なるほど正常なんですね
怪しいのはr719ですかね・・・。
r719 [git-9e7d713] muxer: Fix the condition of creating reference chapter track.
ついでにどなたか教えていただけると嬉しいのですが、
POP氏やたくあん氏が配布しているL-SMASH関係のアーカイブに含まれるCHANGELOGのように、
上のような形式でリビジョン番号(rXXX)とコミット(git-xxxxxxx)を結びつけた一覧を出すのってどうやるんでしょうか?
git logだとリビジョン番号がわからないので、どうすればいいのかなと。
ビルド環境をまったく使いこなせてないだけなんですけどね・・・orz
>>408ですがテスト結果の確認不足もあり、一部根本的に勘違いしていた部分がありました。
r715ではまだTimedTextは入れるようにしていなかったんですね。
r715が問題無しに見えたのはNero形式のチャプターが使われているせいでした。失礼しました。
MP4Boxでapple形式チャプター(TimedText)を入れた場合、
必ず0秒時点に名無しのチャプターがつけられてしまうのは、何かそういう仕様があるんだろうか・・・。
先頭にチャプター必要なのは頭出し用に普通だと思うんだが
DVD作成とかしてた時から当たり前にしか感じてなかったわ
ちなみに
>>408のチャプターをrigaya氏のchapconvertにかけたもの(applechap.txt)から
TextSampleだけ抜粋すると以下の通り。
<TextSample sampleTime="00:00:06.673">chap200(aviutl201)frあ</TextSample>
<TextSample sampleTime="00:00:14.181">chap425(aviutl426)frい</TextSample>
<TextSample sampleTime="00:00:20.020">chap600(aviutl601)frう</TextSample>
<TextSample sampleTime="00:00:20.021" text="" />
これを、
MP4Box -ab "M4A " -add test.aac -add applechap.txt:chap -new test.m4a
でM4Aに埋め込んでから
MP4Box -ttxt 2 test.m4a
でTimedTextを抜き出してTextSampleだけ抜粋すると、以下のように0秒のエントリが追加されている。
<TextSample sampleTime="00:00:00.000" xml:space="preserve"></TextSample>
<TextSample sampleTime="00:00:06.673" xml:space="preserve">chap200(aviutl201)frあ</TextSample>
<TextSample sampleTime="00:00:14.181" xml:space="preserve">chap425(aviutl426)frい</TextSample>
<TextSample sampleTime="00:00:20.020" xml:space="preserve">chap600(aviutl601)frう</TextSample>
<TextSample sampleTime="00:00:25.792" text="" />
行き違いが無いよう書いておくと、
>>408で指摘した問題は、L-SMASHの場合だと
<TextSample sampleTime="00:00:00.000" xml:space="preserve">chap200(aviutl201)frあ</TextSample>
<TextSample sampleTime="00:00:14.181" xml:space="preserve">chap425(aviutl426)frい</TextSample>
<TextSample sampleTime="00:00:20.020" xml:space="preserve">chap600(aviutl601)frう</TextSample>
<TextSample sampleTime="00:00:25.859" text="" />
のように、最初の「chap200(aviutl201)fr」の部分の時間が本来の"00:00:06.673"ではなく0になってしまうというもの。
https://twitter.com/Paranoialmaniac/status/513492759139717120 そんなわけで、0秒チャプターじゃないチャプターが最初に来る場合、何も考えないで対策を打つならば、
ダミーチャプターを0秒に置くという手法しか無いのです。
MP4/MOVでは最初のサンプルのDTSは必ず0であり、CTS>0はPTS>0を保証しないので。
とりあえずは暫定対処(?)として、MP4Boxと同様に0秒のエントリを入れるということになるのかな?
まだわからないけど。
バグなのか仕様なのかわかりませんが報告。
現象:
AviUtlのL-SMASH Worksのデフォルト設定で音声無しのMP4を読み込むと、
Libav+L-SMASHではなくLW-Libavで読み込まれる(?)ようで、lwiファイルが生成される。
設定でLW-Libavのチェックを外すとLibav+L-SMASHで読み込まれる(?)ようで、lwiファイルは生成されない。
読み込みの優先度を考えると、デフォルト設定でもLibav+L-SMASHで読み込まれ、
lwiファイルも生成されないのが本来の挙動のような気がする。
バージョン:
AviUtl 1.00
L-SMASH r729(ffmpeg N-66554-g9a3653c、lsmash rev1106 02aa361)
test.avs: ColorBars(640,360,pixel_type="RGB32").Trim(0,359)
x264コマンド: x264.2479kMod.x86.exe test.avs -o test.mp4
※x265 1.3+315-d0fa09e9cca5でエンコしてlsmash rev1106でmuxしたMP4でも同様。
なんでGCC4.9でビルドさせてくれないんだっけ
L-SMASHのremuxerやL-SMASH入りのx264のバイナリっていつ更新したらいいんでしょ?
好きな時にしろ、って言われそうだけど、L-SMASHの更新が激しくてどのタイミングでバイナリのビルドしていいかわからない…
更新される度にremuxerやx264ビルドしてたら面倒だし
Rigayaさんとこからx265guiをゲットしてインスコ
→設定画面の右上に更新ボタンがある
→おしてみる
→幸せ
>>421 やっぱり個人の判断で好きな時にやるしかないと思う。
常に最新版をビルドして使って人柱報告する人が多いほうが色々助かるだろうけど
使う側としては安定性を重視したいだろうし、大きな機能更新やバグ修正が無い限りは少し古くても問題ないし。
AviUtlスレとかを見てればある程度の情報はわかるけど、
大きめの機能更新やバグ修正があった場合はわかりやすい形で告知や記録メモがあると嬉しいね。
例えばGitレポジトリにimportant.txtみたいなメモを作っておいて、
http://peace.2ch.net/test/read.cgi/avi/1409023798/562 の件だったら「rev973〜rev1010はPEGASYS系で読めないMP4が作られてしまうので使うな」みたいなメモを書いておくとか。
面倒か・・・。
週末にも色々とL-SMASHのリファクタリングが進められたようですね。お疲れ様です。
>>422 横からだけど、x265guiExにはx265.exe、qaac.exe(とCoreAudioToolbox)、
L-SMASHの自動更新機能がついてるんだね。知らなかったよ。ありがとう。
v3.45で試したらQuickTimeインストーラのダウンロード失敗でqaacの更新に失敗したけど、
他はうまくダウンロードできた。いずれx264guiExのほうにも更新機能が付くのかな。
L-SMASHのバグ報告です。
問題: Apple形式のチャプターが正常に埋め込まれない。TimedTextのトラックはできるが中身が無い。
確認rev:
問題無し・・・rev1108
問題有り・・・rev1119、rev1206
確認コマンド:
remuxer.exe --chapter chapterUTF8.txt -i video.mp4 -i audio.m4a -o test.mp4
MP4Box_0.4.6-r3745.exe -ttxt 3 test.mp4
※出力された「test_3_text.ttxt」を見ると、TextSampleにチャプターエントリが登録されていない。
チャプターファイルの内容:
CHAPTER01=00:00:00.000
CHAPTER01NAME=zero
CHAPTER02=00:00:02.002
CHAPTER02NAME=two
CHAPTER03=00:00:04.004
CHAPTER03NAME=four
CHAPTER04=00:00:08.008
CHAPTER04NAME=eight
CHAPTER05=00:00:16.016
CHAPTER05NAME=sixteen
L-SMASHってAppleチャプターのバグ頻発するよな?
そこらへんのプログラムの設計に大きな問題あるんだろうか
治ったみたいだね 自分がつつく必要もなかったか
実際にremuxして確認もしたよ
429 :
424:2014/11/02(日) 20:51:09.58 ID:st4+dpn3
>>428 検証乙です。
自分では手元のバイナリでしか確認できなかったので
>>426のような発生リビジョン特定は大変助かります。
コミットログにThis regression is introduced at 5d1f923といったコメントがあるけど、
コミットとリビジョン番号と結びつける方法がよくわからないw
>>429 結構頻繁にバグ報告してくれてる人と同一人物な予感がする
git clone
https://github.com/l-smash/l-smash lsmash
cd lsmash
ここまではおk?
git rev-list master --reverse > rev-list.txt
これで全revがリダイレクトされる
それの1200行目のハッシュ=rev1200のハッシュ
git checkout ハッシュ こうすると特定のハッシュに戻せる
これを応用して
git rev-list master --reverse | sed -ne "1200 p"
このコマンドはgit rev-list master --reverseの1200行目を表示する
git checkout `git rev-list master --reverse | sed -ne "1200 p"`
よってこうするとrev1200に簡単に戻せる
正しいやり方かは知らん
432 :
424:2014/11/02(日) 21:16:40.64 ID:st4+dpn3
>>430-431 ありがとうございます。一応自分でビルドしてはいるんですが、
git等をちゃんと勉強しなければと思いつつも、つい後回しに。
rev-listというコマンドがあったのですね・・・助かりました。
L-SMASHに簡単な要望です。
--helpや--versionのどこかにverを表示することは出来ませんかね?
今はrevとhash使ってそのrevのlsmash.hを見て判断してます。
こちらが適当に書いてみたパッチになります。
ttp://pastebin.com/k6pBp9x2 適用後、"verMAJOR.MINOR.MICRO.REV HASH"という形になります。
LAV Filters tModを参考にしました。
これと全く同じ形でなくてもいいので最悪MAJORとMINORだけでも分かるようにして欲しいです。
新しい機能を試してみたくr1235をビルドして試したらx64なビルドだけMuxing completed!と表示された瞬間にフリーズするようです
--enable-debugでも特にメッセージは表示されませんでした
生成されたファイルは一応正しく再生出来てるよう(に見えるだけかも)です
使ったコマンドは以下
muxer.exe -i hoge.mp4 -o hoge2.mp4
configureは--cross-prefix=x86_64-w64-mingw32-を付けて、Mingw自体はXhmikosR氏のGCC4.9.2のものを使ってます
revを掘り下げたところ
rev1231 フリーズ
rev1230 正常
なおこちらのコマンドでもrev1231でフリーズするようです
muxer.exe -i hoge.264 -i hoge.aac -o hoge.mp4
436 :
435:2014/11/21(金) 19:21:14.11 ID:UaRrtbHJ
VP9の件、手持ちのファイルすべて正常に読み込めるようになりました。
対応ありがとうございます。
movファイル自体の問題かもしれませんが一応報告。
【現象】Avisynthで以下のエラーが発生
LSMASHAudioSource: failed to get construct timeline.
【LSMASHSource.dllのバイナリ】
・たくあん氏が配布していたr728
・Doom9のLSMASHSourceスレで配布されている
ttps://www.dropbox.com/sh/3i81ttxf028m1eh/AAABkQn4Y5w1k-toVhYLasmwa?dl=0 のL-SMASH-Works-r733-20141121-32bit.7z
【OS】Win8.1 64bit
【Avisynth】
・2.6 alpha5 32bit
・SEt版 2.6MT 20130928 32bit
【avsの内容】
LoadPlugin("C:\AvisynthDLL\LSMASH\LSMASHSource.dll")
file="D:\big_buck_bunny_1080p_h264.mov"
LSMASHAudioSource(file)
【ファイル】
ttps://peach.blender.org/download/ 1920x1080のH.264のとこにあるbig_buck_bunny_1080p_h264.mov(約700MB)
【備考】
・MediaInfoで見るとQuickTimeのTimeCodeが入っている。
・サイトの説明にVLCだと音声がうまく再生されないとあるがVLC2.1.5だと特に問題無し。
L-SMASH WorksというよりL-SMASHがその音声に対応できてないね
remuxer でremuxすることもできないから
そういえば
>>389にもある
> L-SMASH WorksでRGBのavsを読むと上下反転してしまう
という問題の修正予定はないんだろか?r733でも発生した。
現状の不具合を報告
rev744時点でAviSynthのLWLibavVideoSource()でTSを読もうとすると
"LWLibavVideoSource: failed to make a frame."ってAvsPmodにメッセージボックスが出る
ビルドに使ったソース
L-SMASH-Works r744
L-SMASH r1330
FFmpeg N-68657-gf7f4a90
r748で
>>445のTSが読めない問題が修正されてるのを確認
そして新しい不具合を確認したので報告
TSファイルのフレームレートが以下の用に誤爆する
r738ではffmpeg版、libav版共に問題なし
Sample1.ts
ffmpeg版: 29998/1001
libav版: 29999/1001
Sample2.ts
ffmpeg版: 29998/1001
libav版: 29999/1001
Sample3.ts
ffmpeg版: 29998/1001
libav版: 29999/1001
Sample4.ts
ffmpeg版: 29998/1001
libav版: 29999/1001
Sample5.ts
ffmpeg版: 29999/1001
libav版: 30000/1001(正常)
r748にリンクしたffmpeg、libavは以下
FFmpeg N-68663-g3a2bed1
Libav v12_dev0-605-g9cfa68c
r738にリンクしたFFmpeg N-68648-g03b84f2に戻して再度ビルドしても発生する
447 :
446:2014/12/25(木) 19:46:45.26 ID:QZm0zbUu
L-smashの話題はここでいいのかな?
以下のエラーが出た時の挙動として、
[Warning]: Detected CTS duplication af frame xxxxx
Libac+L-SMASH にチェックが入っている状態だと、fpsが強制的に25fpsになる。
Libac+L-SMASH にチェックが外れている状態だと、fpsは元動画のままである。
前者はどうにもならないんでしょうか?
出来れば元動画のfpsで開いて欲しいのですが。
L-smashとL-smash Worksは全く別のものだから区別するように
同じ名前あるんだから同じようなもんだと普通思うに決まってる
全く別なら別の名前付けなさいな
おっとJavaScriptの悪口はそこまでだ
>>1から順に読んでみなよ
と言いたいところだったが、
>>1が残念過ぎたでゴザル
まあ、その、なんだ・・・、L-SMASHに関することなら状況さえ詳しく書けば何でもいいんじゃないか?
Aviutlとか他の物まで混同するのはアウトだろうが、と今までの流れから空気を読んだつもりになって無責任な発言をしてみる
L-smashとL-smash Worksは全く別のものだから区別するように
そう言ったところでこれからもずっと同じことの繰り返しさ、名前が同じなんだから
だからどうだってこたないが
OutlookとOutlook Express問題か
なんにせよ報告や要望で用語や詳細情報を正しく書いていなければ
真剣さも感じられないし対応も進みにくくなるだろうて。
>>456 それは両方メール管理ソフトのバージョン違いにすぎないでしょ
L-SMASHは動画と音声をMP4コンテナに収録するためのMuxer
L-SMASH Worksは、Aviutlに多くの動画や音声フォーマットを読み込ませるための入力プラグイン
役目も何もかも違う
違いを
>>1にちゃんとテンプレとして書いて置かないのが悪い(・∀・)
>ID:rerk5eqQ
>L-smashとL-smash Worksは全く別のものだから区別するように
>L-SMASHは動画と音声をMP4コンテナに収録するためのMuxer
>L-SMASH Worksは、Aviutlに多くの動画や音声フォーマットを読み込ませるための入力プラグイン
仕切ってる奴が間違ってるとか、カオス過ぎんだろ、このスレ!
>>460 具体的に何処がおかしいのか説明してみてよ
コンテナを扱うライブラリでしょL-SMASHは
そもそもmuxerだけじゃなくdumperとかもあるし
つーかL-SMASHって単なるプロジェクトの名前じゃね?
http://l-smash.github.io/l-smash/ L-SMASHはISO Base Mediaファイルフォーマット及びMP4を含むその派生ファイルフォーマットを扱う
クロスプラットフォームのライブラリです。
開発の契機は、既存のオープンソースの実装が大きく、複雑すぎること、そして規格上誤った実装が多いことから、
自分たちで真っ当な実装を行おう、と思い立ったことにあります
・一般に動画コンテナとして重要な機能のみを実装する。
・素直でシンプルに実装する。
・可能な限り規格に忠実に実装する。
一言で言えば、L-SMASHの役目はMP4 boxと同じ
GPACとMP4Boxの関係もわかってない奴が偉そうに書いてんじゃねえよw
L-SMASH Worksのr761とlibavでビルドしようとしたら
../common/lwlibav_audio.o:lwlibav_audio.c:(.text+0x198): undefined reference to `av_copy_packet'
と言われます
libavはv12_dev0-613-g60d4c6fで、r758時点では正常にビルドできました
r758でもv12_dev0-613-g60d4c6fを使用してます
ffmpegではr761でもビルドできました
469 :
468:2014/12/30(火) 18:31:43.43 ID:mPErEfQF
何度もすみません
今度はr763とlibavで
../common/lwlibav_dec.o:lwlibav_dec.c:(.text+0x39b): undefined reference to `av_copy_packet_side_data'
と言われます
grepでffmpegとlibavを調べましたがffmpegにはヒットするんですが、libavにはヒットしないようです
出来れば確認お願いします
470 :
469:2014/12/31(水) 00:31:20.88 ID:VSQwNcBa
r765で正常にビルドが通りました
お疲れ様です
L-SMASH Works File Reader r765
L-SMASH rev1330 22344ea
ffmpeg version N-68790-g037b527
この環境で以下のVC1のwmvを読み込もうとすると「[Fatal]: Failed to import AVIndexEntrys.」というエラーが出て読み込むことが出来ません。
またL-SMASH Works File Reader r748では読み込むことが出来るのですがプログレッシブはずなのにインターレースのような状態(?)で
読み込まれてしまいfpsもおかしくなります(25fps→13fps)
http://download.openbricks.org/sample/VC1/SVT/advanced/
>>471氏とは別人ですが
こちらでもasfの読み込みで問題が発生するのは確認してたのですが、やっと再現するサンプルがあったので...
ttp://samples.mplayerhq.hu/V-codecs/WVC1/FlightSimX_720p60_51_15Mbps.wmv 解決の糸口になるかは分かりませんが、こちらで問題の有るソースは全てffmpeg版のみ発生し、libav版ではいずれも発生しません
エラー文は同じく[Fatal]: Failed to import AVIndexEntrys.です
使ってるのは
L-SMASH-Works r766-6d02b60
L-SMASH r1330-22344ea
FFmpeg N-68790-g037b527
Libav v12_dev0-616-g8d54bac
です
こちらの環境では、r753では正常、r754から読み込めなくなります
使ってるffmpegはr753,754ともにFFmpeg N-68756-g627f565です
これの下書きをしてる時にr767が出たようですが、まだ問題が発生するようです
こちらも読み込めるようになりました。ありがとうございます。
L-SMASH Works r771のLSMASHSource.dllでTSを読んだ時に稀にエラーになるようです。
Libavをリンクした場合は「LWLibavAudioSource: failed to open resampler.」というエラーが出ます。
ffmpegをリンクした場合はエラー文は出ずに例外"0xc0000005"が発生します。
発生モジュールはLSMASHSource.dllやMSVCR120.dllです。
この例外はAviUtlにavsを読み込んで調べました。
なおffmpeg版はAvsPmodではエラーが出ずにAviUtlやavs2pipemodなどを通した時に発生します。
手元の環境ではrevをr758まで巻き戻すと一切のエラーは出ず、r765(それ以前はlibavのビルドが通らないとのことでビルド自体していない)からエラーが発生します。
476 :
475:2015/01/09(金) 01:59:26.29 ID:o+2zshdX
rev775で正常に読めることを確認しました
再現するソースなどをうpする場合、メールで連絡を取らせて頂くかも知れません
477 :
名無しさん@編集中:2015/01/28(水) 08:27:58.26 ID:YrRbNvRN
ffmpegをmsys2+mingw32+gccな環境でconfigureする際に--extra-cflagsに
-mfpmath=sse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx
のような関連オプションを付け加えるとLWLibavVideoSourceでmpg読み込み時に
Access Violationが出る。aviutl 1.0, avspmodで発生。少なくとも
ここ数週間のffmpeg,lsmash,lsmash worksの組み合わせでほぼ100%発生。
-mtune , -marchだけでは問題なく読める。仕様なのかな。
それこっちの環境でも確認してるけど...正確には-mfpmath=sseだけど、付けても付けなくても対して速度に変わりがないから最適化なしの方向でやってる
デフォの最適化で十分って感じ 気になるといえば気になる
GCCの最適化はバグだらけと以前聞いた
理想だとMingwで完結することだけど作者のmuken氏がやってないってことは難しいんだろうね