0
我按照说明here试图通过DASH进行WebM直播。我的输入来自Axis相机,并且以h264编码方式进行流式传输。我正在使用节点启动ffmpeg进程。我能够创建.hdr文件和.chk文件。甚至创建的.MPD文件,但它是空的,我得到一个错误说:WebM直播通过DASH
Could not write header for output file #0 (incorrect codec parameters ?): Operation not permittedStream mapping: Stream #0:0 -> #0:0 (copy)
这里是我的所有代码:
var express = require('express');
spawn = require('child_process').spawn;
var app = express();
app.use(express.static(__dirname + '/public'));
app.listen(8080);
console.log("Running on Port 8080");
var ffmpeg1 = spawn('ffmpeg', [
'-y',
//video
'-i', 'rtsp://admin:[email protected]:554/axis-media/media.amp?videocodec=h264&resolution=1280x720',
'-map', '0:0',
'-pix_fmt', 'yuv420p',
'-color_range', '2',
'-c:v', 'libvpx-vp9',
'-s', '1280x720',
'-keyint_min', '25',
'-g', '25',
// //VP9_LIVE_PARAMS
'-speed', '6',
'-tile-columns', '4',
'-frame-parallel', '1',
'-threads', '8',
'-static-thresh', '0',
'-max-intra-rate', '300',
'-deadline', 'realtime',
'-lag-in-frames', '0',
'-error-resilient', '1',
'-f', 'webm_chunk',
'-header', 'public/glass_360.hdr',
'-chunk_start_index', '1',
'public/glass_360_%d.chk',
]);
setTimeout(()=> {
var ffmpeg2 = spawn('ffmpeg', [
'-y',
'-f', 'webm_dash_manifest',
'-live', '1',
'-i', 'public/glass_360.hdr',
'-c', 'copy',
'-map', '0',
'-r', '25',
'-framerate', '25',
'-f', 'webm_dash_manifest',
'-live', '1',
'-adaptation_sets', '"id=0,streams=0"',
'-chunk_start_index', '1',
'-chunk_duration_ms', '2000',
'-time_shift_buffer_depth', '7200',
'-minimum_update_period', '7200',
'public/glass_live_manifest.mpd'
]);
ffmpeg2.stdout.on('data',
function (data) {
console.log('ff2std: ' + data);
}
);
ffmpeg2.stderr.on('data',
function (data) {
console.log('ff2err: ' + data);
}
);
}, 5000);
ffmpeg1.stdout.on('data',
function (data) {
console.log('ff1std: ' + data);
}
);
ffmpeg1.stderr.on('data',
function (data) {
console.log('ff1err: ' + data);
}
);
这是我所有的输出:
Running on Port 8080
ff1err: ffmpeg version 3.2.4 Copyright (c) 2000-2017 the FFmpeg developers
built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.2.4 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-frei0r --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-libopenjpeg --disable-decoder=jpeg2000 --extra-cflags=-I/usr/local/Cellar/openjpeg/2.1.2/include/openjpeg-2.1 --enable-nonfree --enable-vda
ff1err: libavutil 55. 34.101/55. 34.101
libavcodec 57. 64.101/57. 64.101
libavformat 57. 56.101/57. 56.101
libavdevice 57. 1.100/57. 1.100
libavfilter 6. 65.100/6. 65.100
libavresample 3. 1. 0/3. 1. 0
libswscale 4. 2.100/4. 2.100
libswresample 2. 3.100/2. 3.100
libpostproc 54. 1.100/54. 1.100
ff1err: Input #0, rtsp, from 'rtsp://admin:[email protected]:554/axis-media/media.amp?videocodec=h264&resolution=1280x720':
Metadata:
title : Session streamed with GStreamer
comment : rtsp-server
Duration: N/A, start: 0.033344
ff1err: , bitrate: N/A
Stream #0:0: Video: h264 (Main), yuvj420p(pc, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], 30 fps, 30 tbr, 90k tbn, 180k tbc
ff1err: [swscaler @ 0x7f8df281bc00] deprecated pixel format used, make sure you did set range correctly
ff1err: [libvpx-vp9 @ 0x7f8df2800600] v1.6.1
ff1err: Output #0, webm_chunk, to 'public/glass_360_%d.chk':
Metadata:
title : Session streamed with GStreamer
comment : rtsp-server
encoder : Lavf57.56.101
ff1err: Stream #0:0: Video: vp9 (libvpx-vp9), yuv420p(pc), 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 200 kb/s, 25 fps, 1k tbn, 25 tbc
Metadata:
encoder : Lavc57.64.101 libvpx-vp9
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> vp9 (libvpx-vp9))
Press [q] to stop, [?] for help
ff1err: frame= 10 fps=0.0 q=0.0 size=N/A time=00:00:00.36 bitrate=N/A speed=0.71x
ff1err: frame= 25 fps= 25 q=0.0 size=N/A time=00:00:00.96 bitrate=N/A speed=0.946x
ff1err: frame= 40 fps= 26 q=0.0 size=N/A time=00:00:01.56 bitrate=N/A speed=1.03x
ff1err: frame= 55 fps= 27 q=0.0 size=N/A time=00:00:02.16 bitrate=N/A speed=1.07x
ff1err: frame= 70 fps= 28 q=0.0 size=N/A time=00:00:02.76 bitrate=N/A speed=1.09x
ff1err: frame= 85 fps= 28 q=0.0 size=N/A time=00:00:03.36 bitrate=N/A speed=1.11x
ff2err: ffmpeg version 3.2.4 Copyright (c) 2000-2017 the FFmpeg developers
built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.2.4 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-frei0r --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-libopenjpeg --disable-decoder=jpeg2000 --extra-cflags=-I/usr/local/Cellar/openjpeg/2.1.2/include/openjpeg-2.1 --enable-nonfree --enable-vda
ff2err: libavutil 55. 34.101/55. 34.101
libavcodec 57. 64.101/57. 64.101
libavformat 57. 56.101/57. 56.101
libavdevice 57. 1.100/57. 1.100
libavfilter 6. 65.100/6. 65.100
libavresample 3. 1. 0/3. 1. 0
libswscale 4. 2.100/4. 2.100
libswresample 2. 3.100/2. 3.100
libpostproc 54. 1.100/54. 1.100
ff2err: [webm_dash_manifest @ 0x7fbc5b80b400] Could not find codec parameters for stream 0 (Video: vp9, none, 1280x720): unspecified pixel format
Consider increasing the value for the 'analyzeduration' and 'probesize' options
ff2err: Input #0, webm_dash_manifest, from 'public/glass_360.hdr':
Metadata:
title : Session streamed with GStreamer
encoder : Lavf57.56.101
Duration: N/A, bitrate: N/A
Stream #0:0: Video: vp9, none, 1280x720
ff2err: , SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
Metadata:
webm_dash_manifest_file_name: glass_360.hdr
webm_dash_manifest_track_number: 1
ff2err: Could not write header for output file #0 (incorrect codec parameters ?): Operation not permittedStream mapping:
Stream #0:0 -> #0:0 (copy)
ff2err: Last message repeated 1 times
ff1err: frame= 101 fps= 29 q=0.0 size=N/A time=00:00:04.00 bitrate=N/A speed=1.13x
ff1err: frame= 116 fps= 29 q=0.0 size=N/A time=00:00:04.60 bitrate=N/A speed=1.14x
ff1err: frame= 131 fps= 29 q=0.0 size=N/A time=00:00:05.20 bitrate=N/A speed=1.15x
ff1err: frame= 146 fps= 29 q=0.0 size=N/A time=00:00:05.80 bitrate=N/A speed=1.15x
ff1err: frame= 161 fps= 29 q=0.0 size=N/A time=00:00:06.40 bitrate=N/A speed=1.15x
ff1err: frame= 177 fps= 29 q=0.0 size=N/A time=00:00:07.04 bitrate=N/A speed=1.16x
ff1err: frame= 192 fps= 29 q=0.0 size=N/A time=00:00:07.64 bitrate=N/A speed=1.16x
ff1err: frame= 207 fps= 29 q=0.0 size=N/A time=00:00:08.24 bitrate=N/A speed=1.16x
ff1err: frame= 222 fps= 29 q=0.0 size=N/A time=00:00:08.84 bitrate=N/A speed=1.17x
ff1err: frame= 237 fps= 29 q=0.0 size=N/A time=00:00:09.44 bitrate=N/A speed=1.17x
ff1err: frame= 252 fps= 29 q=0.0 size=N/A time=00:00:10.04 bitrate=N/A speed=1.17x
为什么ffmpeg创建一个空的.mpd文件?