Yo canalizo los datos de un proceso a otro, pero esta secuencia necesita ser filtrada.
El primer proceso es ffmpeg
y el segundo es ffplay
. ffmpeg
proporciona marco de video en bruto para fplay
para renderizar, sin embargo agrega 32 bytes de encabezado a cada cuadro . Para el marco de 720p, esto significa que cada 1280x720x4 bytes se anexa con 32 bytes.
Esto afecta ffplay
Reproducción y necesito tener un poco de filtrado de este flujo de bytes que caerá este encabezado para cada fotograma. Lo más probable, herramientas como od
o xxd
Debería utilizarse, pero tengo dificultades para averiguar cómo exactamente.
ffmpeg -f avfoundation -pixel_format 0rgb -framerate 25 -video_size 1280x720 -i "0" -map 0:v -c copy -f rawvideo -vframes 1 - | perl -e 'print substr $buff, 1 while sysread *STDIN, $buff, 3686432' > /tmp/frame.0rgb
. Contar byteswc -c /tmp.frame.0rgb
echo {a..z} | sed 's/ //g'
y sale correctamentecdefgjklmnqrstuxyz
para 5 + 2. Revisa tus números.dd if=/dev/urandom bs=3686432 count=1 > /tmp/random
lo que da 3686432 bytes aleatorios (wc -c /tmp/random
) y entoncescat /tmp/random | perl -e 'print substr $buff, 32 while sysread *STDIN, $buff, 3686432' > /tmp/truncated
- Se espera que dé 3686400 pero no lo es - da 3684256 bytes en su lugar (wc -c /tmp/truncated
).This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level (with 2 registered patches, see perl -V for more detail)