PDA

View Full Version : AviSynth 2.5.7 RC-1



Co Loa
19-09-2006, 14:05
2.57 Changes from 2.56
Additions

* Installer option for avisynth.lib, avisynth.exp and avisynth.map files.
* DirectShowSource() now sets _HIRESOUTPUT property of WMAudio Decoder DMO. Allows 24 bit samples and 6 channel decoding.
* Avisynth COM object now supports IAVIStreaming interface. Many apps blindly expect it and fail to load AVS scripts.
* Conditional Reader now also accepts T, F, Yes and No for bool data.
* DirectShowSource() log debug messages to file.
* DirectShowSource() force set framecount.
* DirectShowSource() accept audio streams of type WAVE_FORMAT_IEEE_FLOAT.
* Added KillVideo() verb.
* TimeStretch now exposes the tuning parameter of the SoundTouch library.
* Adding global OPT_AllowFloatAudio=True to your script enables WAVE_FORMAT_IEEE_FLOAT audio output.
* Explicitly request all the channels available in the audio stream [acm AC3]
* Explicitly try to request float, 32 bit then 24 bit samples from the audio codec.
* Accept raw audio streams of type WAVE_FORMAT_IEEE_FLOAT.
* Added installer option to add "Avisynth Script" item to Explorer shell for new .avs file creation.
* Added avs_delete_script_environment and avs_subframe_planar to avisynth_c interface.
* Hack to allow Fraunhoffer MP3 codec to work when wBitPerSample==16. (Squid_80)
* Added portugese translation (by RoLon), and partly french translation (by JasonFly)
* Subtitle multi line text, set LSP arg and use \n. (foxyshadis, tateu)
* ***FPS("preset") string preset FPS values. (Tritical)
* Better avisynth_c cdecl/stdcall mismatch detection and protection (Tritical).

Bugfixes

* Fixed ConvertFPS() blend mode mix_ratio was wrong.
* Fixed AviSource() handling of dud AVI files that start with drop frames, just return the first key frame.
* Fixed DirectShowSource() handling of pin renegotiation.
* Fixed Overlay() "PC_Range" argument handling.
* Fixed SubTitle() crash when resources exhausted.
* Fixed Resizers cropping argument validation.
* Fixed % operator bad argument text message.
* Fixed stuffing Audio buffer with video graphics on Exception. Now returns E_FAIL. Video stream subsequently will return error text in graphic form.
* Fixed KillAudio() not resetting nchannels and sample type to 0.
* Fixed Conditional Reader sscanf buffer overrun.
* Fixed Version() and VersionString() timestamp discrepancies.
* Fixed Serious inaccuracies in TimeStretch. It is still not sample exact!
* Fixed Negative int arg handling for ApplyRange() and Animate().
* Fixed Installer handling of readonly/inuse target files.
* Fixed ConvertAudio SSE2 to Float alignment test.
* Fixed (auto)LoadPlugin altname generation. (Tritical)
* Fixed SaveString memory block overrun.
* Fixed $Plugin!Functionname!Param$ bug. (Fizick)
* Fixed registry handle leak on $PluginDir$ lookup. (Dave Brueck)
* Fixed memory leaks avisynth_c.
* Fixed returning locked/protected VBF's to LRU. (Tritical)
* Fixed runtime mixed SEH/C++ exception handling for XPsp2. (Tritical)
* Fixed CAVIStreamSynth::Read audio buffer overrun. (Avery Lee)
* Fixed DLL handle leak in LoadPlugin. (Tritical)
* Fixed Assert("text") no longer parses % args.
* Fixed number parser returning inaccurate float conversions.
* Fixed ConvertFPS() blend mode not processing of chroma planes.
* Fixed resizer resampling pattern attempted use after deletion.
* Fixed resizer subpixel shifting functionality being a noop.
* Fixed Info() auto font selection metric.
* Fixed Conditional error checking of float RHS.
* Corrected colours in YUV ColorBars, Now match BT.801-1.
* TCPDeliver updates: Client: Fixed crash if client gets disconnected.
* TCPDeliver updates: Server: Remember to disconnect clients when shutdown.
* Fixed Turn*() YUY2 mod 2 height test.
* Fixed AVISource() corrupted error messages.
* Fixed AVISource() direct input drop frame handling.

