私が提供するソースビデオからユーザーが自分のクリップを正確に作成できるように、自分のWebサイトを作成したいと考えています。
最初にWebサイトに適したものに変換したいソースビデオファイルがあります。
Input #0, matroska,webm, from 'source.mkv':
Duration: 00:28:18.57, start: 0.000000, bitrate: 10183 kb/s
Stream #0:0: Video: h264 (Constrained Baseline), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 48 tbc (default)
Stream #0:1: Audio: mp3, 44100 Hz, stereo, s16, 128 kb/s (default)
私はffmpegを使用して次のように変換します。
ffmpeg -i source.mkv -c:v libx264 -c:a aac -strict experimental -vf scale="960:-1" source.mp4
このビデオを見ると、私のニーズに十分な品質と十分なファイルサイズがあり、私のWebサイトにロード/再生されます。
ユーザーがこのビデオの開始と終了を選択し、クリップを作成できるWebページがあります。これは私がそのために使用するffmpegコマンドの例です:
-ss 577.920 -i source.mp4 -t 011.980 -codec:v copy -codec:a copy -vf scale="960:-1" clip1.mp4
問題は、クリップが常に時間的に正確であるとは限らないことです。通常、オーディオは十分に正確ですが、ビデオは0.5秒程度早く停止します。
これを正確に同期させるには、0.2秒という方法はありますか?
編集:追加-force_key_frames 00:00:00.2
は助けにはなりませんでした。
編集:私は良い(いやらしい)結果の-c:v libx264 -c:a aac -strict experimental
代わりに使用するようにクリッピングを変更しました-codec:v copy -codec:a copy
。
ファイルは問題なく外部で再生できますが、html5ビデオ要素にロードして再生すると、ビデオの最後の部分(オーディオは正常です)がフリーズします。凍結する最後の部分は、1秒未満です。
別のビデオエンコーダーで試してみますか?libx264の最良の代替策は何ですか?念頭に置いて、私はおそらくこれを公開ウェブサイトに掲載したいと思うでしょう。
しかし、ちょっと待ってください、MPCやWindows Media Playerのようなプレーヤーで問題なく正確に再生されるという事実は、それがGoogle ChromeまたはHTMLビデオ要素のいずれかに問題があることを示唆していますか?または、サポートされていないエンコーディングなどを使用していますか?