FFMPEG ghép stutter


0

EDIT: Đột nhiên, với cùng một tập lệnh trên cùng một phần cứng, vấn đề không còn nữa. Tôi vẫn tò mò về nguyên nhân, nhưng cho đến khi tôi có thể tái tạo nó một lần nữa, có vài lựa chọn cho chẩn đoán. Lời xin lỗi của tôi.

Tôi đang sử dụng FFMPEG để nhận nguồn cấp dữ liệu trực tiếp từ một số webcam. Khi các nguồn cấp dữ liệu độc lập (nói cách khác, mỗi v4l2đầu vào chạy qua đường ống riêng của nó bên trong đầu ra filter_complexcủa chính nó xv), mọi thứ đều hoạt động rất tốt: có độ trễ nửa giây, tôi có thể sống và tất cả các video đều chạy trơn tru .

Tôi muốn có các video này được ghép lại với nhau, cả để xem trực tiếp và cho bản sao nó lưu vào đĩa. Nhưng khi tôi thử điều này, với một loạt overlays hoặc với hstack+ vstack, video bắt đầu nói lắp: một nguồn cấp dữ liệu sẽ chạy trơn tru trong vài giây trong khi các nguồn cấp khác vẫn chạy, một giây khác sẽ chạy trong vài giây trong khi lần đầu tiên đóng băng , v.v. Video vẫn đang ở thời gian thực, vì vậy nó không khủng khiếp cho mục đích bảo mật, nhưng nó khiến việc di chuyển trở nên rất khó khăn.

Có bất cứ điều gì tôi có thể làm để khắc phục điều này, hoặc ít nhất là giảm bớt nói lắp? Tôi sẽ ổn với tốc độ khung hình thấp hơn, miễn là nó phù hợp.

Kịch bản hoạt động:

ffmpeg \
    -f lavfi -thread_queue_size 1024 -i color=s=${size}:c=000000 \
    -f v4l2 -thread_queue_size 1024 -video_size $size -i $video_ne \
    -f v4l2 -thread_queue_size 1024 -video_size $size -i $video_sw \
    -f v4l2 -thread_queue_size 1024 -video_size $size -i $video_se \
    -f alsa -thread_queue_size 1024 -i $audio1 \
    -f alsa -thread_queue_size 1024 -i $audio2 \
    -filter_complex "
        [0:v] fifo, setpts=PTS-STARTPTS [v0];
        [1:v] fifo, setpts=PTS-STARTPTS [v1];
        [2:v] fifo, setpts=PTS-STARTPTS [v2];
        [3:v] fifo, setpts=PTS-STARTPTS [v3]" \
    -map "[v0]" -f xv - \
    -map "[v1]" -f xv - \
    -map "[v2]" -f xv - \
    -map "[v3]" -f xv - 

Kịch bản không:

ffmpeg \
    -f lavfi -thread_queue_size 1024 -i color=s=${size}:c=000000 \
    -f v4l2 -thread_queue_size 1024 -video_size $size -i $video_ne \
    -f v4l2 -thread_queue_size 1024 -video_size $size -i $video_sw \
    -f v4l2 -thread_queue_size 1024 -video_size $size -i $video_se \
    -f alsa -thread_queue_size 1024 -i $audio1 \
    -f alsa -thread_queue_size 1024 -i $audio2 \
    -filter_complex "
        [0:v] fifo, setpts=PTS-STARTPTS [v0];
        [1:v] fifo, setpts=PTS-STARTPTS [v1];
        [2:v] fifo, setpts=PTS-STARTPTS [v2];
        [3:v] fifo, setpts=PTS-STARTPTS [v3];

        [v0][v1] hstack [tmp1];
        [v2][v3] hstack [tmp2];
        [tmp1][tmp2] vstack [vout]"
    -map "[vout]" -f sdl2 -

(Hiện tại tôi chỉ sử dụng ba video vì tôi có bốn lõi CPU.)


Số liệu thống kê CPU của bạn nói gì?
Eugen Rieck

Lệnh bạn đang sử dụng là gì?
Gyan

... và kết quả đầu ra giao diện điều khiển.
llogan

@Mulvya Kịch bản được đăng. Bảng điều khiển đầu ra và số liệu thống kê CPU sắp tới.
Draconis

Trong lệnh khảm, sử dụng các bộ lọc fifo sau khi thiết lập. Đó không phải là bộ lọc sẽ chạy chậm.
Gyan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.