Optimizations

* SubTitle() releases all resources when the last frame of the clip is rendered.
* SubTitle() releases GDI resources after text map is created.
* ApplyRange() only builds 2 chains instead of 3.

Changes

* Map file is now generated for release builds.
* ConvertTo*() and GreyScale() now accept "Rec601" as a valid matrix name.
* DirectShowSource.dll upx'ed.
* Upgrade internal copy of SoundTouch library to 1.3.1.
* SoundTouch now available in RelSym build.
* Animate Integer arg enumeration no longer rounds toward positive infinity. Both positive and negative enumerations are identical. i.e. For Animate(0, 10, "Foo", 0, 0, 10, -10), Foo's arg1 = -arg2 for all frames.
* Selecting associate open with Notepad with .avs files in the installer now also includes .avsi files.
* The Installer now pushes a recovery dialog box when unwritable files are encountered during an install. The user may manually correct the problem and retry installing that file.
* SetMemoryMax() minimum now 4Mb instead of 16. (Tritical)
* Remove 50 plugin auto prescan load limit. (Tritical)
* COM QueryInterface calls now return S_OK instead of NULL.
* Bracketless call of argless function now get a cache. (Tritical)
* Over-range numbers now raise a compile time exception.
* ***FPS(float) now uses continued fraction to generate a minimal rational pair. (Raymod2)
* ChangeFPS(linear=true) now raises a compile time exception if the speed change ratio is > 10.
* ConvertFPS() blend mode works for all pixel formats. (Tritical)
* Info() retrofit of 2.60 updates.
* TCPDeliver.dll upx'ed.
* RGB ColorBars +Q and -I bars, Hue is now correct, Luma is NOT zero to achive this.
* AVISource Audio no longer limited to 2 channels.
* SaveString memory blocks are now 32 bit aligned.
* Default planar chroma planes mod 16 aligned. See SetPlanarLegacyAlignment().

Download [/URL]http://prdownloads.sourceforge.net/avisynth2/AviSynth_160906.exe?download[/URL]

1827
16-03-2007, 08:21
Bác Co Loa hay ai khác có thể hướng dẫn cơ bản cách tạo dòng lệnh(file Script)không? Vi thằng AVIsynth này đọc FAQ của nó nhiều quá(toàn từ ngữ chuyên môn) mà trình độ tiếng anh của mình thì bèo nhèo.

Trước mình có cái tool nhỏ VIDEORA IPOD CONVERTER(tool này dùng để nén phim cho IPOD). Nó có tích hợp AVIsynth. Mỗi khi mình chọn 1 file video nào đó là nó tự động tạo Script AVIsynth sau đó nó Encode thành file MP4 cho IPOD.

Mình thì chỉ dùng chức năng tạo script AVIsync của nó sau đó dùng chương trình khác để encode thành dạng video mình cần.

Nhưng mà xài nó mà không hiểu gì hết, nhiều file video thì nén khá ngon, nhưng cũng có 1 số file video chắc do khai báo không chính xác file script nên khi encode lại bị lỗi tùm lum(thông thường là lỗi trễ tiếng so với hình).

Co Loa
16-03-2007, 15:07
Tool này dành cho những người có hiểu biết căn bản về video chính vì vậy dù muốn hay không vẫn phải nghiên cứu hướng dẫn của nó, cho dù có dịch ra tiếng việt vẫn khó hiểu.

>Mình thì chỉ dùng chức năng tạo script AVIsync của nó sau đó dùng chương trình khác để encode thành dạng video mình cần.

như tôi đã nêu trên là có hiểu biết những dòng lệnh trong file AVS thì mới dùng nó đúng lúc được, các trình có tích hợp avisynth được lập trình với những lệnh riêng biệt phù hợp với trình encode tích hợp vì thế chỉ hạn chế dùng với các trình này.

Nếu bạn dùng nguồn input đúng chuẩn thông dụng ví DV avi, MPEG-2 thì chỉ cần load ngay file video gốc cần gì phải thông qua avisynth, ngoại trừ muốn resize hay sử dụng filter.

