diff --git a/core/broadcast/broadcast.cc b/core/broadcast/broadcast.cc index 61e37143..f929d0df 100644 --- a/core/broadcast/broadcast.cc +++ b/core/broadcast/broadcast.cc @@ -29,17 +29,33 @@ Broadcast::Broadcast(std::shared_ptr media, void Broadcast::Start() { std::stringstream sout; - sout << "#transcode{vcodec=" << configuration_->vcodec() + sout << "#duplicate{dst='transcode{vcodec=" << configuration_->vcodec() << ", vb=" << configuration_->vb() << ", acodec=" << configuration_->acodec() - << ", ab=" << configuration_->ab() + << ", scale=1, ab=" << configuration_->ab() << "}:std{access=" << configuration_->access() << ", mux=" << configuration_->mux() - << ", dst=" << configuration_->dst(); - libvlc_vlm_add_broadcast(vlc_instance_.get(), media_->location().c_str(), - media_->location().c_str(), sout.str().c_str(), 0, - nullptr, true, false); - libvlc_vlm_play_media(vlc_instance_.get(), media_->location().c_str()); + << ", dst=" << configuration_->dst() + << "}',dst=display}"; + + + + + + + + + + + + + + + + libvlc_vlm_add_broadcast(vlc_instance_.get(), "dshow:// ", "dshow://", sout.str().c_str(), 0, nullptr, true, false); + libvlc_vlm_play_media(vlc_instance_.get(), "dshow:// "); } + + Broadcast::~Broadcast() { libvlc_vlm_release(vlc_instance_.get()); } diff --git a/core/broadcast/broadcast.h b/core/broadcast/broadcast.h index cc6de79b..46febfd6 100644 --- a/core/broadcast/broadcast.h +++ b/core/broadcast/broadcast.h @@ -42,9 +42,17 @@ class Broadcast { ~Broadcast(); private: - VLC::Instance vlc_instance_ = VLC::Instance(0, nullptr); + //VLC::Instance vlc_instance_ = VLC::Instance(0, nullptr); + //const char* mi_argumento = "--dshow-size=d1"; + //VLC::Instance vlc_instance_ = VLC::Instance(1, &mi_argumento); + //std::unique_ptr configuration_ = nullptr; + //std::shared_ptr media_ = nullptr; + const char* argumentos[12] = {"--dshow-vdev=e2eSoft iVCam", "--dshow-adev=none", "--dshow-fps=30", "--dshow-chroma=YUY2", "--dshow-aspect-ratio=16:9" , "--live-caching=0", "--video-on-top", "--video-x=100", "--video-y=100", "--no-video-deco", "--zoom=0.8", "--sout-transcode-threads=8"}; + //const char* argumentos[7] = {"--dshow-vdev=Blackmagic WDM Capture", "--dshow-adev=none", "--dshow-size=hd1", "--live-caching=0", "--video-on-top", "--no-video-deco", " :dshow-aspect-ratio=2:1"}; + VLC::Instance vlc_instance_ = VLC::Instance(12, argumentos); std::shared_ptr media_ = nullptr; std::unique_ptr configuration_ = nullptr; }; + #endif // BROADCAST_BROADCAST_H_ diff --git a/core/player/player.cc b/core/player/player.cc index e23b15f0..3dc2a49e 100644 --- a/core/player/player.cc +++ b/core/player/player.cc @@ -21,6 +21,7 @@ #include Player::Player(const std::vector& cmd_arguments) { + if (cmd_arguments.empty()) { vlc_instance_ = VLC::Instance(0, nullptr); } else { diff --git a/ffi/lib/src/media_source/media.dart b/ffi/lib/src/media_source/media.dart index bb2567d7..a45b6aa8 100644 --- a/ffi/lib/src/media_source/media.dart +++ b/ffi/lib/src/media_source/media.dart @@ -206,11 +206,11 @@ class Media implements MediaSource { static String _buildDirectShowUrl(Map args) { return args.entries.fold( - 'dshow://', + 'dshow:// ', (prev, pair) => prev + (pair.value != null - ? ' :${pair.key.toLowerCase()}=${pair.value}' + ? '--${pair.key.toLowerCase()}=${pair.value}' : '')); }