Jawaban:
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.
ffmpeg -i input.avi <options> -f matroska - | ffplay -
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
dan avplay
sebagai gantinya; sintaksnya identik. Ada semacam ffmpeg di sana, tapi itu lumpuh karena desain.
pipe:: Invalid data found when processing inputK
pada Power Shell, tetapi bekerja dengan baik di command prompt
ffmpeg 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:
ffmpeg -i input.flv pipe:1 | ffplay -i -
man ffplay
, saya tidak bisa melihat ffplay
mendukung -i
saklar - apakah itu mungkin ffmpeg
saja?
pipe:1
vs -
? -
bekerja pada ffmpeg 2.8.6.
sepertinya pipa normal berfungsi (setidaknya di windows):
ffmpeg -i sintel.mpg -pix_fmt yuv420p -f rawvideo - | ffplay -f rawvideo -pix_fmt yuv420p -s 720x480 -
belum mencobanya dengan input / output yang lebih rumit ...
ffmpeg -f dshow -i video=screen-capture-recorder -pix_fmt yuv420p -f mpegts - | ffplay -analyzeduration 10 -f mpegts -
adalah startup yang sedikit lebih cepat
Unable to find a suitable output format for 'pipe:'
- saya perlu menentukan codec dengan -f
.