Π Π΅ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΡΠΎ ΡΡΠΎ
OBS Studio. ΠΠ°ΠΊ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΊΡΠ°Π½ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ?
OBS Studio β ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΠΈΠ΄Π΅ΠΎΠΊΠΎΠ΄Π΅Ρ, Π΄Π»Ρ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°, ΠΎΡΠ»ΠΈΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π³ΠΈΠ±ΠΊΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΈ Π½ΡΠΆΠ΄Ρ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΠ. ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΡΠΈ ΠΏΠΎΠ΄ Π»ΡΠ±ΠΎΠ΅ ΠΆΠ΅Π»Π΅Π·ΠΎ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ Π»ΡΠ±ΠΈΠΌΡΠΌ Π΄Π΅Π»ΠΎΠΌ, ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΠΠ Π΄Π»Ρ ΠΏΡΠΎΡΡΡΡ Π·Π°Π΄Π°Ρ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ.
ΠΡΠ»ΠΈΡΠΈΠ΅ ΡΡΠΈΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ² Π² ΡΠΏΠΎΡΠΎΠ±Π΅ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΏΠΈΡΠΈ Π²ΠΈΠ΄Π΅ΠΎ, Β«x264Β» Π²ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΠΎΠ·Π»Π°Π³Π°Π΅Ρ Π½Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ, Π° Β«NVIDIA NVENC H.264Β» Π½Π° Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΡ, ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° ΡΡΠΎΠΈΡ ΠΎΡΠ΅Π½ΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΡΠΈΡ Π΄Π²ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΡ, Ρ ΠΎΡΠΎΡΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Π΄Π°Π΅Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΡΠΈΠΊ Β«Ρ 264Β» Π½Π΅ Π½ΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ veryfast, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΠΌ ΠΏΡΠ΅ΡΠ΅Ρ ΠΏΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Ρ ΡΡΡΡ Π»ΡΡΡΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Β«NVENCΒ» ΠΈΠ»ΠΈ ΠΆΠ΅ Β«AMD AVCΒ». ΠΡΠ΅Π½ΠΊΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈ Π² ΡΡΠ°ΡΡΠ΅ Β«OBS Studio. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π΄Π»Ρ ΡΠ»Π°Π±ΡΡ ΠΠΒ» ΡΠ°ΠΌ ΡΠΊΠ°Π·Π°Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΠ ΠΈ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΡΠ΅ΠΉΡΠ°Ρ Π·Π°ΠΎΡΡΡΡΡΡ Π½Π° ΡΡΠΎΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²:
AMD VCE [ΠΊΠΎΠ΄Π΅Ρ H264 (AMD Advanced Media Framework)]
flv (ΠΈΠ»ΠΈ Flash Video) β Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΠ°ΡΡΠΉ ΡΠΎΡΠΌΠ°Ρ?, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ Π²ΠΈΠ΄Π΅ΠΎΡΡΠ°Π½Π΄Π°ΡΡΠ° H.263, ΠΌΠΎΠΆΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ YouTube.
mkv β ΠΌΠ°ΡΡΡΡΠΊΠ°, ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°ΡΠ΅Π»Π΅ΠΌ Windows, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π½Π° YouTube. ΠΠ° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ Π»ΡΡΡΠΈΠΉ ΡΠΎΡΠΌΠ°Ρ Ρ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°ΠΌΠΈ ΡΠΆΠ°ΡΠΈΡ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π°.
m3u8 β ΡΠΎΡΠΌΠ°Ρ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠ»Π΅ΠΉΠ»ΠΈΡΡΠΎΠ², Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π²ΠΈΠ΄Π΅ΠΎ, ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΡΠΎ ΡΠ΅ΡΠ½ΡΠΉ ΡΠΊΡΠ°Π½. Π€ΠΎΡΠΌΠ°Ρ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ iptv ΠΏΠ»Π΅ΠΉΠ»ΠΈΡΡΠΎΠ². ΠΠ°ΠΏΠΈΡΡΠ²Π°ΡΡ Π²ΠΈΠ΄Π΅ΠΎ Π² ΡΡΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ Π½Π΅ ΡΡΠΎΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎΡ ΡΠΎΡΠΌΠ°Ρ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«Π Π΅ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΠ΅ΠΉΒ». Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠΎΡΠΌΠ°Ρ Π²ΠΈΠ΄Π΅ΠΎ Π² mp4. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ Π²ΠΊΠ»Π°Π΄ΠΊΡ Β«Π€Π°ΠΉΠ»Β» ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ Β«Π Π΅ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΠ΅ΠΉΒ». Π ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΡΠΊΡΠΎΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°Π΅ΠΌ Π²ΠΈΠ΄Π΅ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ ΠΎΡΠΈΠΌ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ Β«Π Π΅ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡΒ». ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π²Π°ΡΠ΅ Π²ΠΈΠ΄Π΅ΠΎ Π±ΡΠ»ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎ ΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΆΠ΅ Π²Π°Ρ ΠΏΠ»Π΅Π΅Ρ Π½Π΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ.
ΠΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ΅ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠΈΠ½ΡΡΠ°Ρ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ ΠΠ ΠG-2 ΡΡ Π΅ΠΌΠ° ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π’Π ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½Π° ΠΊΠ°ΠΊ Π΄Π²ΡΡ ΡΡΡΠΏΠ΅Π½ΡΠ°ΡΠ°Ρ. ΠΠ° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ (ΠΠ) ΠΏΡΡΠ΅ΠΌ ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ PES Ρ ΠΎΠ±ΡΠ΅ΠΉ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·ΠΎΠΉ ΠΈ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΠΌΠΈ PID (ΡΠΈΡΡΠ½ΠΎΠΊ 3.7,Π°).
ΠΠ° Π²ΡΠΎΡΠΎΠΌ ΡΠ°Π³Π΅ ΠΠ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Π΅Π΄ΠΈΠ½ΡΠΉ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ (ΡΠΈΡΡΠ½ΠΎΠΊ 3.7,Π±). Π’ΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ ΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ· PES ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ Π’Π, Π΅ΡΠ»ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ ΠΎΠ±ΡΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΠ ΠG. Π’Π°ΠΊΠ°Ρ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π±ΠΎΠ»ΡΡΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ Π² ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌ Π²Π΅ΡΠ°Π½ΠΈΡ. ΠΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ PES ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π΄Π»Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ΅ΠΆΡΠ΅Π³ΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²Π΅ΡΠ°Π½ΠΈΡ Ρ Π²ΡΠ±ΠΎΡΠΎΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Π° ΠΈ Ρ.Π΄.
Π ΠΈΡΡΠ½ΠΎΠΊ 3.7 β ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ PES Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ (Π°) ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ (Π±)
ΠΠΈΠ±ΠΊΠΎΡΡΡ ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π’Π ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠ΄Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π²Π΅ΡΠ°Π½ΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π²Π²ΠΎΠ΄ΠΎΠΌ Π² Π’Π, ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌΡΠΉ ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΎΡΠΎΠΌ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΊΠΎΠ΄Π΅ΡΠ°ΠΌΠΈ, Β«ΠΏΠΎΡΡΠΎΡΠΎΠ½Π½Π΅Π³ΠΎΒ» ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°, ΠΏΠΎΡΡΡΠΏΠΈΠ²ΡΠ΅Π³ΠΎ ΠΏΠΎ Π»ΠΈΠ½ΠΈΠΈ ΡΠ²ΡΠ·ΠΈ ΠΈ ΠΈΠΌΠ΅ΡΡΠ΅Π³ΠΎ Π΄ΡΡΠ³ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π±Π°Π·Ρ (ΡΠ΅ΠΆΠΈΠΌ ΡΠ΅ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ). Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΎΡΡ Π»Π΅Π³ΠΊΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Ρ ΡΠ°ΠΊΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΡΠ±ΡΠ°ΡΡ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΡΠΈΡΠ΅Π΄ΡΠ΅Π³ΠΎ Π’Π ΠΆΠ΅Π»Π°Π΅ΠΌΡΠ΅, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ PID ΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΡΠ΅ΠΆΠΈΠΌ ΡΠΊΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ.
ΠΡΠ΅ ΠΎΠ΄Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠΆΠ°ΡΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π° β ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π·Π°ΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ΡΡ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠ΅ΡΡΡΡΠ° Π±ΠΈΡΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ΄Π΅ΡΠ°ΠΌΠΈ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΡΠΈΡΡΠΎΠ²ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ Ρ ΡΡΠ΅ΡΠΎΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΎΡΡΠ°Π²Π°Π»ΠΎΡΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΌ. ΠΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Β«Π·Π°Π³Π»ΡΠ΄ΡΠ²Π°Π½ΠΈΡ Π²ΠΏΠ΅ΡΠ΅Π΄Β» Π΄Π»Ρ ΠΎΡΠ΅Π½ΠΊΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΠΊΠ°Π΄ΡΠΎΠ² ΠΈ ΡΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΠΆΠΈΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΡΠΎΠΉΠΊΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΡΡ.
Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. Π£ΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΎΡΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΎΡ Π²ΡΠ΅Ρ ΠΊΠΎΠ΄Π΅ΡΠΎΠ² ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅Ρ Π΅Π΅ ΠΈ Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΊΠΎΠ΄Π΅ΡΡ ΡΠ΅ΡΡΡΡ Π±ΠΈΡΠΎΠ², ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠΈ. ΠΡΠΈ ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΊΠΎΡΠΎΡΡΠ΅ΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ°ΡΡΠ΅Ρ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΡΡΠΌΠΌΠ΅ ΡΡΠ΅Π΄Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ , Π° ΡΡΠ΅Π΄Π½Π΅ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΠΎΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠΌΡ ΠΊΠΎΡΠ½Ρ ΠΈΠ· ΡΠΈΡΠ»Π° ΠΊΠ°Π½Π°Π»ΠΎΠ². ΠΡΠ»ΠΈ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΠ»ΡΠΌΠΎΠ²ΡΠ΅, Π΄Π΅ΡΡΠΊΠΈΠ΅, ΡΠΏΠΎΡΡΠΈΠ²Π½ΡΠ΅, ΡΠ°Π·Π²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π² ΡΠ°Π·Π½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π½Π°Π»ΠΈΡΠΈΡ, Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ Π½Π°ΡΡΡΠ΅Π½Π½ΠΎΡΡΠΈ ΠΎΠ½ΠΈ ΡΡΠ΅Π±ΡΡΡ ΡΠ°Π·Π½ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ, ΡΡΠΎ Π΅ΡΠ΅ Π²Π°ΠΆΠ½Π΅Π΅, ΠΏΠΈΠΊΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ Π½Π°ΡΡΡΠΏΠ°ΡΡ Π² ΡΠ°Π·Π½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠΌΠΌΠ°ΡΠ½Π°Ρ ΡΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ ΡΠ½ΠΈΠΆΠ΅Π½Π°. ΠΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, ΡΡΠΎ Π±Π΅Π· ΡΡ ΡΠ΄ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΈΠ³ΡΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 30% ΠΏΡΠΎΠΏΡΡΠΊΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΊΠ°Π½Π°Π»Π°. ΠΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ ΡΠΏΡΡΠ½ΠΈΠΊΠΎΠ²ΠΎΠΌΡ Π’Π Π²Π΅ΡΠ°Π½ΠΈΡ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ 6 ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² ΡΠΏΡΡΠ½ΠΈΠΊΠΎΠ²ΠΎΠΌ ΡΡΠ²ΠΎΠ»Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ 8, Π²ΠΌΠ΅ΡΡΠΎ 8 Π΄ΠΎ 10. 11.
Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ FFmpeg libav
ΠΠΎΠ»Π³ΠΎ ΠΈΡΠΊΠ°Π» ΠΊΠ½ΠΈΠ³Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ°Π·ΠΆΡΠ²Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ FFmpeg-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΠΊΠ°ΠΊ libav (Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ library audio video). ΠΠ±Π½Π°ΡΡΠΆΠΈΠ» ΡΡΠ΅Π±Π½ΠΈΠΊ Β«ΠΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π²ΠΈΠ΄Π΅ΠΎΠΏΠ»Π΅Π΅Ρ ΠΈ ΡΠ»ΠΎΠΆΠΈΡΡΡΡ Π² ΠΌΠ΅Π½Π΅Π΅ ΡΠ΅ΠΌ ΡΡΡΡΡΡ ΡΡΡΠΎΠΊΒ». Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠ°ΠΌ ΡΡΡΠ°ΡΠ΅Π²ΡΠ°Ρ, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠ°Π½ΡΠ°Π» ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠΈΠ»Π°ΠΌΠΈ.
ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ Π½Π° C, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ Π²ΠΎΠ»Π½ΡΠΉΡΠ΅ΡΡ: ΠΡ Π»Π΅Π³ΠΊΠΎ Π²ΡΡ ΠΏΠΎΠΉΠΌΡΡΠ΅ ΠΈ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π½Π° Π»ΡΠ±ΠΈΠΌΠΎΠΌ ΡΠ·ΡΠΊΠ΅. Π£ FFmpeg libav ΡΠΉΠΌΠ° ΠΏΡΠΈΠ²ΡΠ·ΠΎΠΊ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΡΠ·ΡΠΊΠ°ΠΌ (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ ΠΊ Python ΠΈ ΠΊ Go). ΠΠΎ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΠ°Ρ ΡΠ·ΡΠΊ ΠΏΡΡΠΌΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ, Π²ΡΡ ΡΠ°Π²Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· ffi (Π²ΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Ρ Lua).
ΠΠ°ΡΠ½ΡΠΌ Ρ ΠΊΡΠ°ΡΠΊΠΎΠ³ΠΎ ΡΠΊΡΠΊΡΡΡΠ° ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎ, Π°ΡΠ΄ΠΈΠΎ, ΠΊΠΎΠ΄Π΅ΠΊΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ. ΠΠ°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΡΡΠΊΠΎΡΠ΅Π½Π½ΠΎΠΌΡ ΠΊΡΡΡΡ, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ FFmpeg, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΊΠΎΠ΄. ΠΠ΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ ΡΡΠ°Π·Ρ Π² ΡΠ°Π·Π΄Π΅Π» Β«Π’Π΅ΡΠ½ΠΈΡΡΡΠΉ ΠΏΡΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ FFmpeg libavΒ».
ΠΡΡΡ ΠΌΠ½Π΅Π½ΠΈΠ΅ (ΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΡ), ΡΡΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-Π²ΠΈΠ΄Π΅ΠΎ ΡΠΆΠ΅ ΠΏΡΠΈΠ½ΡΠ»ΠΎ ΡΡΡΠ°ΡΠ΅ΡΡ ΠΎΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ΅Π»Π΅Π²ΠΈΠ΄Π΅Π½ΠΈΡ. ΠΠ°ΠΊ Π±Ρ ΡΠΎ Π½ΠΈ Π±ΡΠ»ΠΎ, FFmpeg libav ΡΠΎΡΠ½ΠΎ Π΄ΠΎΡΡΠΎΠΈΠ½ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ.
ΠΠ³Π»Π°Π²Π»Π΅Π½ΠΈΠ΅
![]()
Π‘ΡΠ°ΡΡΡ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Π° ΠΏΡΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ EDISON.
ΠΡ ΠΎΡΠ΅Π½Ρ Π»ΡΠ±ΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π²ΠΈΠ΄Π΅ΠΎ! π
ΠΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅ β
ΠΠΈΠ΄Π΅ΠΎ β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΡΡ Π²ΠΈΠ΄ΠΈΡΡ! β
ΠΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΠ΅Π½ΡΡΡ Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°ΡΡΠΎΡΠΎΠΉ (ΡΠΊΠ°ΠΆΠ΅ΠΌ, 24 ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ), ΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΈΠ»Π»ΡΠ·ΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎ ΠΈ Π΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΈΠ΄Π΅Ρ Π²ΠΈΠ΄Π΅ΠΎ: ΡΠ΅ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (ΠΊΠ°Π΄ΡΠΎΠ²), Π΄Π²ΠΈΠΆΡΡΠΈΡ ΡΡ Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΡΡ.
ΠΠ»Π»ΡΡΡΡΠ°ΡΠΈΡ 1886 Π³ΠΎΠ΄Π°.
ΠΡΠ΄ΠΈΠΎ β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΡΡ ΡΠ»ΡΡΠΈΡΡ! β
Π₯ΠΎΡΡ Π½Π΅ΠΌΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠ°ΠΌΡΠ΅ ΡΠ°Π·Π½ΡΠ΅ ΡΡΠ²ΡΡΠ²Π°, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π²ΡΠΊΠ° ΡΠ΅Π·ΠΊΠΎ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΈΡ.
ΠΠ²ΡΠΊ β ΡΡΠΎ ΠΊΠΎΠ»Π΅Π±Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ»Π½Ρ, ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΠΌΡΠ΅ Π² Π²ΠΎΠ·Π΄ΡΡ Π΅ ΠΈΠ»ΠΈ Π² Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ΅Π΄Π°Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ (ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π³Π°Π·, ΠΆΠΈΠ΄ΠΊΠΎΡΡΡ ΠΈΠ»ΠΈ ΡΠ²Π΅ΡΠ΄ΠΎΠ΅ Π²Π΅ΡΠ΅ΡΡΠ²ΠΎ).
Π ΡΠΈΡΡΠΎΠ²ΠΎΠΉ Π°ΡΠ΄ΠΈΠΎΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΌΠΈΠΊΡΠΎΡΠΎΠ½ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π·Π²ΡΠΊ Π² Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΊΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΈΠ³Π½Π°Π». ΠΠ°ΡΠ΅ΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΎ-ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Ρ (ΠΠ¦Π) β ΠΎΠ±ΡΡΠ½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠΏΡΠ»ΡΡΠ½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»ΡΡΠΈΠΈ (ΠΠΠ) β ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΡΠΉ ΡΠΈΠ³Π½Π°Π» Π² ΡΠΈΡΡΠΎΠ²ΠΎΠΉ.
ΠΠΎΠ΄Π΅ΠΊ β ΡΠΆΠ°ΡΠΈΠ΅ Π΄Π°Π½Π½ΡΡ β
ΠΠΎΠ΄Π΅ΠΊ β ΡΡΠΎ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½Π°Ρ ΡΡ Π΅ΠΌΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅, ΡΠΆΠΈΠΌΠ°ΡΡΠ΅Π΅ ΠΈΠ»ΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°ΡΡΠ΅Π΅ ΡΠΈΡΡΠΎΠ²ΠΎΠ΅ Π°ΡΠ΄ΠΈΠΎ/Π²ΠΈΠ΄Π΅ΠΎ. ΠΠ½ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ΅ (Π½Π΅ΡΠΆΠ°ΡΠΎΠ΅) ΡΠΈΡΡΠΎΠ²ΠΎΠ΅ Π°ΡΠ΄ΠΈΠΎ/Π²ΠΈΠ΄Π΅ΠΎ Π² ΡΠΆΠ°ΡΡΠΉ ΡΠΎΡΠΌΠ°Ρ (ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ).
ΠΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠ΅ΡΠΈΠΌ ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΉΠ» ΠΈ Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ ΡΠΈΠ»ΡΠΌΠΎΠΌ, Ρ Π½Π°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΉ ΡΠ°ΠΉΠ». ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΡΠΈΡΠ°Π΅ΠΌ:
ΠΠΎΠΏΡΡΡΠΈΠΌ, ΡΠΎΠ·Π΄Π°ΡΠΌ Π²ΠΈΠ΄Π΅ΠΎ Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ 1080Γ1920 (Π²ΡΡΠΎΡΠ° Γ ΡΠΈΡΠΈΠ½Π°). Π’ΡΠ°ΡΠΈΠΌ 3 Π±Π°ΠΉΡΠ° Π½Π° ΠΏΠΈΠΊΡΠ΅Π»Ρ (ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΠΎΡΠΊΡ Π½Π° ΡΠΊΡΠ°Π½Π΅) Π΄Π»Ρ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ (24-Π±ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°, ΡΡΠΎ Π΄Π°Π΅Ρ Π½Π°ΠΌ ΡΠ°Π·Π½ΡΡ ΡΠ²Π΅ΡΠΎΠ²). ΠΡΠΎ Π²ΠΈΠ΄Π΅ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡΡ 24 ΠΊΠ°Π΄ΡΠ° Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ, ΠΎΠ±ΡΠ°Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ 30 ΠΌΠΈΠ½ΡΡ.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΠΈΠ΄Π΅ΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎ 250,28 ΠΠ± ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ»ΠΈ 1,11 ΠΠ±ΠΈΡ/Ρ! ΠΠΎΡ ΠΏΠΎΡΡΠΎΠΌΡ ΠΈ ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄Π΅ΠΊ.
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ β ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π°ΡΠ΄ΠΈΠΎ/Π²ΠΈΠ΄Π΅ΠΎ β
Π€ΠΎΡΠΌΠ°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° (ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ) β ΡΡΠΎ ΡΠΎΡΠΌΠ°Ρ ΠΌΠ΅ΡΠ°ΡΠ°ΠΉΠ»Π°, ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΡΠΎΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π² ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅.
ΠΡΠΎ Π΅Π΄ΠΈΠ½ΡΠΉ ΡΠ°ΠΉΠ», ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π²ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ (Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ, Π°ΡΠ΄ΠΈΠΎ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ), ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΉ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΎΠ±ΡΠΈΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ (ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅) ΠΈ Ρ.ΠΏ.
ΠΠ±ΡΡΠ½ΠΎ ΡΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎ Π΅Π³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, video.webm β ΡΡΠΎ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π²ΠΈΠ΄Π΅ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° webm.
ΠΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ° FFmpegβ
Π‘Π°ΠΌΠΎΠ΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠ΅ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ, ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΠΈ ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π°ΡΠ΄ΠΈΠΎ/Π²ΠΈΠ΄Π΅ΠΎ.
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠ° Ρ Π½Π°Ρ Π΅ΡΡΡ Π²ΠΎΡΡ ΠΈΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ β Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ FFmpeg. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π΅Ρ Π² ΡΠ²ΠΎΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, ΡΠΎ Π²ΡΡ ΡΠ°Π²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π΅Ρ (ΠΡ Π²Π΅Π΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Chrome?).
Π Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΊΠ° Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ffmpeg (ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΌΠΈ Π±ΡΠΊΠ²Π°ΠΌΠΈ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ°ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ). ΠΡΠΎ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ ΠΌΠΎΡΠ½ΡΠΉ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ· mp4 Π² avi, ΠΏΡΠΎΡΡΠΎ Π½Π°Π±ΡΠ°Π² ΡΠ°ΠΊΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
ΠΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΠ΅ΠΌΠΈΠΊΡΠΈΠ½Π³ β ΡΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π² Π΄ΡΡΠ³ΠΎΠΉ. Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ FFmpeg ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΡΠ°Π½ΡΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π½ΠΎ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ FFmpeg 101 β
Π£ FFmpeg Π΅ΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, Π³Π΄Π΅ Π²ΡΡ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΎ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
Π‘Ρ Π΅ΠΌΠ°ΡΠΈΡΠ½ΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ FFmpeg ΠΎΠΆΠΈΠ΄Π°Π΅Ρ, ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΎΡΠΌΠ°Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΡΠ²ΠΎΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ β ffmpeg <1> <2>-i <3> <4>, Π³Π΄Π΅:
β Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
β ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π²Ρ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
β Π²Ρ
ΠΎΠ΄ΡΡΠΈΠΉ URL
β ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
β ΠΈΡΡ
ΠΎΠ΄ΡΡΠΈΠΉ URL
Π ΡΠ°ΡΡΡΡ <2>, <3>, <4>, <5>ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠΎΠ»ΡΠΊΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½ΡΠΆΠ½ΠΎ. ΠΡΠΎΡΠ΅ ΠΏΠΎΠ½ΡΡΡ ΡΠΎΡΠΌΠ°Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
# ΠΠ ΠΠΠ£ΠΠ ΠΠΠΠΠΠΠ: ΡΠ°ΠΉΠ» ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Π²Π΅ΡΠΈΡ 300 ΠΠ
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±Π΅ΡΠ΅Ρ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ mp4-ΡΠ°ΠΉΠ», ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π΄Π²Π° ΠΏΠΎΡΠΎΠΊΠ° (Π°ΡΠ΄ΠΈΠΎ, Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π΅ΠΊΠ° aac, ΠΈ Π²ΠΈΠ΄Π΅ΠΎ, Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ΠΊΠ° h264), ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π΅Π³ΠΎ Π² webm, ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠ΄Π΅ΠΊΠΈ Π°ΡΠ΄ΠΈΠΎ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ.
ΠΡΠ»ΠΈ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠ΅ΡΡΡ, ΡΡΠΎ FFmpeg ΠΏΡΠΈΠΌΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΠ°Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Π½Π°Π±ΡΠ°ΡΡ
ΡΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Π°ΡΠ΄ΠΈΠΎ/Π²ΠΈΠ΄Π΅ΠΎ ΠΊΠΎΠ΄Π΅ΠΊ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ output.mp4?
ΠΠ΅ΡΠ½Π΅Ρ Π ΠΎΠ±ΠΈΡΠ° Π½Π°ΠΏΠΈΡΠ°Π» ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΡΡΠ΅Π½ΠΈΡ/ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ FFmpeg.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ Π²ΠΈΠ΄Π΅ΠΎβ
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π°ΡΠ΄ΠΈΠΎ/Π²ΠΈΠ΄Π΅ΠΎ ΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΡΠ΄ Π·Π°Π΄Π°Ρ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠ°.
Π’ΡΠ°Π½ΡΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅)β
Π§ΡΠΎ ΡΡΠΎ? ΠΡΠΎΡΠ΅ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π°ΡΠ΄ΠΈΠΎ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎ (ΠΈΠ»ΠΈ ΠΈ ΡΠΎ ΠΈ Π΄ΡΡΠ³ΠΎΠ΅ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ) ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π΅ΠΊΠ° Π² Π΄ΡΡΠ³ΠΎΠΉ. Π€ΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»Π° (ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ) ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ.
ΠΠ»Ρ ΡΠ΅Π³ΠΎ? ΠΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (ΡΠ΅Π»Π΅Π²ΠΈΠ·ΠΎΡΡ, ΡΠΌΠ°ΡΡΡΠΎΠ½Ρ, ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΈ Ρ. Π΄.) Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΡΠΌΠ°Ρ Π°ΡΠ΄ΠΈΠΎ/Π²ΠΈΠ΄Π΅ΠΎ X, Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΡΠΌΠ°Ρ Π°ΡΠ΄ΠΈΠΎ/Π²ΠΈΠ΄Π΅ΠΎ Y. ΠΠ»ΠΈ ΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡΠ΅ ΠΊΠΎΠ΄Π΅ΠΊΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π»ΡΡΡΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΡΠΆΠ°ΡΠΈΡ.
ΠΠ°ΠΊ? ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π²ΠΈΠ΄Π΅ΠΎ H264 (AVC) Π² H265 (HEVC):
Π’ΡΠ°Π½ΡΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅β
Π§ΡΠΎ ΡΡΠΎ? ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° (ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°) Π² Π΄ΡΡΠ³ΠΎΠΉ.
ΠΠ»Ρ ΡΠ΅Π³ΠΎ? ΠΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (ΡΠ΅Π»Π΅Π²ΠΈΠ·ΠΎΡΡ, ΡΠΌΠ°ΡΡΡΠΎΠ½Ρ, ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΈ Ρ. Π΄.) Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»Π° X, Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»Π° Y. ΠΠ»ΠΈ ΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ , ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ°ΠΊ? ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅ΠΌ mp4 Π² webm:
Π’ΡΠ°Π½ΡΡΠ΅ΠΉΡΠΈΠ½Π³β
Π§ΡΠΎ ΡΡΠΎ? ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ.
ΠΠ»Ρ ΡΠ΅Π³ΠΎ? ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΌΠΎΡΡΠ΅ΡΡ ΠΠ°ΡΠ΅ Π²ΠΈΠ΄Π΅ΠΎ ΠΊΠ°ΠΊ Π² ΡΠ΅ΡΠΈ 2G Π½Π° ΠΌΠ°Π»ΠΎΠΌΠΎΡΠ½ΠΎΠΌ ΡΠΌΠ°ΡΡΡΠΎΠ½Π΅, ΡΠ°ΠΊ ΠΈ ΡΠ΅ΡΠ΅Π· ΠΎΠΏΡΠΎΠ²ΠΎΠ»ΠΎΠΊΠΎΠ½Π½ΡΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠ²ΡΠ·Ρ Π½Π° 4K-ΡΠ΅Π»Π΅Π²ΠΈΠ·ΠΎΡΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ Π²ΠΈΠ΄Π΅ΠΎ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΊΠΎΡΠΎΡΡΡΠΌΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ .
ΠΠ°ΠΊ? ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ Π±ΠΈΡΡΠ΅ΠΉΡΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρ 3856K ΠΈ 2000K.
ΠΠ±ΡΡΠ½ΠΎ ΡΡΠ°Π½ΡΡΠ΅ΠΉΡΠΈΠ½Π³ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π² ΡΠ²ΡΠ·ΠΊΠ΅ Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠΎΠΉ. ΠΠ΅ΡΠ½Π΅Ρ Π ΠΎΠ±ΠΈΡΠ° Π½Π°ΠΏΠΈΡΠ°Π» Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΡ Π΄Π»Ρ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Π΅Π½ΠΈΡ ΡΡΠ°ΡΡΡ ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ ΡΠΊΠΎΡΠΎΡΡΠΈ FFmpeg.
Π’ΡΠ°Π½ΡΠ°ΠΉΠ·ΠΈΠ½Π³ (ΠΏΠ΅ΡΠ΅ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠ°)β
Π§ΡΠΎ ΡΡΠΎ? ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠ΅ΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ. ΠΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅, ΡΡΠ°Π½ΡΡΠ°ΠΉΠ·ΠΈΠ½Π³ ΡΠ°ΡΡΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Ρ ΡΡΠ°Π½ΡΡΠ΅ΠΉΡΠΈΠ½Π³ΠΎΠΌ.
ΠΠ»Ρ ΡΠ΅Π³ΠΎ? ΠΠΎ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ, ΡΡΠΎ ΠΈ Ρ ΡΡΠ°Π½ΡΡΠ΅ΠΉΡΠΈΠ½Π³ΠΎΠΌ.
ΠΠ°ΠΊ? Π£ΠΌΠ΅Π½ΡΡΠΈΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 1080 Π΄ΠΎ 480:
ΠΠΎΠ½ΡΡ: Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΡΠΉ ΡΡΡΠΈΠΌΠΈΠ½Π³β
Π§ΡΠΎ ΡΡΠΎ? Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ (Π±ΠΈΡΡΠ΅ΠΉΡΠΎΠ²) ΠΈ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΌΠ΅Π΄ΠΈΠ° Π½Π° ΡΠ°ΡΡΠΈ ΠΈ ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΏΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ http.
ΠΠ»Ρ ΡΠ΅Π³ΠΎ? Π Π°Π΄ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Ρ ΠΎΡΡ Π½Π° Π±ΡΠ΄ΠΆΠ΅ΡΠ½ΠΎΠΌ ΡΠΌΠ°ΡΡΡΠΎΠ½Π΅ Ρ ΠΎΡΡ Π½Π° 4K-ΠΏΠ»Π°Π·ΠΌΠ΅, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°ΡΡ (Π½ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ).
ΠΠ°ΠΊ? Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΡΠΉ WebM Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ DASH:
ΠΡΡ ΠΎΠ΄Ρ Π·Π° ΡΠ°ΠΌΠΊΠΈβ
ΠΠ΅ΡΡΡ ΡΠΈΡΠ»Π° Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ FFmpeg. Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΅Π³ΠΎ Π²ΠΌΠ΅ΡΡΠ΅ Ρ iMovie Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ/ΠΏΡΠ°Π²ΠΊΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π²ΠΈΠ΄Π΅ΠΎ Π΄Π»Ρ YouTube. Π ΠΠ°ΠΌ, Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΡΠΎΠΆΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΡΠ΅Ρ.
Π’Π΅ΡΠ½ΠΈΡΡΡΠΉ ΠΏΡΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ FFmpeg libavβ
Π Π°Π·Π²Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π΅ ΠΏΠΎΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎ, ΡΡΠΎ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΡΠ»ΡΡ ΠΈ Π·ΡΠ΅Π½ΠΈΠ΅?
ΠΠΈΠΎΠ»ΠΎΠ³ ΠΡΠ²ΠΈΠ΄ Π ΠΎΠ±Π΅ΡΡ ΠΠΆΠΎΠ½Ρ
FFmpeg ΠΊΡΠ°ΠΉΠ½Π΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²Π°ΠΆΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ. ΠΠΎΠΆΠ΅Ρ ΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Π΅Π³ΠΎ ΡΠΎΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ?
FFmpeg ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Π² Π½Π°ΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ±ΡΡΠ½ΠΎ, ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ FFmpeg, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π²ΡΠ΅ ΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. Π― Π±ΡΠ΄Ρ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° Π½Π°Π±ΠΎΡ ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΊΠ°ΠΊ FFmpeg libav.
ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°Π·Π΄Π΅Π»Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π°Π½ΡΡ ΡΠ²Π°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΡΠΈΠΈ ΠΠ΅Π΄Π° Π¨ΠΎΡ Β«Π’Π΅ΡΠ½ΠΈΡΡΡΠΉ ΠΏΡΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ [. ]Β», Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Π΅Π³ΠΎ ΠΊΠ½ΠΈΠ³Π΅ Β«Π’Π΅ΡΠ½ΠΈΡΡΡΠΉ ΠΏΡΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΡΠ·ΡΠΊΡ CΒ».
ΠΠ»Π°Π²Π° 0 β ΠΏΡΠΎΡΡΠ΅Π½ΡΠΊΠΈΠΉ Β«Hello WorldΒ»β
Π Π½Π°ΡΠ΅ΠΌ Hello World Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΌΠΈΡ Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²ΠΈΠ΄Π΅ΠΎ: ΡΠΎΡΠΌΠ°Ρ (ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ), ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π°ΡΠ΄ΠΈΠΎΠΊΠ°Π½Π°Π»Ρ ΠΈ, Π½Π°ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠΊ, ΡΠ°ΡΡΠΈΡΡΡΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ°Π΄ΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΠΌ ΠΈΡ ΠΊΠ°ΠΊ ΡΠ°ΠΉΠ»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° FFmpeg libavβ
ΠΠΎ ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π½Π°ΡΠ½ΡΠΌ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° FFmpeg libav ΠΈ ΠΊΠ°ΠΊ Π΅Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ.
ΠΠΎΡ ΡΡ Π΅ΠΌΠ° ΠΏΡΠΎΡΠ΅ΡΡΠ° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΠΈΠ΄Π΅ΠΎ:
Π‘Π½Π°ΡΠ°Π»Π° ΠΌΠ΅Π΄ΠΈΠ°ΡΠ°ΠΉΠ» Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ AVFormatContext (ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π²ΠΈΠ΄Π΅ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ). ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π²Π΅ΡΡ ΡΠ°ΠΉΠ»: ΡΠ°ΡΡΠΎ ΡΠΈΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ.
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°Π³ΡΡΠ·ΠΈΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΅Π³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ (ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΠΊΠ°ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΡΠ΅ Π°ΡΠ΄ΠΈΠΎ- ΠΈ Π²ΠΈΠ΄Π΅ΠΎ-Π΄Π°Π½Π½ΡΠ΅). ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ AVStream.
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π½Π°ΡΠ΅ Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π° ΠΏΠΎΡΠΎΠΊΠ°: Π°ΡΠ΄ΠΈΠΎ, Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π΅ΠΊΠ° AAC, ΠΈ Π²ΠΈΠ΄Π΅ΠΎ, Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π΅ΠΊΠ° H264 (AVC). ΠΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·Π²Π»Π΅ΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ Π΄Π°Π½Π½ΡΡ , Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ AVPacket.
ΠΠ°Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΊΠΎΠ΄ΠΈΡΡΡΡΡΡ (ΡΠΆΠΈΠΌΠ°ΡΡΡΡ), ΠΈ Π΄Π»Ρ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ AVCodec.
AVCodec Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΡΠ΅Ρ ΠΈΡ Π² AVFrame, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π²ΡΠ΄Π°Π΅Ρ Π½Π°ΠΌ Π½Π΅ΡΠΆΠ°ΡΡΠΉ ΠΊΠ°Π΄Ρ. ΠΡΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ ΠΊΠ°ΠΊ Π΄Π»Ρ Π°ΡΠ΄ΠΈΠΎ- ΡΠ°ΠΊ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ-ΠΏΠΎΡΠΎΠΊΠ°.
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡβ
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈΠ»ΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Docker Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ/Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π’Π°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΈΠ΄Π΅ΠΎ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΡΠΎΠ»ΠΈΠΊΠΎΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅Π³ΠΎ Π½Π΅Ρ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠ²Π΅Π΄ΠΈΡΠ΅ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ make fetch_small_bunny_video.
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΊΠΎΠ΄β
TLDR; ΠΏΠΎΠΊΠ°ΠΆΠΈ ΠΌΠ½Π΅ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠΏΠΎΠ»ΡΠ½Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π±ΡΠΎ:
ΠΡ ΠΎΠΏΡΡΡΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ, Π½ΠΎ Π½Π΅ Π²ΠΎΠ»Π½ΡΠΉΡΠ΅ΡΡ: ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π° github.
ΠΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° AVFormatContext, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΡΠΌΠ°ΡΠ΅ (ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅).
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΎΡΠΊΡΡΡΡ ΡΠ°ΠΉΠ», ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π΅Π³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ AVFormatContext ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΡΠΎΡΠΌΠ°ΡΠ΅ (ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ ΠΊΠΎΠ΄Π΅ΠΊΠΈ Π½Π΅ ΠΎΡΠΊΡΡΠ²Π°ΡΡΡΡ). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ avformat_open_input. ΠΠ½ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ AVFormatContext, ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΈ Π΄Π²Π° Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°: AVInputFormat (Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΡΠ΅ NULL, FFmpeg ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡ ΡΠΎΡΠΌΠ°Ρ) ΠΈ AVDictionary (ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠΏΡΠΈΡΠΌΠΈ Π΄Π΅ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΎΡΠ°).
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΠ° ΠΈ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΌΠ΅Π΄ΠΈΠ°:
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Ρ Π½ΠΎΡΠΈΡΠ΅Π»Ρ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ avformat_find_stream_info. Π’Π΅ΠΏΠ΅ΡΡ pFormatContext-> nb_streams Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π° pFormatContext-> streams[i] Π΄Π°ΡΡ Π½Π°ΠΌ i-ΠΉ ΠΏΠΎ ΡΡΡΡΡ ΠΏΠΎΡΠΎΠΊ (AVStream).
ΠΡΠΎΠΉΠ΄Π΅ΠΌΡΡ Π² ΡΠΈΠΊΠ»Π΅ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ:
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ AVCodecParameters, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΊΠΎΠ΄Π΅ΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ i-ΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ:
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ² ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΉΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ, Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ avcodec_find_decoder, ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΉΡΠΈ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ Π΄Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΊΠΎΠ΄Π΅ΠΊΠ° ΠΈ Π²Π΅ΡΠ½ΡΡΡ AVCodec β ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π½Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊ:
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠ΄Π΅ΠΊΠ°Ρ :
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π΅ΠΊΠ° Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ AVCodecContext, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ/ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎ Π·Π°ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΊΠΎΠ΄Π΅ΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ CODEC β ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ avcodec_parameters_to_context.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΊΠΎΠ΄Π΅ΠΊΠ°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΊΡΡΡΡ ΠΊΠΎΠ΄Π΅ΠΊ. ΠΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ avcodec_open2 ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ:
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠ° ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ Π² ΠΊΠ°Π΄ΡΡ, Π½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ ΠΎΠ±ΠΎΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² (AVPacket ΠΈ AVFrame).
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΊΠΎΡΠΌΠΈΠΌ Π½Π°ΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ av_read_frame, ΠΏΠΎΠΊΠ° Ρ Π½Π΅Π΅ Π΅ΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ:
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΡΠΏΡΠ°Π²ΠΈΠΌ ΠΏΠ°ΠΊΠ΅Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ (ΡΠΆΠ°ΡΡΠΉ ΠΊΠ°Π΄Ρ) Π² Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΊΠΎΠ΄Π΅ΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ avcodec_send_packet:
Π Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΊΠ°Π΄Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ (Π½Π΅ΡΠΆΠ°ΡΡΠΉ ΠΊΠ°Π΄Ρ) ΠΎΡ Π΄Π΅ΠΊΠΎΠ΄Π΅ΡΠ° ΡΠ΅ΡΠ΅Π· ΡΠΎΡ ΠΆΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΊΠΎΠ΄Π΅ΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ avcodec_receive_frame:
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π½ΠΎΠΌΠ΅Ρ ΠΊΠ°Π΄ΡΠ°, PTS, DTS, ΡΠΈΠΏ ΠΊΠ°Π΄ΡΠ° ΠΈ Ρ.Π΄.:
Π Π½Π°ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠΊ, ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π½Π°Ρ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠ°Π΄Ρ Π² ΠΏΡΠΎΡΡΠΎΠ΅ ΡΠ΅ΡΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠΎΡΠ΅ΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡ: ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ pFrame->data, Π³Π΄Π΅ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ²ΡΠ·Π°Π½ Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΠΌΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°ΠΌΠΈ Y, Cb ΠΈ Cr. ΠΡΠΎΡΡΠΎ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ 0 (Y), ΡΡΠΎΠ±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π½Π°ΡΠ΅ ΡΠ΅ΡΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈ:
Π Π²ΡΠ°Π»Ρ! Π’Π΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΎΠ½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 2ΠΠ±:
ΠΠ»Π°Π²Π° 1 β ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π°ΡΠ΄ΠΈΠΎ ΠΈ Π²ΠΈΠ΄Π΅ΠΎβ
ΠΡΡΡ Π² ΠΈΠ³ΡΠ΅ β ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΡΠ½ΡΠΉ JS-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΈΡΠ΅Ρ Π½ΠΎΠ²ΡΠΉ MSE-Π²ΠΈΠ΄Π΅ΠΎΠΏΠ»Π΅Π΅Ρ.
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΡΡΠ°Π½ΡΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π΅ΠΎΠΏΠ»Π΅Π΅Ρ ΡΠ·Π½Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΊΠ°Π΄ΡΠ°.
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΡ
ΡΠ°Π½ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ°Π΄ΡΠΎΠ²:
ΠΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅ΠΎΠΏΠ»Π΅Π΅Ρ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ°Π΄Ρ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΡΠ΅ΠΌΠΏΠ΅, ΠΈΠ½Π°ΡΠ΅ ΡΡΡΠ΄Π½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΈΠ΅ ΠΎΡ Π²ΠΈΠ΄Π΅ΠΎ Π»ΠΈΠ±ΠΎ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΡΡΡΡΠΎ, Π»ΠΈΠ±ΠΎ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ.
ΠΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π΅ΠΊΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π΄Π»Ρ ΠΏΠ»Π°Π²Π½ΠΎΠ³ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ°Π΄ΡΠ°. Π ΡΡΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ°Π΄Ρ ΠΈΠΌΠ΅Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½Γ½Ρ ΠΌΠ΅ΡΠΊΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ (PTS β ΠΎΡ presentation timestamp), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡΠ΅Π΅ΡΡ ΡΠΈΡΠ»ΠΎ, ΡΡΠΈΡΡΠ²Π°Π΅ΠΌΠΎΠ΅ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ timebase, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ (Π³Π΄Π΅ Π·Π½Π°ΠΌΠ΅Π½Π°ΡΠ΅Π»Ρ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΜΠΉ ΠΌΠ°ΡΡΡΠ°Π± β timescale), Π΄Π΅Π»ΠΈΠΌΠΎΠ΅ Π½Π° ΡΠ°ΡΡΠΎΡΡ ΠΊΠ°Π΄ΡΠΎΠ² (fps).
ΠΡΠΎΡΠ΅ ΠΏΠΎΠ½ΡΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ . ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡΡΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ.
ΠΠ»Ρ fps = 60/1 ΠΈ timebase = 1/60000 ΠΊΠ°ΠΆΠ΄ΡΠΉ PTS Π±ΡΠ΄Π΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ timescale / fps = 1000, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ PTS Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ°Π΄ΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ (ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ ΠΎΠ½ΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ 0):
ΠΠΎΡΡΠΈ ΠΏΠΎ ΡΠΎΠΌΡ ΠΆΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΡ, Π½ΠΎ Ρ timescale, ΡΠ°Π²Π½ΠΎΠΉ 1/60:
ΠΠ»Ρ fps = 25/1 ΠΈ timebase = 1/75 ΠΊΠ°ΠΆΠ΄Π°Ρ PTS Π±ΡΠ΄Π΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ timescale / fps = 3, ΠΈ Π²ΡΠ΅ΠΌΡ PTS ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ:
Π’Π΅ΠΏΠ΅ΡΡ Ρ pts_time ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΉΡΠΈ ΡΠΏΠΎΡΠΎΠ± Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠΎ Π·Π²ΡΠΊΠΎΠΌ pts_time ΠΈΠ»ΠΈ Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌΠΈ ΡΠ°ΡΠ°ΠΌΠΈ. FFmpeg libav ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΠ²ΠΎΠΉ API:
ΠΡΠΎΡΡΠΎ ΠΈΠ· Π»ΡΠ±ΠΎΠΏΡΡΡΡΠ²Π°, ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΠ΅ Π½Π°ΠΌΠΈ ΠΊΠ°Π΄ΡΡ Π±ΡΠ»ΠΈ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ DTS (ΠΊΠ°Π΄ΡΡ: 1, 6, 4, 2, 3, 5), Π½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ PTS (ΠΊΠ°Π΄ΡΡ: 1, 2, 3, 4, 5). Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π΅ΡΠ΅Π²Π»Π΅ ΠΎΠ±Ρ ΠΎΠ΄ΡΡΡΡ B-ΠΊΠ°Π΄ΡΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ P ΠΈΠ»ΠΈ I-ΠΊΠ°Π΄ΡΠ°ΠΌΠΈ:
ΠΠ»Π°Π²Π° 2 β ΡΠ΅ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅β
Π Π΅ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ°, remuxing) β ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° (ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°) ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π±Π΅Π· ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ ΡΡΡΠ΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π²ΠΈΠ΄Π΅ΠΎ MPEG-4 Π½Π° MPEG-TS Ρ ΠΏΠΎΠΌΠΎΡΡΡ FFmpeg:
MP4-ΡΠ°ΠΉΠ» Π±ΡΠ΄Π΅Ρ Π΄Π΅ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½, ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ°ΠΉΠ» Π½Π΅ Π±ΡΠ΄Π΅Ρ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ (-c copy), ΠΈ, Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², Π½Π° Π²ΡΡ ΠΎΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠΈΠΌ mpegts-ΡΠ°ΠΉΠ». ΠΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΎΡΠΌΠ°Ρ -f, ffmpeg ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΡΠ³Π°Π΄Π°ΡΡ Π΅Π³ΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°.
ΠΠ±ΡΠ΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ FFmpeg ΠΈΠ»ΠΈ libav ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°ΠΊΠΎΠΌΡ ΡΠ°Π±Π»ΠΎΠ½Ρ/Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ:
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ libav, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠΎΡ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡ, ΡΡΠΎ ΠΈ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
ΠΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΡΠΈΡΠ°ΡΡ ΠΈΠ· Π²Π²ΠΎΠ΄Π° (input_format_context) ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π΅Π³ΠΎ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ Π²ΡΠ²ΠΎΠ΄ (output_format_context):
ΠΠ±ΡΡΠ½ΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΡ ΠΈ ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠΎΡΠΌΠ°Ρ Π²Π²ΠΎΠ΄Π°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΎΡΠΊΡΡΡΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ» ΠΈ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°:
ΠΡΠ΄Π΅ΠΌ ΡΠ΅ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΈ Π²ΠΈΠ΄Π΅ΠΎ, Π°ΡΠ΄ΠΈΠΎ ΠΈ ΡΡΠ±ΡΠΈΡΡΠΎΠ². ΠΠΎΡΡΠΎΠΌΡ ΡΠΈΠΊΡΠΈΡΡΠ΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π² ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²:
Π‘ΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΡΠ΄Π΅Π»ΠΈΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠ°ΠΌΡΡΡ, Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠΈΠΊΠ» ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ, ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π² Π½Π°ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ avformat_new_stream. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π²ΠΈΠ΄Π΅ΠΎ, Π°ΡΠ΄ΠΈΠΎ ΠΈΠ»ΠΈ ΡΡΠ±ΡΠΈΡΡΠ°ΠΌΠΈ, ΡΡΠΎΠ±Ρ Π±ΡΠ»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΠΈΡ .
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΠ·Π΄Π°ΡΠΌ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ»:
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊΠΈ, ΠΏΠ°ΠΊΠ΅Ρ Π·Π° ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ, ΠΈΠ· Π½Π°ΡΠ΅Π³ΠΎ Π²Π²ΠΎΠ΄Π° Π² Π½Π°ΡΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΡΠΈΠΊΠ»Π΅, ΠΏΠΎΠΊΠ° Π΅ΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ (av_read_frame), Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΡΠΈΡΠ°ΡΡ PTS ΠΈ DTS, ΡΡΠΎΠ±Ρ Π½Π°ΠΊΠΎΠ½Π΅Ρ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π΅Π³ΠΎ (av_interleaved_write_frame) Π² Π½Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ°.
ΠΠ»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ΅ΠΉΠ»Π΅Ρ ΠΏΠΎΡΠΎΠΊΠ° Π² Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ΅Π΄ΠΈΠ°ΡΠ°ΠΉΠ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ av_write_trailer:
ΠΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ! ΠΠ΅ Π²Π΅ΡΠΈΡΠ΅?! ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ffprobe:
ΠΠΎΠ΄Π²ΠΎΠ΄Ρ ΠΈΡΠΎΠ³ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ, ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ Π½Π°ΡΠ΅ΠΉ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ΄Π΅Π΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ libav. ΠΠΎ ΠΌΡ ΠΏΡΠΎΠΏΡΡΡΠΈΠ»ΠΈ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π΅ΠΊΠ°, ΡΡΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΎ Π½Π° ΡΡ Π΅ΠΌΠ΅.
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π·Π°ΠΊΠΎΠ½ΡΠΈΠΌ ΡΡΡ Π³Π»Π°Π²Ρ, Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ°ΠΊΡΡ Π²Π°ΠΆΠ½ΡΡ ΡΠ°ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ΅ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΡΠΎΠ²Π°Π½ΠΈΡ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΎΡΡ. ΠΠΎΠΏΡΡΡΠΈΠΌ, Π½Π°Π΄ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΎΡΠΌΠ°Ρ MPEG-DASH, ΠΏΠΎΡΡΠΎΠΌΡ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ mp4 (ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ fmp4) Π²ΠΌΠ΅ΡΡΠΎ MPEG-TS ΠΈΠ»ΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ MPEG-4.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΡΡΠΎ Π»Π΅Π³ΠΊΠΎ:
ΠΠΎΡΡΠΈ ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΡΠΎ ΠΈ Π² libav-Π²Π΅ΡΡΠΈΠΈ, ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ ΠΎΠΏΡΠΈΠΈ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²:
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ mp4-ΡΠ°ΠΉΠ»:
Π§ΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΡΡ Π²ΡΡ ΠΏΠΎ-ΡΠ΅ΡΡΠ½ΠΎΠΌΡ, ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΡ-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ gpac/mp4box.js ΠΈΠ»ΠΈ ΡΠ°ΠΉΡ http://mp4parser.com/, Π΄Π°Π±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡ β ΡΠ½Π°ΡΠ°Π»Π° Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ mp4.
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ, ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄ΠΈΠ½ Π½Π΅Π΄Π΅Π»ΠΈΠΌΡΠΉ Π±Π»ΠΎΠΊ mdat β ΡΡΠΎ ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π²ΠΈΠ΄Π΅ΠΎ ΠΈ Π°ΡΠ΄ΠΈΠΎ ΠΊΠ°Π΄ΡΡ. Π’Π΅ΠΏΠ΅ΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ mp4, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°ΡΡΠΈΡΡΠ΅Ρ Π±Π»ΠΎΠΊΠΈ mdat:
ΠΠ»Π°Π²Π° 3 β ΡΡΠ°Π½ΡΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅β
TLDR; ΠΏΠΎΠΊΠ°ΠΆΠΈ ΠΌΠ½Π΅ ΠΊΠΎΠ΄ ΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅:
ΠΡ ΠΏΡΠΎΠΏΡΡΡΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ, Π½ΠΎ Π½Π΅ Π²ΠΎΠ»Π½ΡΠΉΡΠ΅ΡΡ: ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π° github.
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡΠΈΡΠ½Π½ΠΉ ΡΡΠ°Π½ΡΠΊΠΎΠ΄Π΅Ρ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° C, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ· H264 Π² H265 Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ FFmpeg libav, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ libavcodec, libavformat ΠΈ libavutil.
AVFormatContext β ΡΡΠΎ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠΎΡΠΌΠ°ΡΠ° ΠΌΠ΅Π΄ΠΈΠ°-ΡΠ°ΠΉΠ»Π°, Ρ.Π΅. Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° (MKV, MP4, Webm, TS)
AVStream ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: Π°ΡΠ΄ΠΈΠΎ, Π²ΠΈΠ΄Π΅ΠΎ, ΡΡΠ±ΡΠΈΡΡΡ, ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅)
AVPacket β ΡΡΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΡΠΆΠ°ΡΡΡ
Π΄Π°Π½Π½ΡΡ
, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ
ΠΈΠ· AVStream, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ AVCodec (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: av1, h264, vp9, hevc), Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠΈΡ
Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ AVFrame.
Π’ΡΠ°Π½ΡΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅β
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, Π·Π°ΡΠ΅ΠΌ Π·Π°Π³ΡΡΠ·ΠΈΠΌ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ».
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΡΡΡΠΎΠΈΠΌ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ. AVFormatContext ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡ Π½Π°ΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ AVStream, ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΡ AVCodec ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ AVCodecContext. Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄Π΅ΠΊ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΏΡΠΎΡΠ΅ΡΡΡ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
AVCodecContext ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠ°, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ , ΡΠ°ΡΡΠΎΡΠ° ΠΊΠ°Π΄ΡΠΎΠ², ΡΠ°ΡΡΠΎΡΠ° Π΄ΠΈΡΠΊΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠ°Π½Π°Π»Ρ, Π²ΡΡΠΎΡΠ° ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅.
Π’Π°ΠΊΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ΅Π΄ΠΈΠ°-ΡΠ°ΠΉΠ» Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ. Π‘Π½Π°ΡΠ°Π»Π° Π²ΡΠ΄Π΅Π»ΠΈΠΌ ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ AVFormatContext. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π² Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅. Π§ΡΠΎΠ±Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠ΄Π΅ΠΊΠ° ΠΈΠ· Π΄Π΅ΠΊΠΎΠ΄Π΅ΡΠ°.
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ»Π°Π³ AV_CODEC_FLAG_GLOBAL_HEADER, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΡΠΈΠΊΡ, ΡΡΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ» Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ:
ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ AVPacket ΠΎΡ Π΄Π΅ΠΊΠΎΠ΄Π΅ΡΠ°, ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΡΠ΅ΠΌ ΠΌΠ΅ΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π² Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ». ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ av_interleaved_write_frame ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Β«write frameΒ», ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ. ΠΠ°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, Π·Π°ΠΏΠΈΡΡΠ²Π°Ρ ΡΡΠ΅ΠΉΠ»Π΅Ρ ΠΏΠΎΡΠΎΠΊΠ° Π² ΡΠ°ΠΉΠ».
Π’ΡΠ°Π½ΡΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅β
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ Π±ΡΠ»Π° ΠΏΡΠΎΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, ΡΠ΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄Π΅ΠΎ Ρ h264 Π½Π° h265.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ, Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ΅Π΄ΠΈΠ°ΡΠ°ΠΉΠ», Π½Π°ΡΡΡΠΎΠΈΠΌ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΡΠΈΠΊ.
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΡΠΈΠΊΠ» Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΡΠ°Π½ΡΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡΠΎΠΊΠ°:
ΠΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π»ΠΈ ΠΏΠΎΡΠΎΠΊ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠ° ΠΈΠ· h264 Π² h265. ΠΠ°ΠΊ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ, Π²Π΅ΡΡΠΈΡ ΠΌΠ΅Π΄ΠΈΠ°-ΡΠ°ΠΉΠ»Π° h265 ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ h264, ΠΏΡΠΈ ΡΡΠΎΠΌ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΈΡΠΎΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
ΠΠΎΠ»ΠΎΠΆΠ° ΡΡΠΊΡ Π½Π° ΡΠ΅ΡΠ΄ΡΠ΅, ΠΏΡΠΈΠ·Π½Π°ΡΡΡ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»ΠΎΠΆΠ½Π΅Π΅, ΡΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ»ΠΎΡΡ Π² Π½Π°ΡΠ°Π»Π΅. ΠΡΠΈΡΠ»ΠΎΡΡ ΠΊΠΎΠ²ΡΡΡΡΡΡΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ FFmpeg ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ°Π²Π΅ΡΠ½ΠΎΠ΅, ΡΡΠΎ-ΡΠΎ Π³Π΄Π΅-ΡΠΎ ΡΠΏΡΡΡΠΈΠ», ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ force-cfr Π΄Π»Ρ h264, ΠΈ Π²ΡΡ Π΅ΡΡ Π²ΡΡΠΊΠ°ΠΊΠΈΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠΈΠΏ ΠΊΠ°Π΄ΡΠ° (5) ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π½Π° ΡΠΈΠΏ ΠΊΠ°Π΄ΡΠ° (3).