Recommend a Server Side Media Encoder or SDK [closed] - c#

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I'm writing a video on demand solution. I want to take care of the end to end process, from ingestion of content to playback.
I have decided to utilise IIS Smooth Streaming for the method of delivery, which means all the video content must be encoded as H246 Adaptive Streaming Video.
I originally started using Azure for this project, but I as dove deeper I realised this really was too big a platform for what I need. It loaded unnecessary work and complexity for what I'm trying to achieve.
The 'issue' I'm having is with choosing an appropriate method to encode uploaded content. There are many encoding packages available but I can't find one which meets my criteria.
I'm happy to use an off the shelf package or write something with an appropriate SDK.
Must operate on Windows Server 2012
Must operate while the interactive user is logged off (i.e. as a windows service)
Ideally notify when the job is complete (can be an indirect method)
Ideally create a thumbnail
Invoking the encode process can be simple command line, watch folder or API / SDK
Must on on my server, not a cloud service
Must encode H264 Adaptive Streaming for IIS
I've tried:
Expression Encoder - Doesn't work in 2012, and no longer developed by MS
Sorenson Squeeze - Almost works, but leaves itself open when launched from command prompt so each time it encodes so I'd end up with 100's of instances
Azure .. too big & expensive
I know Sorenson has an server product which can be self-hosted, but this is cost prohibitive.
MainConcept have several SDK's and I've emailed them, however they don't list prices so this to me means expensive. (You may have noticed cost is a big factor. I'm one guy and a company)
Can anyone recommend a .NET SDK (c#) SDK or encoder package which will hit my criteria?
Many thanks

Take a look at http://www.ffmpeg.org/
While not a .net solution, it's free, and meets most of your criteria
I've not used it for adaptive streaming video, but apparently it supports it
It's all done from the command line - depending on what you want to do, you may need to write a wrapper for it (we had to do this for monitoring folders/databases and for notifications when complete), but i've successfully used it in the past to encode tens of gigs of video on a daily basis

You can write your own service in c# or directly run it in IIS application with the needed permission.
Using ffmpeg :
http://vbffmpegwrapper.codeplex.com/
https://code.google.com/p/ffmpeg-sharp/
Using vlc:
https://code.google.com/p/libvlc-sharp/
http://libvlcnet.codeplex.com/

Rhozet Promedia Carbon is the tool you're looking for. Supports all your needs. You can request a free demo. They handle all the licensing for the formats.
http://www.harmonicinc.com/product/promedia-carbon
Any tool you might want for this is going to be cost-prohibitive due to licensing.
As others have mentioned, your other option is FFMpeg

Related

Which workflow technology is recommended in a loan request scenario? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
We're going to develop an ASP.NET MVC 4 web application which needs to be workflow based.
The scenario is something like this:
The Scenario
Users make request to get loan of a bank by submitting a form,
operators find the requests in a grid in their dashboard, they see the
details and if it is okay they send it to boss, and send it back to
users to fix or complete the request, if not. The boss decides to pay
loan or not, if yes and the price is below something it goes to fund
section, if it is above something the request goes to another boss and
so on..
Requirements
In each state there might be some additional relevant data attached, for example the points of user calculated on time of sending the request.
A process manager (admin) exists who can cancel any request wherever it is or pass the request to anyone he wishes.
There might be multiple transitions available which state can move along them, the state should check the conditions and choose one transition.
Meanwhile operators can
Pass requests between each other (if they're allowed to), for example if they are too busy or they're going on vacation (substituent)
See history of requests and see what data changed in round-trips (versioning)
Write notes before sending the request to next one or return it to someone.
The Question
In above scenario, which technology is more suitable and why?
Workflow Foundation
BizTalk
or libraries like:
Simple State Machine
Jazz
stateless
State Machine Compiler
I would not use BizTalk for this, even though I was a BizTalk developer for a number of years, and implemented similar workflows using it.
The reason is that I have come to the conclusion that modelling complex business workflows in BizTalk is an anathema to what BizTalk really does well, which is high performance message routing and transformations, and host integration capabilities.
However, neither would I use WF for this. I think that MS have made WF needlessly difficult to work with. I worked with WF3 which was the first version, so perhaps things have improved. But as far as I know MS removed state machine workflows from WF4 onward and now only supports sequential workflows.
So in answer to your question, I think neither are suitable for this purpose.
Why not start with NO technology stack except for ASP.NET MVC, JQuery, and SQL Server. This seems to be the MS web development standard at the moment. Likely you're already licensed for this.
Even though you seem to have your requirements up front, you'll likely find that some or even most of the requirements you have listed are subject to change or even removal.
So start with one or two core user stories which can be delivered quickly in small iterations and then continue to add features like that. When you get the point where you need to start looking at other technologies or frameworks then that is the time to reassess the decision. At this point I would personally look at using NServiceBus sagas as another option to manage your long running processes.
I think making a decision about tech stack too early in the planning process can work against you in many ways.
Sorry does not address your original question directly.

Screen Scraping [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
Just curious: What do you find to be your best tools for creating automated screen scrapes these days? is the .Net Agility pack a good option? What do you do about scraping sites that use a lot of AJAX?
I find that if the page has a pretty static layout, then the HTML Agility Pack is perfect for getting all the data I need. I've not run into a single page that it hasn't been able to handle and not get me the results I wanted.
If you find that the page is rendered with a great deal of dynamic code, you're going to have to do more than just download the page, you'll have to actually execute it.
To do that, you'll need something like the WebKit .NET library (a .NET wrapper around the WebKit rendering engine) which will allow you to download the page and actually execute Javascript as well. Then, once you are sure the document has been rendered completely, you can get the page details.
For the very basics I use:
Asynchronous HTTP Client - notably faster than the standard HttpWeb* (preliminary tests showed that it was about 25% faster).
Majestic 12 HTML Parser - about 50-100% faster than HTML Agility Pack.
I don't have JavaScript enabled yet, but I'm planning on using Google's V8 JavaScript Engine. This requires that you make calls to unmanaged code, but the performance of V8 justifies it.
For automating screen scraping, Selenium is a good tool. There are 2 things- 1) install Selenium IDE (works only in Firefox). 2) Install Selenium RC Server
After starting Selenium IDE, go to the site that you are trying to automate and start recording events that you do on the site. Think it as recording a macro in the browser. Afterwards, you get the code output for the language you want.
Just so you know Browsermob uses Selenium for load testing and for automating tasks on browser.
I've uploaded a ppt that I made a while back. This should save you a good amount of time- http://www.4shared.com/get/tlwT3qb_/SeleniumInstructions.html
In the above link select the option of regular download.
I spent good amount of time in figuring it out, so thought it may save somebody's time.
The best tool "these days" is one that not only gives you the desired features (Javascript, automation), but also the one that you don't have to run yourself... I am, of course, alluding to using a cloud service. This approach will save you network bandwidth, will deliver results faster (because it can scale better than a custom solution you'll likely end up developing) and, most importantly, save you the IT and maintenance headache.
On that note, check out a scraping solution called Bobik (http://usebobik.com). I've written an article about it at http://zscraper.wordpress.com/2012/07/03/a-comparison-shopping-android-app-without-backend/.
Hope this helps.

Can you programmatically interact with Component-Based Servicing (TrustedInstaller)? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking for code must demonstrate a minimal understanding of the problem being solved. Include attempted solutions, why they didn't work, and the expected results. See also: Stack Overflow question checklist
Closed 9 years ago.
Improve this question
I have been trying to find out how to programmatically interact with Component-Based Servicing (CBS) which is basically the TrustedInstaller and other services. With the goal to be able to query CBS for what packages are installed and get any other information they may have on installed packages. Here is a link to a overview of it.
Basically using C/C++/C# (not picky) I would like to interact with this via an API. This link is the best documentation from MSDN that is API related that I could find and it isn't much. Then here is another MSDN documentation area that that gives some details but nothing really about an API I can use to interact with it. This one is under package manager which is how you can interact via command line in a limited way to install CBS based packages. The best quote from that last link is:
"CBS provides various APIs (which are
not publicly available) to its client
installers to service the operating
system components."
Which may say it all, but I am not ready to give up yet. The home for all or at least most of this is %WINDIR%\servicing which has CbsApi.dll for starters, while it appears to be registered as a COM DLL it doesn't publicly expose any classes or functions to do anything. It seems also that most of the details that the API access are in the sub-folders such as Packages, Sessions, Editions, Version, etc.
I know not many people would be trying to do this except for myself and Greg Lambert who has a couple blog posts from a two years back basically asking the same questions and trying to figure out this "not public" API. It didn't look like he cracked this nut yet either.
So now I am at the point to reach out for help and ask the community if anyone has worked out the hidden API for this, or may want to take on the challenge and see want they can find out. Any information that helps me to take a step closer is appreciated.
The correct way to programatically access the CBS is through the API's to its clients. Depending on what you are trying to accomplish, this would involve the Windows Installer or the Windows Update Agent API, both of which are documented in the Windows SDK.
The CBS instelf is an implementation detail and shouldn't be used directly. Thr reason there is so little information publically avaiable is a combination of the fact that relying on implementation details rather than contracts is a bad practice and there is simply easier and more reliable ways to accomplish anything you'd do with CBS directly.
This part of the Windows Installer SDK deals with querying for installed components.
Maybe things have changed, because I just found MS's Component Based Servicing Reference, documenting a COM interface.
Side note: I got here via a comment on Raymond Chen's blog and its response, which made wonder "what is Component Based Servicing, why is it a disaster, and what does it have to do with auto-sort?". I still don't know the answer.
Disk space filling up is a common problem in Windows 7 due to the disaster that is Component Based Servicing.
[It wouldn't be a problem if you could disable auto-sort in Explorer, though. -Raymond]
The CBS is basically for Windows Updates and other servicing operations. Since they are released by Microsoft itself, the clients of CBS are internal teams at Microsoft. The API's are not released publicly. The tools and xml files needed for writing Windows Updates, etc. are internal to Microsoft. There is no way that third party applications can use CBS technology.

what is the best tool for performance regression testing [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
our organization is looking for a tool to help with performance testing on each release. We ship a whole bunch of new software and we want to ensure that performance on key functions has not slowed down since the last prod release. We have code in C# and Java. This can be anything from:
when i run this function it takes < 2 seconds
when i run this set of functions the total < 5 seconds
etc . .
Is it best to do this using our basic unit testing continuous integration (nunit, junit, team city) with hand written performance checks or are there specific tools that can help focus on on this area.
Any suggestions?
On my projects (which tend to use Spring), I use the AOP and the PerformanceMonitorInterceptor.
While you may not use Spring, it's definitely some good code to look at and can base a version of your own. I found AOP perfect for this situation because it does not clutter up the actual function calls. If you have a tiered application, then you can put these performance monitors at each level. (Typically for my webapps, I put it as my data access layer so I can monitor database query performance.)
You could try soap ui if your app is remotely accessible:
http://www.soapui.org/userguide/loadtest/index.html
It'll give you all the sort of stats your after:
http://www.soapui.org/userguide/loadtest/images/loadtest_editor.gif
What we use is python to write scripts + extensive logging to generate XML logs which can be then imported into spreadsheet.
I have been tinkering with a tool called 'Basher' that allows you to write "tasks" that are picked up by the system and subsequently run for a configurable amount of time (to allow the JVM to warm up for example) and then performs a run, recording task execution time, averages and the like.
The 1.0 version has been quietly around for a while and if you care to take a look, it is available at http://basher.sourceforge.net
The trunk version contains some improvements - there is maven integration, with configurations being specified in the pom.xml, the bare bones of a reporting framework, etc.

Resumable File Upload [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
I am in the design phase of a file upload service that allows users to upload very large zip files to our server as well as updates our database with the data. Since the files are large (About 300mb) we want to allow the user to limit the amount of bandwidth they want to use for uploading. They should also be able to pause and resume the transfer, and it should recover from a system reboot. The user also needs to be authenticated in our MSSQL database to ensure that they have permission to upload the file and make changes to our database.
My question is, what is the best technology to do this? We would like to minimize the amount of development required, but the only thing that I can think of now that would allow us to do this would be to create a client and server app from scratch in something like python, java or c#. Is there an existing technology available that will allow us to do this?
There are quite a few upload controls for this you should be able to Google. There are a few on this download page.
Another work around is to have your clients install a Firefox FTP plugin or write a Firefox plugin yourself but FTP is by far the easiest way to boot.
What's wrong with FTP? The protocol supports reusability and there are lots and lots of clients.
On client side, flash; On server side, whatever (it wouldn't make any difference).
No existing technologies (except for using FTP or something).
I found 2 more possibilities
Microsoft Background Intelligent Transfer Service (BITS):
Has: up and download, large files, encrypted (vis https), resumable (even auto resuming as long as the user is logged in), manual pause and resume, authentication (via https again), wrapper for .NET, foreground or background priority, ...
Not: bandwidth throttling, file verification (only filesize), compression
rsync:
Has: unidirectional transfer, large files, resume of partial uploads (and pause via stop), verification, encryption (via ssh, stunnel), compression, usable c library (librsync by Martin Pool [1],[2])
Not: good windows compability (only via cygwin or cwrsync), commercially usable (GPL)
Anybody found something else in C#?
There's an example of using HTML5 to create a resumable large file upload, might be helpful.
http://net.tutsplus.com/tutorials/javascript-ajax/how-to-create-a-resumable-video-uploade-in-node-js/
I'm surprised no one has mentioned torrent files. They can also be packaged into a script that then triggers something to execute.

Categories

Resources