Warns if HLS type is not set to LIVE for UDP inputs
- Also fixed documentation missing --hls_playlist_type LIVE for HLS live examples. - Also updated packager.cc to use RETURN_IF_ERROR macro for consistency. Fixes #347 Fixes #403 Change-Id: Idbccd7137b873170cd54e2c780bd554d25031a0b
This commit is contained in:
parent
9df2825f3d
commit
e5863f1e0e
|
@ -33,7 +33,8 @@ Here are some examples.
|
||||||
'in=udp://225.1.1.8:8002?interface=172.29.46.122,stream=video,init_segment=h264_480p_init.mp4,segment_template=h264_480p_$Number$.m4s,playlist_name=h264_480p.m3u8' \
|
'in=udp://225.1.1.8:8002?interface=172.29.46.122,stream=video,init_segment=h264_480p_init.mp4,segment_template=h264_480p_$Number$.m4s,playlist_name=h264_480p.m3u8' \
|
||||||
'in=udp://225.1.1.8:8003?interface=172.29.46.122,stream=video,init_segment=h264_720p_init.mp4,segment_template=h264_720p_$Number$.m4s,playlist_name=h264_720p.m3u8' \
|
'in=udp://225.1.1.8:8003?interface=172.29.46.122,stream=video,init_segment=h264_720p_init.mp4,segment_template=h264_720p_$Number$.m4s,playlist_name=h264_720p.m3u8' \
|
||||||
'in=udp://225.1.1.8:8004?interface=172.29.46.122,stream=video,init_segment=h264_1080p_init.mp4,segment_template=h264_1080p_$Number$.m4s,playlist_name=h264_1080p.m3u8' \
|
'in=udp://225.1.1.8:8004?interface=172.29.46.122,stream=video,init_segment=h264_1080p_init.mp4,segment_template=h264_1080p_$Number$.m4s,playlist_name=h264_1080p.m3u8' \
|
||||||
--hls_master_playlist_output h264_master.m3u8
|
--hls_master_playlist_output h264_master.m3u8 \
|
||||||
|
--hls_playlist_type LIVE
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
|
|
|
@ -213,10 +213,7 @@ Status ValidateStreamDescriptor(bool dump_stream_info,
|
||||||
|
|
||||||
// If a segment template is provided, it must be valid.
|
// If a segment template is provided, it must be valid.
|
||||||
if (stream.segment_template.length()) {
|
if (stream.segment_template.length()) {
|
||||||
Status template_check = ValidateSegmentTemplate(stream.segment_template);
|
RETURN_IF_ERROR(ValidateSegmentTemplate(stream.segment_template));
|
||||||
if (!template_check.ok()) {
|
|
||||||
return template_check;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stream.output.find('$') != std::string::npos) {
|
if (stream.output.find('$') != std::string::npos) {
|
||||||
|
@ -299,11 +296,22 @@ Status ValidateParams(const PackagingParams& packaging_params,
|
||||||
"stream descriptors.");
|
"stream descriptors.");
|
||||||
}
|
}
|
||||||
|
|
||||||
Status stream_check = ValidateStreamDescriptor(
|
RETURN_IF_ERROR(ValidateStreamDescriptor(
|
||||||
packaging_params.test_params.dump_stream_info, descriptor);
|
packaging_params.test_params.dump_stream_info, descriptor));
|
||||||
|
|
||||||
if (!stream_check.ok()) {
|
if (base::StartsWith(descriptor.input, "udp://",
|
||||||
return stream_check;
|
base::CompareCase::SENSITIVE)) {
|
||||||
|
const HlsParams& hls_params = packaging_params.hls_params;
|
||||||
|
if (!hls_params.master_playlist_output.empty() &&
|
||||||
|
hls_params.playlist_type == HlsPlaylistType::kVod) {
|
||||||
|
LOG(WARNING)
|
||||||
|
<< "Seeing UDP input with HLS Playlist Type set to VOD. The "
|
||||||
|
"playlists will only be generated when UDP socket is closed. "
|
||||||
|
"If you want to do live packaging, --hls_playlist_type needs to "
|
||||||
|
"be set to LIVE.";
|
||||||
|
}
|
||||||
|
// Skip the check for DASH as DASH defaults to 'dynamic' MPD when segment
|
||||||
|
// template is provided.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -808,11 +816,7 @@ Status Packager::Initialize(
|
||||||
if (internal_)
|
if (internal_)
|
||||||
return Status(error::INVALID_ARGUMENT, "Already initialized.");
|
return Status(error::INVALID_ARGUMENT, "Already initialized.");
|
||||||
|
|
||||||
Status param_check =
|
RETURN_IF_ERROR(media::ValidateParams(packaging_params, stream_descriptors));
|
||||||
media::ValidateParams(packaging_params, stream_descriptors);
|
|
||||||
if (!param_check.ok()) {
|
|
||||||
return param_check;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!packaging_params.test_params.injected_library_version.empty()) {
|
if (!packaging_params.test_params.injected_library_version.empty()) {
|
||||||
SetPackagerVersionForTesting(
|
SetPackagerVersionForTesting(
|
||||||
|
@ -917,15 +921,11 @@ Status Packager::Initialize(
|
||||||
packaging_params.output_media_info, internal->mpd_notifier.get(),
|
packaging_params.output_media_info, internal->mpd_notifier.get(),
|
||||||
internal->hls_notifier.get());
|
internal->hls_notifier.get());
|
||||||
|
|
||||||
Status status = media::CreateAllJobs(
|
RETURN_IF_ERROR(media::CreateAllJobs(
|
||||||
streams_for_jobs, packaging_params, internal->mpd_notifier.get(),
|
streams_for_jobs, packaging_params, internal->mpd_notifier.get(),
|
||||||
internal->encryption_key_source.get(),
|
internal->encryption_key_source.get(),
|
||||||
internal->job_manager->sync_points(), &muxer_listener_factory,
|
internal->job_manager->sync_points(), &muxer_listener_factory,
|
||||||
&muxer_factory, internal->job_manager.get());
|
&muxer_factory, internal->job_manager.get()));
|
||||||
|
|
||||||
if (!status.ok()) {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal_ = std::move(internal);
|
internal_ = std::move(internal);
|
||||||
return Status::OK;
|
return Status::OK;
|
||||||
|
@ -935,9 +935,7 @@ Status Packager::Run() {
|
||||||
if (!internal_)
|
if (!internal_)
|
||||||
return Status(error::INVALID_ARGUMENT, "Not yet initialized.");
|
return Status(error::INVALID_ARGUMENT, "Not yet initialized.");
|
||||||
|
|
||||||
Status status = internal_->job_manager->RunJobs();
|
RETURN_IF_ERROR(internal_->job_manager->RunJobs());
|
||||||
if (!status.ok())
|
|
||||||
return status;
|
|
||||||
|
|
||||||
if (internal_->hls_notifier) {
|
if (internal_->hls_notifier) {
|
||||||
if (!internal_->hls_notifier->Flush())
|
if (!internal_->hls_notifier->Flush())
|
||||||
|
|
Loading…
Reference in New Issue