How can i open h264 video files in virtualdub? - h.264

First the video files was mp4 then i converted them to avi files.
Now that they are avi files when i try to open a video file in virtualdub i'm getting this error:
Couldn't locat decompressor for format h264 (unknown) virtualdub requires video for windows vfw compaitable decompress ...etc
What i did so far ?
Install ffdshow in configuration i changed not to disable h264 and all others in decoder.
I installed divx
I have virtualdub 1.10.4
Now i'm using ffdshow 32bit i tried 64bit before
I have windows 8.1 pro 64bit
Tried almost or anything i found in google nothing worked so far.
I wanted to open the original mp4 video files in virtualdub but nothing worked so i converted it to avi but also not working.
What else can i do ?
Maybe there is another program like virtualdub that it will work ?

You need to install the h.264 VFW codec here: https://sourceforge.net/projects/x264vfw/
Just close VirtualDub beforehand, and pick the default options in the installer. Worked like a charm for me.
AFAIK the file being MP4 or AVI is unimportant, it's just a change of "container", ie. what's inside both files is a h.264 encoded video channel.
Caveat: as mentioned by Ivo Kostić in another answer, it doesn't work well with interlaced x264 (I have no experience with that, I just thought this important fact should also appear in the "top" answer).

I used the VirtualDub FFmpeg Input Driver Plugin, Direct sourcforge page
Download
Copy files to the plugins folders in the virtualdub directory
Restarted virtualdub

