我正在尝试将 dash 流推送到 youtube,而不是使用 rtmp。我使用 API 创建了一个具有摄取类型 dash 的流,并将其绑定到直播。
然后我使用 FFmpeg 创建实时 dash 流,并尝试将其放入 dash_upload API,但我总是收到 400 消息,并显示消息“您的客户端发出了格式错误或非法的请求。MPD 无法解析。这就是我们所知道的。 。”我什至尝试了一些我在网上找到的其他 mpd 文件(全部通过了 MPEG-DASH MPD 验证器)。
有没有办法查看更详细的日志或任何显示错误的内容,或者是否有人有一些有效的 mpd 示例?
这基本上是我尝试过的:
放置 https://upload.youtube.com/dash_upload?cid=jsjb-sb9q-4wqj-XXXX©=0&file=dash.mpd
<?xml version="1.0" encoding="utf-8"?>
<MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:mpeg:dash:schema:mpd:2011"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd"
profiles="urn:mpeg:dash:profile:isoff-live:2011"
type="dynamic"
minimumUpdatePeriod="PT6S"
suggestedPresentationDelay="PT6S"
availabilityStartTime="2018-10-10T20:02:08Z"
publishTime="2018-10-10T20:02:33Z"
minBufferTime="PT12.7S">
<ProgramInformation>
</ProgramInformation>
<Period id="0" start="PT0.0S">
<AdaptationSet id="0" contentType="video" segmentAlignment="true" bitstreamSwitching="true">
<Representation id="0" mimeType="video/mp4" codecs="avc1.42c028" bandwidth="3002151" width="1920" height="1080" frameRate="10000000/333333">
<SegmentTemplate timescale="10000000" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startNumber="1">
<SegmentTimeline>
<S t="0" d="63999936" r="3" />
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
<AdaptationSet id="1" contentType="audio" segmentAlignment="true" bitstreamSwitching="true">
<Representation id="1" mimeType="audio/mp4" codecs="mp4a.40.2" bandwidth="130979" audioSamplingRate="44100">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2" />
<SegmentTemplate timescale="44100" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startNumber="1">
<SegmentTimeline>
<S t="0" d="283153" />
<S d="281556" />
<S d="282668" />
<S d="281600" />
</SegmentTimeline>
</SegmentTemplate>
</Representation>
</AdaptationSet>
</Period>
</MPD>
我能够成功地将 MPD 发送到 Youtube 服务器,尽管我的流仍然无法工作。请参阅 https://developers.google.com/youtube/v3/live/guides/encoding-with-dash,其中提供了正确的信息。
还有 https://help.streamieapp.com/a/ha_iI1HN5xsYS/youtube-mpegdash-ingest-by-hand,由 iOS 开发人员编写。