Sử dụng v4l2loopback với mplayer .
- Tải về nó
- biên dịch nó (
make
và su -c 'make install'
),
- tải mô-đun với
su -c 'modprobe v4l2loopback'
,
sau đó thay đổi một dòng trong tệp examples/yuv4mpeg_to_v4l2.c
của thư mục nguồn v4l2loopback từ
v.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420;
đến
v.fmt.pix.pixelformat = V4L2_PIX_FMT_YVU420;
và làm make
trong thư mục này.
Sau đó chạy nó từ examples
thư mục như thế này:
mkfifo /tmp/pipe # only needed once, as long as you do not delete the file /tmp/pipe
./yuv4mpeg_to_v4l2 < /tmp/pipe &
mplayer movie.mp4 -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe
nơi bạn thay thế movie.mp4
bằng tên của tệp video của bạn. Và thay thế /dev/video0
bằng thiết bị loopback của bạn.
MPlayer có thể phát bất kỳ luồng web nào, tất cả các loại tệp video, thậm chí từ stdin! Tôi vừa thử nó với một tập tin từ http://www.tagesschau.de là một trang web tin tức của Đức.
TS=$(wget "http://www.tagesschau.de/multimedia/video/" -q -O - | grep --regexp='http.*\.webm"' | sed -e 's%.*href="%%' -e 's%\.webm".*%\.webm%')
./yuv4mpeg_to_v4l2 < /tmp/pipe &
mplayer $TS -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe
Thay vì $ TS, bạn có thể đặt một -
(viết tắt của stdin). Và trước mplayer, lệnh ffmpeg của bạn chuyển hướng đầu ra của nó thành thiết bị xuất chuẩn. Vì vậy, một cái gì đó như:
./yuv4mpeg_to_v4l2 < /tmp/pipe &
fmpeg -someOptions ... -o - | mplayer - -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe
Không kiểm tra cái cuối cùng, vì bạn không cho biết lệnh ffmpeg của bạn trông như thế nào.