表題そのものではあるのだけど、L-SMASH Works でリンク可能な ffmpeg libav ライブラリはラップアラウンド対策が成されていないため、その対応への要望メールをいただく機会が増えてきている。
現時点では maki さんの patch をあてるのが最適解だと思うのだけど、mod 扱いにせざるを得ないかな……などと考えつつ実行すべきか否か悩む今日この頃(patch をあてると場合によっては問題が発生したときの切り分け・検証に手間が増える)。
訂正と追記:
この問題に対して maki さんよりコメントが有り、ffmpeg はすでにラップアラウンド対策は成されているが、その対策自体に別の問題があるとのこと(ラップアラウンドについては L-SMASH Works に libav をリンクした場合の問題)。maki さん、ご指摘ありがとうございます。
>ffmpeg ライブラリはラップアラウンド対策が成されていないため
間違った説明になっている箇所があったので、補足事項をば。
ffmpegはラップアラウンド対策が導入されており、ラップアラウンドが発生したMPEG-TSデータを扱っても問題なく動作する様になっています。
対してlibavは未対策のままなので、L-SMASH Works(以下、LSW)にlibav ライブラリを使用している場合は正常な動作が保証されません。
以下、参考URL
> ■ L-SMASH Worksの既知の問題
> https://vfrmaniac.fushizen.eu/
> https://vfrmaniac.fushizen.eu/contents/lsmashworks_problems.html
> ・wrap aroundがあるファイルを正しく読み込めない。(libavをリンクした場合のみ。ffmpegはサポートしている。)
件の問題は、ストリーム構成が変化するMPEG-TS(例:主音声のみ→二か国語)を扱う際、ffmpegのラップアラウンド対策が誤爆している点になります。
※ 変化が発生したタイミングでラップアラウンド対策を誤って適応し、間違ったタイムコードを元にフレームが間違った順で表示される
別件ですが、もう1つのパッチ案件を明示しておきます。
デフォルトのffmpegではMPEG-2 Videoのフィールド適応ピクチャーのフィールドオーダーが強制的にBFFとして扱われてしまいます。
下記パッチを充てる事でLSWでのMPEG-2 Videoのフィールドオーダー判定が正常に動作する様になります。
> https://gist.github.com/maki-rxrz/5a7a2c789e4369fa34853b5358fb8a29
> ffmpeg-3.4.1-libavcodec-av-picture-structure.diff
※ このパッチはffmpegにそのまま導入されることはおそらくないです (ffmeg-devel ML参照)
> http://ffmpeg.org/pipermail/ffmpeg-devel/2018-February/thread.html#225208
※ 又、nekopanda氏がビルドしたLSWもこのパッチを適応しています
> https://github.com/nekopanda/FFmpeg/releases/tag/3.4%2Bfield_pic_r2
> https://github.com/nekopanda/FFmpeg/commit/26df1f2f90487d62c875e65a10d13c50674fcc61
パッチは、使用上の注意をよく読み用法・用量を守って正しくお使いください。
以上
無理を言って申し訳ございません。
ただ、この問題を解決して頂けると自動エンコードでの効率が格段にあがるので、是非とも導入していただきたいです。
お時間ある時で構わないのでお願いします。