Log in

View Full Version : AvxSynth: a Linux port of AviSynth


Pages : 1 2 3 4 [5] 6

TheFluff
14th October 2013, 18:25
avisynth on windows in a virtual machine

I'm not joking

manma
14th October 2013, 18:35
avisynth on windows in a virtual machine

I'm not joking

Glad you showed up. Will x264 perform well enough in a VM? Would I have to use something like kvm or xen for decent performance? Also, I don't mean to be a skeptic, but with a set of IVTC filters (I'm assuming that's what decomb is) working in avxsynth, do I -really- need anything else for dealing with a simple transport stream or DVD?

jackoneill
14th October 2013, 19:58
FFVideoSource("input.vob")


You should know that if you have several vobs that go together (as DVDs do), ffms2 is not all that good. It will lose and/or duplicate a frame or a few at the points where one vob ends and the next one begins. You can probably work around this problem by concatenating the vobs (a simple "cat" command) and feeding the result to ffms2.

qyot27
14th October 2013, 20:13
If you want to do special filtering (smoothing, masking, etc.), then you're better off just using AviSynth through Wine, and giving it to Windows builds of x264 and FFmpeg, also under Wine. It works fine, and only a couple of things that get too Windows-specific won't work that way (like DirectShowSource). Wine's really not that magical. I use it fairly often to do encodes with HCenc on our iMac, and have used x264 on occasion on there for some anime encoding - it works without issues.

The only tricky part is setting up ffdshow's VFW interface correctly, which you have to do through Wine's version of Regedit by exporting your settings under Windows and then importing them under Wine after you've installed ffdshow (you may also need it to add stuff to Wine's PATH, but there are GUI utilities that can do that, or you could just throw everything in ~/.wine/drive_c/windows).

If all there is is opening a file, performing IVTC, and resizing or similar things that are included in the core itself, then AvxSynth is fine.

You should know that if you have several vobs that go together (as DVDs do), ffms2 is not all that good. It will lose and/or duplicate a frame or a few at the points where one vob ends and the next one begins. You can probably work around this problem by concatenating the vobs (a simple "cat" command) and feeding the result to ffms2.
True. I overlooked that because I never use FFMS2 to process MPEG-1/2 files, and because I've also always ripped titles to their own files instead of preserving the DVD structure as-is.

manma
14th October 2013, 21:06
If all there is is opening a file, performing IVTC, and resizing or similar things that are included in the core itself, then AvxSynth is fine.

I'll probably stick with AvxSynth then. If I'm just dealing with a DVD or transport stream its probably best if I didn't do anything but IVTC it and encode. If someone wants motion sickness inducing interpolation and added banding from sharpening filters they can do it themselves during playback.

esby
16th December 2013, 13:08
Hello, I did some testing playing with the instruction left by qyot27.

I got two questions.

* I compiled mplayer with fffmpeg support, avxframeserver works with a test file and starts mplayer correctly, now when i try to open it directly with mplayer, it fails while it works if i use ffmpeg to encode directly..

avxFrameServer version.avs # works
mplayer version.avs # does not works, open nothing.
ffmpeg -i version.avs version.avi (...) # works and encode correctly

Is it supposed to work like this?

* When the avisynth script has a wrong syntax or an error in it, the test will not work, but it will not display any error. Anyway to have the "error back"?

sl1pkn07
16th December 2013, 20:43
any update or new plugins for avx?

qyot27
18th December 2013, 00:21
Hello, I did some testing playing with the instruction left by qyot27.

I got two questions.

* I compiled mplayer with fffmpeg support, avxframeserver works with a test file and starts mplayer correctly, now when i try to open it directly with mplayer, it fails while it works if i use ffmpeg to encode directly..

avxFrameServer version.avs # works
mplayer version.avs # does not works, open nothing.
ffmpeg -i version.avs version.avi (...) # works and encode correctly

Is it supposed to work like this?

* When the avisynth script has a wrong syntax or an error in it, the test will not work, but it will not display any error. Anyway to have the "error back"?
I have no idea what it's like for mplayer-svn. Namely because there used to be a discrete AviSynth demuxer in mplayer; this demuxer will not work with AvxSynth, because it specifically assumes AviSynth (and Windows). You could try giving it -demuxer lavf and see if that does anything.

mpv (and mplayer2) removed this discrete demuxer and rely only on libavformat's AviSynth capability. It should work in mpv just as it does in ffmpeg (or ffplay). Just don't try to seek in your script unless you're using FFmpeg 2.1.1.

esby
20th December 2013, 11:16
@qyot27: thx for the answer, the feature seems unsupported for mplayer, even with -demuxer lavf. Since I can open it with avxFrameServer it's not a big issue.

I also discovered that commenting out LOG_PATH=... in ~/.avxsynth/avxsynthlog.conf
displayed the information on the error in the script on stderr. Maybe this should be worth putting somewhere in the documentation...

