왜 ffplay를 사용하여 대시 스트림을 가져올 수 없나요?

왜 ffplay를 사용하여 대시 스트림을 가져올 수 없나요?

nginx.conf는 간단합니다.

sudo cat /usr/local/nginx/conf/nginx.conf    
worker_processes  1; 
error_log logs/error.log error;
events {
    worker_connections  4096;
}

rtmp { 
    server { 
        listen 1935; 
        application live { 
            live on; 
            dash on; 
            dash_path /mnt/dash; 
            dash_fragment 15s; 
        } 
    } 
} 
 
http { 
    server { 
        listen 80; 
        location /dash { 
            root /mnt; 
        } 
    }
 
    types {
        text/html html;
        application/dash+xml mpd;
    } 
}

웹캠을 127.0.0.1로 푸시했습니다.

output="rtmp://127.0.0.1:1935/live/sample"
ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -c:v libx264 -f flv $output

rtmp 프로토콜을 사용하여 가져오기:

ffplay  rtmp://127.0.0.1:1935/live/sample

성공!

대시 프로토콜을 사용하여 끌어옵니다.

ffplay  http://127.0.0.1/dash/sample.mpd

오류가 발생했습니다:

http://127.0.0.1/dash/sample.mpd: Invalid data found when processing input

어떻게 고치나요?
내 운영체제: debian9.

ffplay -formats |& grep "DASH Muxer"
  E dash            DASH Muxer

답변1

DASH Demusing을 활성화하여 다시 컴파일 해야 합니다 ffplay. DASH 역다중화를 활성화한 운영 체제에 대해 이미 미리 만들어진 패키지가 있을 수 있지만, 확실하지 않고 사용 중인 OS를 지정하지 않았기 때문에 ffplayDASH 역다중화를 활성화하여 수행하는 방법을 설명하겠습니다. 함수를 재사용할 때 수동으로 빌드하세요.

ffmpeg 저장소를 복제합니다.

git clone --depth 1 https://git.ffmpeg.org/ffmpeg.git ffmpeg

ffmpeg 디렉터리로 전환합니다.

cd ffmpeg

필수 매개변수를 사용하여 ./configure 스크립트를 실행합니다.

./configure --prefix=$HOME/ffmpeg-install --enable-demuxer=dash --enable-libxml2

다음을 위해 ffplay를 빌드하고 설치합니다 $HOME/ffmpeg-install.

make -j$(nproc) install

내 컴퓨터에서는 4분 밖에 걸리지 않았습니다. ffmpeg의 새 빌드에 DASH Demushing이 지원되는지 확인하세요.

$ ~/ffmpeg-install/bin/ffplay -formats |& grep "DASH Muxer"
 DE dash            DASH Muxer

재고 ffplay 대신 이것을 사용하십시오.

~/ffmpeg-install/bin/ffplay http://127.0.0.1/dash/sample.mpd

인용하다:이 답변

관련 정보