web-dev-qa-db-ja.com

whatsappのようにビデオを圧縮する

私はビデオ編集の専門家ではありませんが、Whatsappビデオ処理のロジックを理解したいと思っています。

最初すべてのファイルのうち、Whatsappがアップロードされたビデオの制限を16MBに設定していることに気づきました。その後、whatsappがビデオをトリミングして制限を超えないようにします。これは慣習ですか、それとも個人的な選択ですか?

2番目に、ビデオがカメラを使用して記録される場合、デフォルトでは圧縮されないため、whatsappはFFMPEGを使用して圧縮します。これには時間がかかりません。 (1分1920x1080のビデオを125MBのサイズで試してみましたが、すぐに5MBのサイズで640x360になり、アップロードは自動的に開始されます)。 640x36を選択する理由、2つの非同期タスク(圧縮+アップロード)は非常に高速に思えます。

圧縮コマンドを実行するとffmpeg -y -i in.mp4 -codec:v libx264 -crf 23 -preset medium -codec:a libfdk_aac -vbr 4 -vf scale=-1:640,format=yuv420p out.mp4約1分かかり、ビデオが回転しています!! :D

最終的に、YouTubeからビデオをダウンロードするとき、ビデオは既に圧縮されていると思います(たぶん)、whatsappはそれを圧縮しようとさえしません。だから、ビデオが圧縮されていることを自動的に検出すると思います。どうすればこれを検出できますか?

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

23
user1079425

あなたの質問に対する可能な答えはここにあります:

クエスト。 1:それは個人的な選択です。 whatsappチームは、アプリのユーザーに可能な限り最高のユーザーエクスペリエンス(UX)を提供しようとしているため、ビデオファイルの制限を16MBに維持しています。約125MBのファイルをアップロードするのにかかる時間を想像してください。したがって、アプリはファイルを圧縮して、アップロードを高速化し、シームレスなエクスペリエンスを実現します。

クエスト。 2:あなたはすでにこの質問に自分で答えたと思います-非同期プログラミング。フィードする大きなビデオファイルは、アプリ用に作成したアルゴリズムに従って圧縮形式にエンコードされます。開発者として、私たちは皆、アルゴリズムについて知っており、実行を高速化するために実行できることがあることを知っています。彼らは非同期プログラミングを使用して独自のアルゴリズムを実装し、プロセスを高速化したと思います。あなたが言ったffmpegライブラリはCでコーディングされていると思いますが、これは非同期呼び出しをサポートしていないと思います(確かではありません)。この後、アップロードが引き継ぎます。

クエスト。 3&最後に:コーデックは標準です。ビデオファイルをMPEG4にエンコードしてから、別のプログラムを使用して再度MPEG4に再エンコードしようとすると、両方のプログラムが同じエンコード標準を使用している限り、つまり特定のアルゴリズムを実装していない限り、同じ結果が得られます。彼らのプログラムのために(これには何年もかかる)。そのため、Whatsappがファイルをエンコードしようとすると、同じ結果になります。

私はあなたの質問に答えることができたことを願っています。

MichVeline

10
user3882819