esby
18th April 2014, 17:21
I am bumping the thread, but because I got two questions to ask:

* trying to use avxsynth again, the video will not load using mplayer and avxFrameServer.

(under debian 7 - 64 bits)


$ avxFrameServer version.avs
No valid avxsynth log path found in <snip>
INFO : Module=core::avxsynth,Address=core/src/core/avxsynth.cpp:1332,Type=Info,Message=Loading core built-in plugins
INFO : Module=builtinfuncs::entryPoint,Address=builtinfunctions/src/AllBuiltInPluginsEntryPoint.cpp:649,Type=Info,Message=AddAviSynthBuiltInFunctions
INFO : Module=core::avxsynth,Address=core/src/core/avxsynth.cpp:783,Type=Info,Message=StringDump: Allocating new stringblock.
INFO : Module=core::avxsynth,Address=core/src/core/avxsynth.cpp:1219,Type=Info,Message=Plugins Dir: /opt/ffmpeg/lib/avxsynth/
INFO : Module=core::avxsynth,Address=core/src/core/avxsynth.cpp:1219,Type=Info,Message=Plugins Dir: /opt/ffmpeg/lib/avxsynth/
INFO : Module=core::avxsynth,Address=core/src/core/avxsynth.cpp:1219,Type=Info,Message=Plugins Dir: /opt/ffmpeg/lib/avxsynth/
INFO : Module=core::avxsynth,Address=core/src/core/avxsynth.cpp:1491,Type=Info,Message=Examining plugin /opt/ffmpeg/lib/avxsynth//libavxframecapture.so
INFO : Module=core::avxsynth,Address=core/src/core/avxsynth.cpp:341,Type=Info,Message=Prescanning plugin: /opt/ffmpeg/lib/avxsynth//libavxframecapture.so
INFO : Module=core::avxsynth,Address=core/src/core/avxsynth.cpp:1491,Type=Info,Message=Examining plugin /opt/ffmpeg/lib/avxsynth//libavxsubtitle.so
INFO : Module=core::avxsynth,Address=core/src/core/avxsynth.cpp:341,Type=Info,Message=Prescanning plugin: /opt/ffmpeg/lib/avxsynth//libavxsubtitle.so
INFO : Module=core::avxsynth,Address=core/src/core/avxsynth.cpp:1491,Type=Info,Message=Examining plugin /opt/ffmpeg/lib/avxsynth//libautocrop.so
INFO : Module=core::avxsynth,Address=core/src/core/avxsynth.cpp:341,Type=Info,Message=Prescanning plugin: /opt/ffmpeg/lib/avxsynth//libautocrop.so
INFO : Module=core::avxsynth,Address=core/src/core/avxsynth.cpp:1491,Type=Info,Message=Examining plugin /opt/ffmpeg/lib/avxsynth//libavxffms2.so
INFO : Module=core::avxsynth,Address=core/src/core/avxsynth.cpp:341,Type=Info,Message=Prescanning plugin: /opt/ffmpeg/lib/avxsynth//libavxffms2.so
INFO : Module=core::avxsynth,Address=core/src/core/avxsynth.cpp:1219,Type=Info,Message=Plugins Dir: /opt/ffmpeg/lib/avxsynth/
INFO : Module=core::expression,Address=core/src/core/parser/expression.cpp:551,Type=Info,Message=Call: version
INFO : Module=core::text-overlay,Address=core/src/filters/text-overlay.cpp:1206,Type=Info,Message=ApplyMessage::ApplyMessage
INFO : Module=appInterface,Address=frameserverlib/src/avxSynthAppInterface.cpp:193,Type=Info,Message=MPlayer command line: mplayer -flip -demuxer rawvideo -rawvideo w=896:h=176:format=bgr24 - 1> /dev/null
No stream found.
ERROR : Module=appInterface,Address=frameserverlib/src/avxSynthAppInterface.cpp:213,Type=Error,Message=mplayer process exited
INFO : Module=core::avxsynth,Address=core/src/core/avxsynth.cpp:769,Type=Info,Message=StringDump: DeAllocating all stringblocks.

Now ffmpeg works and encodes correctly the version.avs file.
Any explanation of what is happening? I compiled again *everything*, no success here... (I have more or less the same configuration at home and it works fine ~~)
Edit: I updated mplayer (was using svn version) and it is working again.


* I am lacking a correct deinterlacer, I am trying to handle rushs coming from my Panasonic GH2 camera, (avchd) which are interlaced, I'd use yadiff under ffmpeg or avisynth to treat these, but I can't with avxsynth, as far I know.

How hard would it be to create an avxsynth external plugin for that purpose? Is there any documentation on this? Any alternate options (eg: using ffmpeg to deinterlace or coding something that relay on ffmpeg like ffmpegsource)?

Thanks in advance.