and no matter what you do currently x264vfw (either as standalone as mentioned by ghis, or via ffdshow's vfw config (decoder options)) doesn't work well with interlaced h264, it doubles the framerate and then it's not really usable esp. if you just wanna cut video in 'direct stream copy mode'.
a bug that probably won't be fixed.

Related

How to manually verify fake video stream in chromedriver

What am I doing?
I am trying to send a media file to my automated browser tests in place of real webcam footage
Where did I try?
I found this nugget of information of someone using it and passed in the same options as he did https://github.com/webrtc/samples/issues/616 . So I've used the same options, different file formats (the y4m, mp4, mjpeg and other file formats), the path is an absolute file path on my mac.
What do I see?
When I navigate to sites like https://webcamtests.com/ to verify it, I see only my own camera showing my face. I notice the camera name starts out as videoinput#1 then switches to the name for my webcam.
What do I think is the problem?
I believe either the fake device isn't working, the virtual camera dies shortly after launch, or the file itself isn't be read.
What would I like help with exactly?
Has anyone here used the following chrome command line options?
--use-file-for-fake-video-capture=<filename>
--use-file-for-fake-audio-capture=<filename>
--use-fake-ui-for-media-stream
--use-fake-device-for-media-stream
I'm hoping to hear how folks used them and how they were able to manually verify they were working.
root issue found, I was using the wrong file formats.
use-file-for-fake-video-capture supports .mjpeg file format
use-file-for-fake-audio-capture supports .wav file format
also, audio files are busted on a mac https://bugs.chromium.org/p/chromedriver/issues/detail?id=3287

Wowza stream engine no sound in html player

I use the tutorial at
https://www.wowza.com/forums/content.php?43-How-to-set-up-live-video-recording, and by using FlashRTMPPlayer11 I can record webcam streams and also play with no problem.
But, when I copy the recorded video file(wowza_output.mp4) and give the video to a html video player as a source, there is no sound coming. Also I have same issue when I try to open the video in vlc player.
I tried transcoders also and try to convert to sound encoding to aac, but still not working.
Help please...
The audio codec used for a Flash app's live stream recording should be Speex, so your video player should support playing back Speex audio in order to play it correctly. Transcoding to AAC should fix it, but you can't currently transcode a VOD file in Wowza. If you're using a different encoder to re-encode in AAC, like ffmpeg, the command should be:
ffmpeg -i wowza_output.mp4 -c:v copy -c:a libvo_aacenc wowza_output_aac.mp4
When you launch the Flash application, it should prompt you to allow it to use your camera/microphone. Make sure that you enable this. You can set the Flash Player Camera and Mic settings from the Flash Player Settings Manager.
You may also want to test a different browser.
Using Wowza transcoders - and setting their transcoder to convert to AAC audio format should do the trick. Maybe you have miss-configured something.
Don't forget to enable the transcoder, and also be sure that you are looking for the new source file (as you will have two of them now), and not for the old source.
Also, if you are making an API call to record an stream, make sure you change the &streamname=your_stream to the &streamname=your_stream_transcoded_name

HTML5 video wont play when hosted on my server, plays fine from external source

I think I have exhausted every avenue in trying to solve an issue whereby an HTML5 video won't play on my site. I have a simple demo page (below) to demonstrate where I am. I originally had a video in various formats for different browsers but for easier testing I am now just working with webm and testing in Chrome (Version 41.0.2272.89 (64-bit) on Mac OSX Yosemite). You will see the basic markup from the page above.
Demo 1 - .webm video hosted locally on the server - No video playing
I have tested the following:
Video file itself is accessible (cURL shows 200 response header)
Video file has correct MIME type (cURL shows video/webm set by .htaccess)
Video file has ok permission (644)
...so unless I am missing something obvious the markup is fine (for the browser I am testing) and the file itself is available and in the correct format.
OK, so the issue must be with the file itself then? Perhaps a codec issue or something, maybe something corrupted in the compression? Well, I don't think so...
The file came from an external source and if I embed it directly from the third-party's server it works fine. Check out this demo which is identical in markup other than the fact the video file is hosted externally:
Demo 2 - Same markup but video hosted elsewhere
Works fine for me!
So to confirm, the markup is the same in each case, the file when hosted externally loads fine, the exact same file when downloaded from the external source and uploaded to my server and referenced locally does not work.
I can only think that my testing here has ruled out issues with the video file itself and also with the HTML. It must be a server config issue with the parsing of the file surely? But, with the 200 response, the correct MIME type added via .htaccess and correct permissions I don't know what else to try.
Is everyone else seeing the same issue? What else should I be checking?
Thanks all!
For anyone else with HTML5 Video not displaying as expected check the following:
MIME types are supported
Rule out issues with the video file itself
Check your server for support of range request
In this case Apache 2.2.23 did not support an empty range request. The option is to update Apache to 2.2.27 as detailed in the following thread Range: bytes 0- FAILS in Apache 2.2.23
Thanks to Pablo Montilla for the guidance!
I think your problem lies in byte range support.
If you use curl:
curl "http://alkemist.partners/video-js/small.webm" -H "Range: bytes=0-"
You'll see the Empty reply from server response, but if you remove the Range header, your server returns the file correctly.

Kaltura seek and playFrom in video not working with html5 player

I can get the flash player to seek or startFrom a particular time for the video but NOT with the HTML5 player?? Am I'm missing something? I've tried lots of things!
It's not working on all this commands:
'mediaProxy.mediaPlayFrom' : 30
kdp.setKDPAttribute('mediaProxy','mediaPlayFrom', 30 );
kdp.sendNotification("doSeek", timesec);
Sounds like you are using older version of HTML5, you need to download at least 1.7+ versions. Also you have to put it under the path of http://youKalturaServer.example.com/html5/html5lib/.
Then you need to edit your localSettings.php file to point your kaltura server url. Then change this version by default version in congig file. (/opt/kaltura/app/alpha/config).
This would solve your thing. Hope it helps.

Failed to Load Resource, Plugin Handled Load on iOS

Every time I try to view a video file on my server I get this error on iOS in Safari, Chrome.
I am using a blob server and then an Apache server so I am not sure what the problem is. However, when I only use Apache, I do get this error but then I have the video rendering too.
However when I render this using my server this is not working. Does anyone know why this is? The videos work fine on other devices and in browsers also works fine if accessed through Apache only.
The solution to this problem was just a work around. The reason being the that blob servers aren't streaming servers. iOS devices expect the videos to arrive in small chunks. So for instance a streaming server is able to do this. However, a blob server just hands the video as a blob which is not what the iOS device expects. Some browsers are smart enough to handle this but others not.
The way I solved this was to add the video files outside of the blob server in a folder within the project and then render this through the Apache server instead of serving it via the actual blob server we were using. I hope this helps.
I was also getting this error for some mp4 videos. Turns out it wasn't a server issue for me it was a video encoding issue.
Issue
A "moov atom" needs to be placed at the front of the video file. It serves as a table-of-contents for the video. That "moov atom" has to be read first for html streaming or it won't play on some devices.
The Fix
To fix, I used handbrake to transcode my video. Turn on 'web optimize' Also turning on zerolatency and 'fast decode' may help (found in the video tab).
We were getting a similar error here. I thought it may have been the streaming issue since our video was hosted in blob storage on Azure. After setting up a Media Service for streaming, the video still didn't work. It turns out, the cause of the bug for us was Safari using a Service Worker. Below is some further explanation of what we found:
Safari first sends a byte range request for a Video tag that expects a 206 response. However, if you use a Service worker, the response returns with a 200 and it appears Safari doesn't know how to handle this. Our solution was to exclude using a Service Worker for Safari.
We found this by using the network tab of the Safari debugger on a Macbook to troubleshoot the issue we were seeing on the iPad. Attached is a screenshot for comparison/reference. The left tab shows what the call should look like by default. The right tab shows what you would see if using a Service Worker.
Add the following line of code to your .htaccess (located in the root of your WordPress installation):
SetEnvIfNoCase Request_URI .(?:mp4)$ no-gzip dont-vary
The following screenshot is the new complete .htaccess
Reference: https://clickshepherd.com/blog/solved-elegant-themes-divi-and-cloudflare-mp4-media-error-formats-not-supported-or-sources-not-found/
In our case, we created a URL pattern for our blob assets and then set headers in that URL pattern definition page which sent back a mime type of 'video/mp4'. This should instruct the browser to treat the binary stream as chunked, which in turn meant we didn't need to download the whole thing before it started playing.
Google Cloud Platform Solution
This issue caused me a lot of headache, so I just wanted to add my specific solution here, if anyone else encounters this while deploying to Google Cloud Platform.
When trying to load MP4 videos in Safari, I was getting the same error:
"Failed to Load Resource, Plugin Handled Load"
Which was preventing the videos from playing.
Still, I wanted to try to keep everything inside Google Cloud, so I created a Storage Bucket for the site, and added the videos there.
Of course, trying to retrieve the videos from the storage URL from the main site resulted in a CORS error.
Fortunately, you can configure CORS pretty easily on storage buckets:
Configuring cross-origin resource sharing (CORS)
Once that configuration was deployed, I was able to retrieve and load the videos on the site in Safari without the "plugin handled load" error.
I saw the error "Failed to Load Resource" and though that this is reason, why my videos are not playing.
Turned out, my videos were missing the hvc1 tag. And when I added it - they're playing fine.
In my case issue was with H256 HEVC videos, but in your case some other encoding / tagging issues can be the reason.
In my case, issue was fixed with ffmpeg:
ffmpeg -i input.mp4 -tag:v hvc1 -acodec copy -c:v copy -movflags faststart out.mp4