Saya perlu tahu setelah berapa banyak frame video bagian audio dimulai untuk file mpeg. Jadi misalnya, pertama ada 5 frame video dan setelah itu ada 10 sampel audio. Ini akan diulang untuk seluruh file.
Extra: Apakah ada cara untuk mengatur informasi ini di ffmpeg?
Sunting: informasi lebih lanjut
Saya memiliki aliran video dalam format RGBA. Frame ini ditulis ke encoder.
Saya juga memiliki aliran audio dalam format s16le yang ingin saya beri makan ke encoder.
Jika saya menggunakan aliran video dalam format RGBA dan menambahkan file .wav biasa ke dalamnya sebagai audio semuanya berfungsi dengan baik. Namun, saya perlu menambahkan aliran audio saya sendiri. Ketika saya mencoba melakukan ini, saya tidak mendapatkan audio dan videonya rusak. Ini meluncur dari kanan ke kiri dan dari atas ke bawah. Bagian bingkai yang jatuh ditampilkan di sisi lain (misalnya, bingkai 20px ke kanan, 20px yang jatuh diberikan di sisi kiri).
Saya pikir saya harus menemukan urutan mana yang harus saya tulis stream audio saya ke encoder. Bagian ini dari perintah konsol mengatur audio saya:
-f s16le -ac 1 -i -
Ketika saya mencobanya dengan file .wav biasa saya baru saja menulis
-i file_name.wav
Saya harap ini membuatnya sedikit lebih jelas.
EDIT LEBIH LANJUT:
Saya saat ini menulis 18 frame ke encoder dan setelah itu saya menulis sampel audio 18 frame ke encoder. Ini berulang. Jika saya pergi ke frekuensi yang lebih rendah dari ini saya mendapatkan flash hijau di video
PERINTAH FFMPEG:
ffmpeg -r 24 -pix_fmt rgba -s 1280x720 -f rawvideo -y -i - -f s16le -ac 1 -i - -vf vflip -vcodec mpeg1video -qscale 4 -bufsize 500KB -maxrate 5000KB OUTPUT_FILE
sumber
fwrite()
untuk menulis audio dan videoJawaban:
Anda sedang menulis data audio dan video ke aliran input yang sama. FFMPEG perlu memisahkan kedua aliran sehingga dapat melipatgandakannya dengan benar. Saya akan melihat menggunakan pipa bernama untuk melewati dua aliran terpisah ke FFMPEG. Sesuatu seperti ini:
sumber
Saya tidak menganggap ada aturan umum untuk ini. Ini bisa seperti V0 A0 V1 A1 V2 A2 atau V0 V1 A01 V2 V3 A23. Persisnya ini harus bergantung pada kompresi dan kualitas video dan audio. Satu-satunya aturan aktual adalah bahwa aliran video dari frame (V0 V1, dll) dan aliran audio blok yang sesuai (A0, A1, dll) harus bilangan bulat.
sumber