Bagaimana saya bisa mem-pipe output dari ffmpeg ke ffplay?
Saat ini saya menggunakan solusi di bash:
mkfifo spam
(ffplay spam 2> /dev/null &) ; capture /dev/stdout | ffmpeg -i - spam
Saya tidak tahu apakah itu ffmpeg
yang tidak dapat menampilkan datanya ke stdout, atau ffplay
yang tidak dapat mengambil input dari stdin.
Jika itu ffmpeg
yang tidak bisa menampilkan data ke stdout:
capture /dev/stdout | ffmpeg -i - >(ffplay 2> /dev/null)
(Anda perlu menambahkan -
argumen ffplay
sehingga dibutuhkan input dari stdin.)
Jika itu ffplay
tidak dapat mengambil input dari stdin:
ffplay <(capture /dev/stdout | ffmpeg -i -) 2> /dev/null
Untuk informasi lebih lanjut tentang <(command)
dan >(command)
konstruksi, lihat bagian Pergantian Proses dari manual bash.
akan bekerja; Anda perlu mengatur format wadah untuk output. Ini biasanya diatur dengan ffmpeg melihat ekstensi yang Anda berikan output, tetapi di sini Anda harus mengaturnya secara manual
-f
. Saya merekomendasikan matroska (MKV) karena dapat berisi hampir semua video, jadi apa pun yang Anda transcoding harus bekerja dengan baik.Perhatikan bahwa jika Anda menggunakan Ubuntu 12.04, ffmpeg telah digantikan oleh garpu libav, dan Anda harus menggunakan
avconv
danavplay
sebagai gantinya; sintaksnya identik. Ada semacam ffmpeg di sana, tapi itu lumpuh karena desain.sumber
pipe:: Invalid data found when processing inputK
pada Power Shell, tetapi bekerja dengan baik di command promptffmpeg mendukung operasi perpipaan. Lihat bagian dokumentasi itu di sini .
Saya tidak tahu bagaimana ffplay bekerja, tetapi untuk mem-pipe output dari ffmpeg ke output standar, Anda dapat menambahkan perintah pipe ke akhir perintah ffmpeg. Contoh:
sumber
man ffplay
, saya tidak bisa melihatffplay
mendukung-i
saklar - apakah itu mungkinffmpeg
saja?pipe:1
vs-
?-
bekerja pada ffmpeg 2.8.6.sepertinya pipa normal berfungsi (setidaknya di windows):
belum mencobanya dengan input / output yang lebih rumit ...
adalah startup yang sedikit lebih cepat
sumber
Unable to find a suitable output format for 'pipe:'
- saya perlu menentukan codec dengan-f
.