为什么DASH视频片段不能重现,也不能用ffmpeg读取?

问题描述 投票:1回答:1

我正在通过FFmpeg使用DASH进行视频直播。一切都很好,片段被生成,还有mpd文件,但我想有可重现的独立片段。视频播放器无法打开这些片段。我想这是因为它们是依赖于mpd文件的。我的问题是:这些片段能否以一种可重现的方式生成?我不知道它是否有东西做的帧,我P B或只是方式破折号切割视频信息,在一种方式,它只保存 "时间线 "的mpd上... ...

我的目的不仅是能够复制他们sepparately,但我需要插入信息在视频的元数据标签,而ffmpeg不会让我读取这些实时流产生的片段。

FFmpeg的输入信息命令是这样的。

输入:

ffmpeg -i /path/video0-0-1.mp4

输入: 输出:

ffmpeg version N-97777-g3b5a36c56d Copyright (c) 2000-2020 the FFmpeg developers
  built with Apple clang version 11.0.3 (clang-1103.0.32.59)
  configuration: --enable-gpl --enable-libx264
  libavutil      56. 45.100 / 56. 45.100
  libavcodec     58. 84.100 / 58. 84.100
  libavformat    58. 43.100 / 58. 43.100
  libavdevice    58.  9.103 / 58.  9.103
  libavfilter     7. 81.100 /  7. 81.100
  libswscale      5.  6.101 /  5.  6.101
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fb324009400] could not find corresponding track id 1
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fb324009400] could not find corresponding trex (id 1)
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fb324009400] could not find corresponding track id 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fb324009400] trun track id unknown, no tfhd was found
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fb324009400] error reading header
/path/video0-0-1.mp4: Invalid data found when processing input

我使用fluent-ffmpeg在JS上执行这段FFmpeg代码来生成片段。

var ffmpeg = require('fluent-ffmpeg');

var grabacion = new ffmpeg();

grabacion.addInput('0')
.inputOptions(['-y -nostdin', '-f avfoundation', '-video_size 1280x720', '-pix_fmt nv12', '-framerate 30'])
.outputOptions(['-vcodec libx264', '-keyint_min 0', '-g 100', '-map 0:v', '-b:v 1000k', '-f dash',
 '-use_template 1', '-use_timeline 0', '-init_seg_name video0-$RepresentationID$-$Number$.mp4',
 '-media_seg_name video0-$RepresentationID$-$Number$.mp4', '-remove_at_exit 0', '-window_size 20', '-seg_duration 4'])
.output('/path/path/path/video.mpd')
.run();

所以,最终的目的是为了能够插入一个这样的标签。

ffmpeg -i video0-0-0.mp4 -movflags use_metadata_tags -metadata sample_tag=whateveryouwanttoadd video0-0-0-tagged.mp4

有什么方法可以做到吗?先谢谢你

ffmpeg streaming mp4 live-streaming mpeg-dash
1个回答
0
投票

通常DASH中的第一个片段是包含轨道信息的初始化片段。所有后续的段都包含媒体样本。因此,如果你想解码一个任意的段,你必须在它前面加上初始化段。

cat /path/video0-0-init.mp4 /path/video0-0-1.mp4 > /path/video_can_be_decoded.mp4
ffmpeg -i /path/video_can_be_decoded.mp4
© www.soinside.com 2019 - 2024. All rights reserved.