qyot27
19th April 2014, 07:39
One of the few plugins that was ported to AvxSynth was Decomb (http://mujintou.org.uk/avxsynth), so you could try to do field matching before or in lieu of giving it to FFmpeg's yadif filter.


avxFrameServer has been pretty much irrelevant for a little over a year, simply because the support in x264 and FFmpeg have eclipsed it. If you need to pipe the script around (which is all avxFrameServer does), use FFmpeg with -f yuv4mpegpipe to do it.

ffmpeg -i version.avs -f yuv4mpegpipe - | mplayer -


I'll also reiterate that mpv (http://mpv.io/) will work fine for playing back the scripts (with audio, too) if you build it against the working copy of FFmpeg.

esby
21st April 2014, 02:51
Assuming FieldDeinterlace must be used in this case, but it is just crashing (SIGSEV) when I try to use it.
I guess I'll have to transcode and deinterlace the videos using ffmpeg (since I want to do transitions...) prior loading them with avxsynth...

videopolis
30th April 2014, 17:52
OK, dumb question, but is it possible to use any of Tritical's filters (specifically looking for TIVTC package) in avxsynth? Based on previous posts, it sounds like only Decomb has been ported, but not sure if that's current info.

I've always found tfm + tdecimate to be superior to telecide + decimate in avisynth, so wondering if I can harness that power in Linux.

magnatique
12th May 2014, 17:23
Thanks for the info, helped getting things setup and almost working perfect ;)

my goal is simply to encode an avs from ffmpeg .

Right now, this works OK I am able to load a video + audio, audiodub them and feed it to ffmpeg.

However, whenever I try to trim something that starts 15 frames after the beginning, it seems to be redoing the index (or at least, it takes a long while before the encode starts).

if on the other hand I use trim(0,100) for example, the encode starts right away.

Eventually the encode does work, but it's either reading the full video / redoing the index each time.

Maybe when doing a trim from 0 to 14 frames it doesn't use the index and starts fast, but anything after that will use the index?

When building the ffms2 package from Git, I am getting the following error though ... could be the cause :


ffms2 # make
CXXLD src/index/ffmsindex
libtool: link: warning: `-version-info' is ignored for programs
src/core/.libs/libffms2.so: undefined reference to `av_frame_free'
src/core/.libs/libffms2.so: undefined reference to `av_frame_unref'
src/core/.libs/libffms2.so: undefined reference to `av_frame_alloc'
collect2: ld returned 1 exit status
make: *** [src/index/ffmsindex] Error 1


any help is appreciated :)

EDIT1 : I just launched another test with normal length files (10-20 mins files) being joined as such :
fadeio(out1,10).trim(100,200)++fadeio(out2,10).trim(100,200)++fadeio(out3,10).trim(100,200)++fadeio(out4,10).trim(100,200)++fadeio(out5,10).trim(100,200)


the actual index seems all to have been generated within 3-5 mins total for the 5 files, so it doesn't seem to be a prob with generating the index but moreso the trim that might be loading all of the video beforehand?

it took about 24mins to start encoding, compared to instant if I take off the trims.


When doing a test with a <60s file, it goes through with the encode eventually, but taking a while.

with a 19 seconds sample, it took 13s to start encoding.
with a 73s sample, it took 54.6s to start encoding

I tried with audio joined through audiodub on the 73s sample, it took 55s so negligible difference.

EDIT 2 :
Actually, none of these encode anything after a more thorough review.,,

then end with an unknown error occurred.

I did some more tests, for instance using a trim(0,100) everywhere and this works 100%.

However, if I use trim(0,100) then a trim(100,200) then a trim(0,100) again, it will start encoding instantly on the first portion, but then stops at the second one AND fail with error : FFAudioSource: ReadPacket unexpectedly failed to read a packet


If I remove the audio part, there's no error in ffmpeg but it doesn't process the frames with the trim starting at 100

qyot27
17th May 2014, 02:12
Thanks for the info, helped getting things setup and almost working perfect ;)

my goal is simply to encode an avs from ffmpeg .

Right now, this works OK I am able to load a video + audio, audiodub them and feed it to ffmpeg.

However, whenever I try to trim something that starts 15 frames after the beginning, it seems to be redoing the index (or at least, it takes a long while before the encode starts).

if on the other hand I use trim(0,100) for example, the encode starts right away.

Eventually the encode does work, but it's either reading the full video / redoing the index each time.

Maybe when doing a trim from 0 to 14 frames it doesn't use the index and starts fast, but anything after that will use the index?

When building the ffms2 package from Git, I am getting the following error though ... could be the cause :


ffms2 # make
CXXLD src/index/ffmsindex
libtool: link: warning: `-version-info' is ignored for programs
src/core/.libs/libffms2.so: undefined reference to `av_frame_free'
src/core/.libs/libffms2.so: undefined reference to `av_frame_unref'
src/core/.libs/libffms2.so: undefined reference to `av_frame_alloc'
collect2: ld returned 1 exit status
make: *** [src/index/ffmsindex] Error 1


