ffmpeg with Avisynth support
Hi,
yesterday I tried to add Avisynth script support to ffmpeg/ffplay using Avisynth C interface. You can download compiled ffmpeg from http://ffdshow.sf.net/ffmpeg_avs.rar. It's a first "draft" and has many bugs and limitations, including: - crashes on exit - I guess it's because AVS_ScriptEnvironment isn't freed (I didn't found any function in avisynth C interface to do this) - only video is supported - no seeking - no error handling - I had problem implementing timestamps, but maybe it's OK now If this would work, I'll make sources available and someone could compile mencoder using this modified libavformat. [/url] |
Hi Milan 8O ,
Welcome buddy :D . We've been waiting for you for months :) We've been trying to understand ffvfw/ffdshow usage and we really needed your help. Anyway, we're now a bit more concentrated on Mencoder and I am very :D :D :D to see that you are willing to help us on Mencoder's ability to open avs scripts. I'm sure other members will to compile it the way you just explained. Hope to keep hearing from you now and then :P . Cheers |
Hi Milan,
wellcome. Nice to see you visiting us. It's good having people like you improving this ffmpeg thing. Thanx :D EDIT: VM or rds or Inc: as you're more used to compile mencoder, you could try as Milan advises, with this new ffmpeg, and we could test and help with debugging... well, if you have time, friends :roll: |
Hi Milan.
1st post, and what a superb entry :lol: Small problem: I can't force this to work in any way :oops: The procedure entry point_avs_create_script_environment@4 could not be located in dynamic link avisynth_c.dll I have avisynth_c.dll in ffmpeg and %systemroot% folders but it doesn't working. Any guides :?: :roll: |
as kwag would say: The future looks bright!
Welcome on board milan! If Mencoder would accept AVS scripts natively, it would be a great improvement! I'm not that smart, but wouldn't it actually be a gain in speed too, since the way we do it now with the avi-container slows things down a bit doesn't it? :roll: |
FIRST: Milan, a big welcome to you in here! Wo do apriciate your presence more than very much!! :D
Second: @ Jell' If you do convert direct from VOB to m2v/m1v and using sources like DVDs which are often well mastered (I said "often" so not all ;-) ). Mencoder and its internal routines filters do have a very big potential so in a an easy encoding way that would be enough. BUT ... in very tricky cases like if you do deal with PAL DVDs/captures where these have been just telecined from 23.976 to 29.97 and then for the PAL market direct "norm-converted" to 25fps (no IVTC first before! YEP, thats often done!).... this would need a complex scripting in avisynth, containing ways which are not possible in mencoders internal filters. I do only say "StarTrek next generation", "Voyager", "Simpsons", "Futurama" etc. :arrow: the functions like restore24() or unblendpattern() are the only way to get these streams back to their real 23.976 WITHOUT still existing blendings in frames. Also ... our MA script. You cant perform an IF YdifferenceToNext() ... adaptive "routine" by using mencoders internal possibilities only. Filtering of Mencoder is static and thats the point where Avisynth still gives much of gain for higher standard video encoding routines. :) Inc. |
Welcome to the forum Milan!
:ole: I can't wait to try this. It should also work with mencoder, because when compiling, we only copy the libavcodec and libavformat to mplayer folder. Well, we never know, but should work. :lol: Then you can submit the patch to mplayer-dev mailing list, I'm sure they will approve (with a few #defines to only compile with avisynth support in Windows) Anyway, congratulations for the idea. :wink: @Hydeuos This looks like you're using an old DLL, try to use the latest version. :wink: EDIT: This thread is related to ffmpeg, I'll move it to the correct forum. :wink: |
VM,
move there if needed to keep the forum organized... but keep us informed here when working in mencoder :lol: |
I'm late :!:
Welcome Milan :D -kwag |
Milan,
It always feezes when encoding in frame 48 or 51 with me. :cry: I did a batch file and adapted the optimized settings used in mencoder in case anyone wants to try Code:
rem #################### Just to make it clear, it freezes with and without this settings, and I used a script with avisource only ( tested with some huffy captures). :wink: Let me know if you need any specific test. :D |
First, I'd like to thank you for all the welcomes.
I posted to mencoder/avisynth thread because adding avisynth support to ffmpeg is for me just intermediate step in process of adding avisynth support to mencoder. I could modify mencoder directly, but I haven't compiled mplayer in windows yet, only ffmpeg. @vmesquita: I tried your example with two results: 1. I can confirm the problem with non-integer framerates - I'll investigate it further 2. When using HuffYUV source, ffmpeg didn't crash at exit. |
I uploaded new ffmpeg_avs.rar. Please try it, freeze when encoding should be fixed now.
|
Hi Milan,
Problem fixed! :D :D :D :D It really was only happening with non-integer frame-rates even with 29.97, but now it's working great. I was testing a huffy source and like you it doesn't crash. About mencoder: I don't think you need to add support to mencoder directly: when you compile mencoder, you just need to copy libavcodec and libavformat to mplayer folder. From what I understand you just added a new input type to libavformat, it may be working with mencoder already. :D If possible, make the sources available so I can compile. I can't wait to see this working on mencoder. :D :D :D |
I'm glad it's working now.
I tried to build mencoder using mingw with modified libavformat. However resulting mencoder stopped before encoding first frame. I'll investigate this later, because today I'd like to work on ffdshow too (I'd like to finally correctly implement MPEG1/2 decoding). |
Great Milan! Let me know if you need any help. :wink: :D
|
Hey guys,
we're all :blabla: in Mencoder and MencodeMe forum how great it is the advances done to work with avisynth from inside ffmpeg(/mencoder). Thanx for your work :wink: |
Quote:
|
Oh man!
I just can't wait to see mplayer/mencoder reading avs scripts natively :D Hope I could help you guys but I'm not the "brains" in the family :) Just let us know when you have something for testing. Cheers |
Hmmm, four days since first milan post. No news about ffmpeg-avisynth (-mencoder)... no news is bad news? :(
|
@Hydeus
Try putting the DLL in avisynth plugin folder (not in script folder). It solced the problem for me. @digitall.doc He's probably busy, let's wait and let him surprise us. :wink: :D |
And what about you, VM?. You were also testing it.
But I'm afraid you don't have the time... :lol: |
After successful compilation of mencoder in mingw I decided to implement Avisynth support directly to mplayer/mencoder. You can download it from http://ffdshow.sf.net/mencoderAVS.rar. This time it contains avisynth_c.dll too. It isn't compiled with DirectX support therefore mplayer is not very usable.
Limitations: audio isn't supported and errors aren't checked at all. No seeking. I tested it with one simple avs script with all colorspaces (YV12, YUY2, RGB24, RGB32). I'm sure you'll give it much better testing :) |
This is gerat, Milan! :D :D :D 8) I can't wait to test it. 8)
|
thank you so much milan! will try it out tonight! :D
question: is this build optimized for a certain CPU type yet? |
I compiled it on P4, without any arguments to ./configure. I don't know mplayer build process much and I'm not sure if resulting binary can be used on older CPUs.
|
:ole: milan
I'm at work now, and tonight on duty. But tomorrow I'll run and test it. :bugeyes: What about speed?, does it slow down as using makeAVIS? You da'man :bowdown: :wink: |
I've never used makeAVIS with mencoder so I can't tell (actually only recently I learned that this combination is possible), but I guess it should be faster.
|
hi milan.
your mencoder build crashes whenever I start it on my Athlon XP. Do you want me to post the windows error log? (it's long...) :roll: |
Output from
mencoder.exe -v -v xx.avs .... would be helpful. It's quite possible, that this build requires SSE2. |
hmmm how do I save the output. there's no crash using these arguments, however the window is closed quite fast. :oops:
I could read something like "head_check failed". Sorry for being no big help on this issue. :roll: |
Quote:
Could please release the sources or reconfigure with: Code:
./configure --enable-largefiles --enable-static --confdir=mplayer/ --enable-win32 --enable-runtime-cpudetection --enable-win32 enables the use of win32 decoders, you ca ndrop this if it causes problems. --enable-static ensures that that you only need cygwin1.dll (and no other DLL) if you're using cygwin to compile --enable-largefiles adds support to files greater than 2 Gb. Thanks! :D |
Quote:
The file crash.log should display what happened. -kwag |
Quote:
wrap your command into a .bat & put a 'pause' at the very and. maybe, it helps :-) (some screen output can't be redirected, anyway) the bests y |
it's been a long time since working with DOS. Thanks kwag and yaz... 8)
|
Maybe first report. P4, 1.6 GHZ XP Home. Using directly MencodeMe give multiple "duplicate 1 frame(s)!" errors - file size is 0 KB. Runing the same from CLI give the same. I tried to put ConvertToYUY2() at the end of script (I don't know why I thought it will cure) and the error gone, but it shows every time (99%) :? Stoped it. Every attempt to repeat it gave me this duplicate frame error - as the encoder received only the first frame and discard it when received again (I think) :? The script included RemoveDirt and HybridFupp (704,576, preset="very high"). Aim - 1/3 DVD (file size).
|
Hi Milan,
It's always great to see you around :wink: If you can show us how to include the avs support we'll provide the compilations here at the forum and we will be forever gratefull :bowdown: Not to mention that each one of us will buy you a pack of beer :rotf: so you can do it like we do while we wait for our encodings are finished :drink: Thanks buddy. Cheers |
I compiled mplayer/mencoder using suggested configure options and updated http://ffdshow.sf.net/mencoderAVS.rar.
@Abond Please could you send me that avisynth script and mencoder command line used? As I wrote before, I tested mencoderAVS with very simple avs file and libavcodec's mpeg4 codec. @rds_correia I'll release sources soon, but first I'd like to wait for Abond's answer. |
Hi Milan,
I just tested with this script: Code:
Avisource("D:\Videos\mymovie.avi",false) My include file: Code:
of=rawvideo=1 Code:
D:\Temp\mencodeme>Mencoder.exe -include temp.conf -lavcopts vbitrate=977:vpass=2 "D:\Temp\video\Movie0.avs" -o "D:\Temp\video\Movie0a.mpv" |
After downloading 6 missing filters, I was able to test your script with same result as you: output file seemed to be OK, but mencoder crashed on exit. I'm just guessing what could cause this. For me it reports error in xvidVFW.dll, but I'm not sure if it's really crashing there. Please try some huffYUV source, this didn't crash for me.
And as I wrote before, I don't know how to release AVS_ScriptEnvironment variable. So even if this doesn't causes crash, it'd still cause resources leak. BTW I implemented seeking support in demux_avisynth. |
Quote:
Quote:
|
Site design, images and content © 2002-2024 The Digital FAQ, www.digitalFAQ.com
Forum Software by vBulletin · Copyright © 2024 Jelsoft Enterprises Ltd.