1827
17-03-2007, 07:20
Mình dùng AVIsynt vì có 1 số file mình muốn chuyển format nó nhưng mà do dùng mấy cái chương trình thường nên nó trình decode và encode phải xài riêng.

Vídụ: Mình muốn chuyển file WMV(loại độ phân giải cao+bitrate cao)-->AVI(DivX). Mà thằng VirtualDub thì nó không chịu chạy file WMV nên mình mới dùng AVIsynth tạo script cho VirtualDub nó chạy được.

Co Loa
17-03-2007, 17:39
>Vídụ: Mình muốn chuyển file WMV(loại độ phân giải cao+bitrate cao)-->AVI(DivX). Mà thằng VirtualDub thì nó không chịu chạy file WMV nên mình mới dùng AVIsynth tạo script cho VirtualDub nó chạy được.

thế thì đơn giản thôi, ví dụ file WMV là C:\test.wmv

thì hãy mở notepad gõ như sau:

directshowSource("C:\test.wmv")

và save nó với cái tên ví dụ test.avs, cuối cùng load vào VD.

1827
18-03-2007, 02:50
thế thì đơn giản thôi, ví dụ file WMV là C:\test.wmv

thì hãy mở notepad gõ như sau:

directshowSource("C:\test.wmv")

và save nó với cái tên ví dụ test.avs, cuối cùng load vào VD.

mình có coi qua cái FAQ của AVIsynt thì hình như có 1 thông số để khai báo frame hình/s. Không biết có cần khai báo cái thông số frame hình cho file WMV như khi làm với MPEG không?

Vì có nhiều film mình convert xong thì khúc đầu rất tốt, nhưng đoạn sau âm thanh nó ưa đi trễ lắm.

Co Loa
18-03-2007, 16:25
>Không biết có cần khai báo cái thông số frame hình cho file WMV như khi làm với MPEG không?

nếu bộ giải nén trên máy chạy đúng thì chẳng phải khai báo gì, VD sẽ nhận đúng info của video file.

>Vì có nhiều film mình convert xong thì khúc đầu rất tốt, nhưng đoạn sau âm thanh nó ưa đi trễ lắm.

nếu vậy thì demux âm thanh ra và encode riêng biệt sau đó mũ trở lại, nhưng nếu muốn chuyển đổi hệ thì cách này không được ngoại trừ sử dụng tool hợp lý như Besweet.

jofori89
28-03-2009, 20:23
http://forums.animesuki.com/showthread.php?t=48608

Cách chèn một cái ảnh vào video dùng file avsi này thế nào à ta


function insertsign(clip mainclip, clip overlayclip, int startframe, int "endframe") {
# make the endframe parameter optional (defaulting to where the overlay clip ends)
endframe = default(endframe,startframe+overlayclip.framecount ()-1) # is endframe not specified?
endframe = (endframe == 0) ? startframe+overlayclip.framecount()-1 : endframe # is it specified but zero?
# is it specified but >= the main clip's last frame? (may have been caused by the previous line or specified by the user)
# in that case make it equal to the last frame of the main clip (this is important later)
endframe = (endframe >= mainclip.framecount()-1) ? mainclip.framecount()-1 : endframe


# make sure the special case startframe=1 is dealt with correctly
# (needed because trim(0,0) returns the entire clip, which is obviously not what we want)
# note that the first frame of the clip is zero, NOT one!
begin = (startframe == 1) ? mainclip.trim(0,-1) : mainclip.trim(0,startframe-1)
middle = mainclip.trim(startframe,endframe)
# make sure the special case endframe = last frame of the clip is handled properly.
end = (endframe == mainclip.framecount()-1) ? blankclip(mainclip,length=0) : mainclip.trim(endframe+1,0)

middleoverlay = Overlay(middle, overlayclip, mask=overlayclip.showalpha())

# deal with the special case startframe=0 (in which case we don't have anything before the overlay)
# note that trim(-1,0) does nothing (it returns the same as trim(0,0)...)
final = (startframe == 0) ? middleoverlay ++ end : begin ++ middleoverlay ++ end
return final
}

Co Loa
28-03-2009, 20:31
Thì đó cả 1 loạt lệnh ví dụ bạn tự áp dụng chứ hỏi ai bây giờ.