any help is appreciated :)

EDIT1 : I just launched another test with normal length files (10-20 mins files) being joined as such :
fadeio(out1,10).trim(100,200)++fadeio(out2,10).trim(100,200)++fadeio(out3,10).trim(100,200)++fadeio(out4,10).trim(100,200)++fadeio(out5,10).trim(100,200)


the actual index seems all to have been generated within 3-5 mins total for the 5 files, so it doesn't seem to be a prob with generating the index but moreso the trim that might be loading all of the video beforehand?

it took about 24mins to start encoding, compared to instant if I take off the trims.


When doing a test with a <60s file, it goes through with the encode eventually, but taking a while.

with a 19 seconds sample, it took 13s to start encoding.
with a 73s sample, it took 54.6s to start encoding

I tried with audio joined through audiodub on the 73s sample, it took 55s so negligible difference.

EDIT 2 :
Actually, none of these encode anything after a more thorough review.,,

then end with an unknown error occurred.

I did some more tests, for instance using a trim(0,100) everywhere and this works 100%.

However, if I use trim(0,100) then a trim(100,200) then a trim(0,100) again, it will start encoding instantly on the first portion, but then stops at the second one AND fail with error : FFAudioSource: ReadPacket unexpectedly failed to read a packet


If I remove the audio part, there's no error in ffmpeg but it doesn't process the frames with the trim starting at 100
As per the issue on Github (https://github.com/FFMS/ffms2/issues/151), the FFMS2 compilation issue is most likely due to a library/header mismatch.

But you're not providing other necessary information: FFmpeg/Libav version, which distro, the full script. Whether or not you rebuilt avxffms2 after building FFMS2 from Git...

Remember, it's far less of a hassle to just use ffmsindex -t -1 inputfile.ext before trying to load the script anywhere than letting it generate when the script loads.

Sm3n
13th August 2014, 20:15
Hi folks,

I would like some details about TIVTC-Linux: https://github.com/fundies/TIVTC-linux

Do you have any idea if it's compatible with the last avxsynth and how to use it? Someone already asked on the git, but still no answer.
If not, what are you using to perform IVTC? manma wrote about decomb I know. (I'm using a dedicated server without graphic interface, debian weezy)

cheers

Myrsloik
13th August 2014, 21:21
Hi folks,

I would like some details about TIVTC-Linux: https://github.com/fundies/TIVTC-linux

Do you have any idea if it's compatible with the last avxsynth and how to use it? Someone already asked on the git, but still no answer.
If not, what are you using to perform IVTC? manma wrote about decomb I know. (I'm using a dedicated server without graphic interface, debian weezy)

cheers

1. That repository is just the windows version created by someone without the skills and/or motivation to follow through with a port.
2. If you want a TIVTC like filter on linux there's VIVTC (TIVTC lite) available as an integrated filter in FFmpeg and also included with VapourSynth.
3. Just let AvxSynth rest in peace, FFmpeg can do just about everything on AvxSynth can on its own...

Sm3n
13th August 2014, 23:24
First of, FFMpeg has some issues for decoding .mpv (MPEG2 HDTV) with glitch and broken frames.

[mpeg2video @ 0x2484f20] ac-tex damaged at 14 6700:23:53.84 bitrate=1036.2kbits/s dup=1 drop=0
[mpeg2video @ 0x2484f20] Warning MVs not available
[mpeg2video @ 0x2484f20] concealing 240 DC, 240 AC, 240 MV errors in B frame

It results that the encode ends prematurely. :/

Secondly, I'm aware that ffmpeg can deal with that but here is a thing. I want to encode using the tMod version of x264 through .avs.
You see know why I need to IVTC in .avs. Because I can't compile ffmpeg with tMod support. I must to patch ffmpeg first (like that: https://astrataro.wordpress.com/2014/03/17/x264-rev2409-tmod/#comment-783) but it's out of date and some parametres are missing.

VapourSynth ins't available for Linux. Am I right?

TheFluff
14th August 2014, 01:09
VapourSynth ins't available for Linux. Am I right?

you're wrong

macromizer
14th August 2014, 15:11
First of, FFMpeg has some issues for decoding .mpv (MPEG2 HDTV) with glitch and broken frames.



It results that the encode ends prematurely. :/

AFAIK, Avxsynth is using ffmpeg for decoding. Other than ffmpeg/libav what else could it possible be using for decoding?

VapourSynth ins't available for Linux. Am I right?

No, you're not.

videoh
14th August 2014, 15:43
AFAIK, Avxsynth is using ffmpeg for decoding. Other than ffmpeg/libav what else could it possible be using for decoding? That is determined by the source filter, not by the Avxsynth core. There is nothing to stop a GPU-enabled source filter such as DGSource() from being implemented for Avxsynth. The makers of Avxsynth, however, were cloud focused and needed distributed processing, and so avoided hardware-dependent source filters.

macromizer
14th August 2014, 17:13
That is determined by the source filter, not by the Avxsynth core.

There's only one source filter for Avxsynth that I've ever seen which is FFMS2. Which is as the name implies an ffmpeg/libav source filter.

There is nothing to stop a GPU-enabled source filter such as DGSource() from being implemented for Avxsynth.

Sure in theory, but one doesn't seem to exist which as I said means it could only be using ffmpeg/libav. My question was relating to the actual current state of Avxsynth not some hypothetical state of having some GPU-decoding source filter.

videoh
14th August 2014, 18:41
Point taken, but still an arguably wrong thing was implied (that Avxsynth itself determines the used decoder) and precision is important.

Sm3n
14th August 2014, 19:18
AFAIK, Avxsynth is using ffmpeg for decoding. Other than ffmpeg/libav what else could it possible be using for decoding?

I know but to deal with this issue, the only thing I can do (and it worked, I did the entire encode without issue) is using FFVideoSource() in .avs. If I do the encode through ffmpeg, it fails everytime.

No, you're not.
you're wrong

I don't see anything regarding linux on the official website. Do I need to use wine to use it?

SamKook
14th August 2014, 19:31
I don't see anything regarding linux on the official website. Do I need to use wine to use it?

If you look at the Installation Instructions on the website, it says the following:
"If you’re not on Windows you have to compile VapourSynth yourself. Check out the source and follow the instructions in the INSTALL file."

macromizer
14th August 2014, 19:36
I don't see anything regarding linux on the official website.

The Vapoursynth discussion thread mentions it a lot.

Do I need to use wine to use it?

No. You need to either compile it yourself or find someone who has created a package for your distro.

Sm3n
14th August 2014, 19:50
Yep thank you guys, I found it. Here is the step by step: https://forum.doom9.org/showpost.php?p=1643069&postcount=947 (thx qyot27)

Cheers

jammupatu
9th December 2014, 20:18
Hi,

got avxsynth, ffmpeg and ffms2 compiled ok (all Git versions) on Debian Jessie but when running a simple script:


V=FFVideoSource("video.ts")
A=FFAudioSource("video.ts")
AudioDub(V,A)


I get the error:

avs [error]: FFAudioSource: No audio track found


If I demux the TS stream and input the tracks separately, it works. The above script does work on Windows OK.

Any ideas of hope on how to proceed?

EDIT: noticed that the TS-stream has multiple tracks, trying to figure out how to extract the correct one. Here are the streams:


Stream #0:0[0x124]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(tv), 720x576 [SAR 16:11 DAR 20:11], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x125](fin): Audio: mp2 ([4][0][0][0] / 0x0004), 48000 Hz, stereo, s16p, 256 kb/s
Stream #0:2[0x129](dut): Audio: mp2 ([4][0][0][0] / 0x0004), 48000 Hz, stereo, s16p, 128 kb/s
Stream #0:3[0x12b](swe): Audio: mp2 ([4][0][0][0] / 0x0004), 48000 Hz, stereo, s16p, 256 kb/s
Stream #0:4[0x127](fin): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
Stream #0:5[0x128](dut): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)


BR,

-J-

qyot27
10th December 2014, 00:55
How are you creating the script and index?

Create the index first, with ffmsindex:
ffmsindex -t -1 video.ts

Then create the script (or at least, create the index with ffmsindex before you attempt to run the script in anything). I'd suggest using mpv (or ffplay) to test whether the script is actually outputting the audio.

By default, FFAudioSource outputs the first audio track found. But when you created the index, it indexed all the audio tracks (that's what the -t -1 controls), and you can use track= to select the right one to use:

v=FFVideoSource("video.ts")
a=FFAudioSource("video.ts",track=2) # would select the Dutch track
AudioDub(v,a)



My guess as to why it's doing this is that it's related to user permissions, and the order that FFVideoSource and FFAudioSource are called. It's fairly well-known that if you're letting the script generate the index on open, FFAudioSource should be first to avoid having to re-generate it after FFVideoSource has generated an audio-less index. User permissions may factor into this because the index generated by FFVideoSource may be getting locked (either by the filesystem's rwx flags or by x264), preventing the audio pass from running and causing the error, whereas on Windows this either doesn't normally happen or you've probably previewed the script already with a media player or other tool and so the index knows the audio is there (however inefficiently it got there). Generating the index first with ffmsindex avoids this scenario, so it doesn't matter what order FFVideoSource or FFAudioSource are in.

jammupatu
10th December 2014, 10:50
Hi,

yes, on Windows I've always just used Virtualdub to index it, not ffindex - lazy. Now I ran, on Linux that is, the indexing manually and it gives me grief on two MPEG-TS sources:


$ ffmsindex -t -1 video.ts
Indexing, please wait... 100%
Indexing error: Audio decoding error


The sources are passthrough recordings through Tvheadhend.

Before I read your post I tried

a=FFAudioSource("video.ts",track=1)

with indexing through Virtualdub and it worked on Windows, not on Linux. I now understand that this is to be expected. I also changed the script so that audio gets loaded first and it doesn't work on Linux but, as expected, works on Windows.

Currently reading up more on FFIndex since that seems to be the culprit since it is erroring out.

EDIT: tested indexing (same sources) on 32b ICL compiled version of FFMS2 2.20 on Windows and the indexing went through fine with "ffmsindex.exe -t -1 video.ts". I've got Haali Media Splitter on my Windows.

BR,

-J

qyot27
10th December 2014, 20:30
On Windows, test creating the index with ffmsindex -t -1 -m lavf video.ts and see if it also causes the problem (or try the C-plugin; see the latest posts on the FFmpegSource thread). If it still does, then the issue may not be FFMS2 at all, but libavformat's TS demuxer.

There's a reason that the advice for dealing with TS files is often to just remux them into Matroska with mkvmerge and then use the MKV file with FFMS2.

jammupatu
10th December 2014, 21:03
Hi, ran that quick test on Windows and it errors out with "ffmsindex.exe -f -t -1 -m lavf video.ts".

I did manage to get a readable lafv index and avs combo with playing around with "-s 3" parameter and stream 2. However it currently isn't a proper way to go since all test encodes went out of sync even with AlignedSplice.

I am currently trying to wrap my head around this issue and one of the things I'm currently focused is working on MKV-files instead of TS-files. I switched to MKV recording in Tvheadend for the time being as well.

The main goal I'm trying to accomplish is the elusive Comskip automatic commercial skipping and a post processing script with as best as possible scenario of a ad-free encode in x264.

I'll post here if I have more questions or I actually found out a way to utilise avxsynth and Comskip. Currently, after hours of tinkering I am quite tired and I need a break to be able to form solid tests and concepts.

Coming out of familiar Windows-based Avisynth process with VirtualDub to ffmpeg / mencoder / avxsynth cli on Linux isn't a task one can accomplish in few hours. =)

Thank you for your advice this far.

BR,

-J

qyot27
11th December 2014, 00:21
Just one thing: ditch mencoder if you can. mpv's encoding capabilities should be fine, as the encoding module isn't hamstrung like mencoder was. The few things that mencoder could do that mpv still can't - mainly, direct stream copy - are better done through ffmpeg itself anyway.

jammupatu
11th December 2014, 13:22
Just one thing: ditch mencoder if you can. mpv's encoding capabilities should be fine, as the encoding module isn't hamstrung like mencoder was. The few things that mencoder could do that mpv still can't - mainly, direct stream copy - are better done through ffmpeg itself anyway.

Hi,

thanks for the advice. I'm currently using it for EDL-lists from Comskip. Mencoder does the cutting. I'll check out mpv and its EDL support / other cutting capabilities. First idea was not to use EDL at all and do all the things via Avxsynth on Linux since Comskip produces a useable .avs file.

Yesterday I did manage to produce a cut copy using lossless intermediate files and finally compressing the final copy w/o commercials.

Anyhow, I'm blabbering now. Over and out.

EDIT: Have to add a bit more blabber. Just got mpv running and rolling. Man, this help system is already making a really good impression. Really thought out.

BR,

-J

jammupatu
4th January 2015, 14:23
Hi,

since earlier in this thread there is a linux port for decomb, I'd figure try my luck: anyone got a non-crashing build of the library (64b)? For me, CMake and make goes through fine but the library is a lottery; it seg faults like every second time or so. Running Debian 8 testing, Jessie.

BR,

-J

nel-son
11th April 2015, 16:36
i've installed avxsynth for the first time to find an alternative to avisynth on linux. the install worked fine. as i could read here https://github.com/avxsynth/avxsynth/wiki/AvxSynth-Frame-Server i can run a video with mplayer with this command

./avxSynthFrameServer testavxsynthscript.avs

but there is no file called 'avxSynthFrameServer'. i've tried the file avxFrameServer in "~/avxsynth/apps/avxframeserver/" with the following command

./avxSynthFrameServer "/media/path/to/avs file.avs"

but it doesn't work. nothing happens (no error).

in windows i opened avs files with the programs directly. this doesn't work with avxsynth on linux?

edit
it works with avxedit.

qyot27
11th April 2015, 21:30
Use an FFmpeg (or Libav) that was configured with --enable-avisynth, or x264. Or an mpv linked against aforementioned FFmpeg/Libav if you want to watch the scripts. avxFrameServer and AVXEdit are useless and/or broken and were superseded long ago. If you need an editor with AviSynth highlighting support (which AVXEdit doesn't do, I might add), use Atom and install the AviSynth module.

nel-son
22nd April 2015, 18:34
but with atom i can't see the results of my changes like with avspmod? the is no preview function in atom?

qyot27
22nd April 2015, 23:30
You preview by playing the script in mpv like you would play any other media file. If you have a terminal open and have played it at least once, the action is as simple as pressing the Up arrow then hitting Enter.

nel-son
23rd April 2015, 16:32
i can't open the avs with mpv. there is the error

Failed to recognize file format.

qyot27
24th April 2015, 04:54
Then rebuild it, like I said before:
Use an FFmpeg (or Libav) that was configured with --enable-avisynth, or x264. Or an mpv linked against aforementioned FFmpeg/Libav if you want to watch the scripts.

FredMSloniker
27th August 2015, 21:36
I'm having an issue compiling AVXSynth for Kubuntu. As far as I can tell, this is the relevant part of the output of 'make':

/bin/sed: can't read Code/avxsynth/avxutils/libavxutils.la: No such file or directory
libtool: link: `Code/avxsynth/avxutils/libavxutils.la' is not a valid libtool archive
Makefile:826: recipe for target 'libavxsynth.la' failed
make[1]: *** [libavxsynth.la] Error 1
make[1]: Leaving directory '/home/bubblegum/Source Code/avxsynth/avxsynth'
Makefile:490: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

The file does exist, so I don't know what the issue is. Help?

E: I just figured it out. Make doesn't like 'Source Code' as a folder name. I'll change it and try again.

Sm3n
29th August 2015, 12:35
Hi there :)

I looked for it for long time now but is it possible to add a watermark using overlay for instance or using a source option?
I believe the first option is nope because not built in.

Any confirmation and/or advice is well welcome. :)

cheers

nel-son
3rd October 2015, 10:24
hi,

i've read in an other thread that there is a install howto for avxsynth in the thread here (the howto on githib seems to be outdated).

what means "build mpv against ffmpeg"? so that mpv used this ffmpeg version at very start? how can i do this? is there any howto for that? (normally i install my software with apt-get and don't build it from source).

qyot27
5th October 2015, 00:35
The FFmpeg package recently added back to Debian and Ubuntu are configured with --enable-avisynth, as last I was aware. So pulling the -dev packages for it in and building mpv against them should enable it. If there's an mpv package that explicitly uses the FFmpeg -dev packages, that'd work too. It looks like Debian unstable (and Ubuntu 15.10 by extension) has mpv using the -ffmpeg packages by default, so it may start being there automatically pretty soon. At that point you'd only have to handle installing AvxSynth itself, unless you grab it from a PPA or something.

nel-son
23rd October 2015, 15:56
now i've installed avxsynth, ffmpeg with option --enable-avisynth and mpv build against ffmpeg. but i can't play an avs file. i've tried a mp4 file and the example from avxsynth homepage with "Version()" in avs file. both doesn't work. maybe the mp4 doesn't because of missing ffms2. should "directshowsource()" work on linux?

is there any way to check whether mpv and ffmpeg are working as they should to use avxsynth?

i also tried avxedit, but also mplayer can't play the video and the little example. but mplayer was installed in ubuntu 14.04 and maybe it's build against libav?

qyot27
23rd October 2015, 18:27
The *only* source filter that exists for AvxSynth is FFMS2. But since Version supposedly doesn't work, did you run sudo ldconfig after installing AvxSynth?

nel-son
25th October 2015, 14:26
i could play a avs file with avisynth installed with wine. but thats not a good solution because i can't open files with "open with".

did you run sudo ldconfig after installing AvxSynth

no.

But since Version supposedly doesn't work

i've tried to install ffms2 like you has explained here http://forum.doom9.org/showpost.php?p=1643184&postcount=193, but there is a problem with make:

CXX src/core/audiosource.lo
CXX src/core/ffms.lo
CXX src/core/filehandle.lo
CXX src/core/indexing.lo
CXX src/core/lavfaudio.lo
CXX src/core/lavfindexer.lo
CXX src/core/lavfvideo.lo
CXX src/core/track.lo
src/core/track.cpp: In function ‘FrameInfo {anonymous}::ReadFrame(ZipFile&, const FrameInfo&, FFMS_TrackType)’:
src/core/track.cpp:33:14: warning: missing initializer for member ‘FrameInfo::PTS’ [-Wmissing-field-initializers]
FrameInfo f{};
^
src/core/track.cpp:33:14: warning: missing initializer for member ‘FrameInfo::FilePos’ [-Wmissing-field-initializers]
src/core/track.cpp:33:14: warning: missing initializer for member ‘FrameInfo::SampleStart’ [-Wmissing-field-initializers]
src/core/track.cpp:33:14: warning: missing initializer for member ‘FrameInfo::SampleCount’ [-Wmissing-field-initializers]
src/core/track.cpp:33:14: warning: missing initializer for member ‘FrameInfo::OriginalPos’ [-Wmissing-field-initializers]
src/core/track.cpp:33:14: warning: missing initializer for member ‘FrameInfo::FrameType’ [-Wmissing-field-initializers]
src/core/track.cpp:33:14: warning: missing initializer for member ‘FrameInfo::RepeatPict’ [-Wmissing-field-initializers]
src/core/track.cpp:33:14: warning: missing initializer for member ‘FrameInfo::KeyFrame’ [-Wmissing-field-initializers]
src/core/track.cpp:33:14: warning: missing initializer for member ‘FrameInfo::Hidden’ [-Wmissing-field-initializers]
src/core/track.cpp: In constructor ‘FFMS_Track::FFMS_Track(ZipFile&)’:
src/core/track.cpp:85:17: warning: missing initializer for member ‘FrameInfo::PTS’ [-Wmissing-field-initializers]
FrameInfo temp{};
^
src/core/track.cpp:85:17: warning: missing initializer for member ‘FrameInfo::FilePos’ [-Wmissing-field-initializers]
src/core/track.cpp:85:17: warning: missing initializer for member ‘FrameInfo::SampleStart’ [-Wmissing-field-initializers]
src/core/track.cpp:85:17: warning: missing initializer for member ‘FrameInfo::SampleCount’ [-Wmissing-field-initializers]
src/core/track.cpp:85:17: warning: missing initializer for member ‘FrameInfo::OriginalPos’ [-Wmissing-field-initializers]
src/core/track.cpp:85:17: warning: missing initializer for member ‘FrameInfo::FrameType’ [-Wmissing-field-initializers]
src/core/track.cpp:85:17: warning: missing initializer for member ‘FrameInfo::RepeatPict’ [-Wmissing-field-initializers]
src/core/track.cpp:85:17: warning: missing initializer for member ‘FrameInfo::KeyFrame’ [-Wmissing-field-initializers]
src/core/track.cpp:85:17: warning: missing initializer for member ‘FrameInfo::Hidden’ [-Wmissing-field-initializers]
src/core/track.cpp: In member function ‘void FFMS_Track::Write(ZipFile&) const’:
src/core/track.cpp:105:17: warning: missing initializer for member ‘FrameInfo::PTS’ [-Wmissing-field-initializers]
FrameInfo temp{};
^
src/core/track.cpp:105:17: warning: missing initializer for member ‘FrameInfo::FilePos’ [-Wmissing-field-initializers]
src/core/track.cpp:105:17: warning: missing initializer for member ‘FrameInfo::SampleStart’ [-Wmissing-field-initializers]
src/core/track.cpp:105:17: warning: missing initializer for member ‘FrameInfo::SampleCount’ [-Wmissing-field-initializers]
src/core/track.cpp:105:17: warning: missing initializer for member ‘FrameInfo::OriginalPos’ [-Wmissing-field-initializers]
src/core/track.cpp:105:17: warning: missing initializer for member ‘FrameInfo::FrameType’ [-Wmissing-field-initializers]
src/core/track.cpp:105:17: warning: missing initializer for member ‘FrameInfo::RepeatPict’ [-Wmissing-field-initializers]
src/core/track.cpp:105:17: warning: missing initializer for member ‘FrameInfo::KeyFrame’ [-Wmissing-field-initializers]
src/core/track.cpp:105:17: warning: missing initializer for member ‘FrameInfo::Hidden’ [-Wmissing-field-initializers]
src/core/track.cpp: In lambda function:
src/core/track.cpp:243:34: error: ‘av_rescale’ was not declared in this scope
return av_rescale(Dur, Num, Den);
^
src/core/track.cpp: In member function ‘void FFMS_Track::FillAudioGaps()’:
src/core/track.cpp:247:73: error: ‘const void ExpectedSamples’ has incomplete type
const auto ExpectedSamples = DurationToSamples(back().PTS - front().PTS);
^
src/core/track.cpp:269:74: error: ‘const void ExpectedStartSample’ has incomplete type
const auto ExpectedStartSample = DurationToSamples(Frame.PTS - FirstPTS);
^
make: *** [src/core/track.lo] Fehler 1

qyot27
25th October 2015, 19:12
You have to run sudo ldconfig after installing any shared libraries (or have checkinstall do it at install time with the --addso=yes option), otherwise nothing will work.

nel-son
27th October 2015, 15:21
the problem isn't avxsynth, the problem is ffms2. make doesn't work. i've installed avxsynth new and made 'sudo ldconfig" after installing avxsynth. but i have the same problem with ffms2 again.

at the moment i have installed mpv and ffmpeg and both working with avisynth+wine and i've installed avxsynth, but i can't test it because of missing ffms2.