Apa artinya rincian aliran output video dari ffmpeg?

10

Ketika Anda menjalankan ffmpeg -idengan file video sebagai parameter input, ffmpeg mengembalikan beberapa detail jenis aliran, seperti codec, bitrate, dan resolusi. Apa arti data lainnya - "tbr", "tbn" dan "tbc"? Dari contoh saya di bawah ini, Anda dapat melihat bahwa mereka sangat bervariasi.

Stream #0.0(und): Video: h264, yuv420p, 1280x720, 25 tbr, 25 tbn, 50 tbc

Stream #0.0(eng): Video: h264, yuv420p, 640x480, 22050 tbr, 22050 tbn, 44100 tbc

Stream #0.1: Video: wmv3, yuv420p, 1280x720, 4000 kb/s, 29.97 tbr, 1k tbn, 1k tbc

Pertanyaan sekunder: mengapa bitrate tidak selalu ditampilkan?

Nilzor
sumber

Jawaban:

6

Apa yang Anda lihat adalah kebalikan dari basis waktu yang digunakan dalam FFmpeg dan en / decoder. Saya tidak dapat menjelaskannya dengan lebih baik, oleh karena itu hanya mengutip milis FFmpeg :

tbn adalah basis waktu di AVStream yang berasal dari wadah, saya pikir. Ini digunakan untuk semua perangko waktu AVStream.

tbc adalah basis waktu dalam AVCodecContext untuk codec yang digunakan untuk aliran tertentu. Ini digunakan untuk semua AVCodecContext dan cap waktu terkait.

tbr ditebak dari aliran video dan merupakan nilai yang ingin dilihat pengguna ketika mereka mencari frame rate video, kecuali kadang-kadang dua kali lipat dari yang diharapkan karena laju field versus frame rate.

Pada akhirnya, Anda ingin mengambil tbr sebagai nilai yang sebagian besar disebut sebagai "framerate".

Bitrate tidak selalu ditampilkan karena stream video mungkin berisi konten bitrate variabel - dalam hal ini, Anda tidak bisa benar-benar memperkirakan bitrate. Untuk aliran bitrate konstan, bitrate biasanya ditampilkan. Ada beberapa kasus di mana bitrate variabel digunakan dan FFmpeg menunjukkan rata-rata - setidaknya dengan video h.264 ini kadang-kadang berfungsi.

Video: h264, yuv420p, 640x480, 22050 tbr, 22050 tbn, 44100 tbc sepertinya lebih seperti aliran audio, jelas.

slhck
sumber