H.264 and manual configuration

Forums / General Discussions / H.264 and manual configuration

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #7189
    milovan
    Participant

    I am currently evaluating free version before I move our office computers to Enterprise desktop version. In my thread https://www.nomachine.com/forums/topic/display-lag-performance-related there is a recommendation to give a try h264 as it gives performance increase up to 30%.

    I tried to implement this on one Windows 7 machine and one Linux Kubuntu 14.04 machine.I followed this article: https://www.nomachine.com/AR10K00696 for both machines as well as this article https://www.nomachine.com/AR10K00695 on Linux machine.

    Basically, on Windows I downloaded ffmpeg with shared option, copied from it libavcodec.dll and libavutil.dll into <install_path_of_nomachine>/bin.

    On Linux, I placed .so files into /usr/NX/lib and made sure permissions are exact like on other libs. Additionally, I also installed yasm for compiling from server article (which passed with no issues), as well as installing package h264enc (which is a shell script that makes it easy to encode DVD or video files to H.264; I read somewhere this package suggestion in search results) which pulls a few dependencies with codecs.

    On both machines I restarted noMachine service (even rebooted Windows 7). Of course before all this, I configured in NoMachine that preferred codec is H264.

    I tried to connect from Linux to Windows but Display -> Change Setting still shows VP8 codec. I also tried to connect from Windows to Linux and same situation. I read through NX logs but did not see anything strange nor any kind of a clue. I suspect that might be a problem in Kubuntu 14.04 which doesn’t have FFMPEG but its fork avconv (present on the machine) and that NoMachine possibly is looking for FFMPEG name rather than forked one, but I am not sure if that is a case.

    Any hints, tips, articles or similar how to overcome this problem (I am aware there is a easy solution like buying AVC Pack)? Did I make some mistake in configuration steps I made, or did something wrong? Is there a way to determine which machine has properly installed h264 support for NoMachine besides trying to connect two machines and checking Display -> Change settings? I would like to half a problem by finding out if I misconfigured workstation(s), or if it is a problem within NoMachine and 14.04 ffpeg aka avconv or something else.

    Thanks in advance.

    #7223
    fra81
    Moderator

    Hi milovan,

    please find my tips inline.

    Basically, on Windows I downloaded ffmpeg with shared option, copied from it libavcodec.dll and libavutil.dll into <install_path_of_nomachine>/bin.

    Did you download the Zeranoe ffmpeg build maybe? In this case you need to copy also swresample-1.dll, which is a additional dependency of that package.

    On Linux, I placed .so files into /usr/NX/lib and made sure permissions are exact like on other libs. Additionally, I also installed yasm for compiling from server article (which passed with no issues), as well as installing package h264enc (which is a shell script that makes it easy to encode DVD or video files to H.264; I read somewhere this package suggestion in search results) which pulls a few dependencies with codecs.

    What .so files did you copy? Please list the installation directory content: ‘ls -l /usr/NX/lib’. Note that in order to enable H.264 on the server, you need the x264 library modified by us. You can either download it from https://www.nomachine.com/opensource and build it from source as explained in the article, or install the AVC Pack. The h264enc package you mention would not help.

    I suspect that might be a problem in Kubuntu 14.04 which doesn’t have FFMPEG but its fork avconv (present on the machine) and that NoMachine possibly is looking for FFMPEG name rather than forked one, but I am not sure if that is a case.

    We didn’t test so far with avconv.

    Is there a way to determine which machine has properly installed h264 support for NoMachine besides trying to connect two machines and checking Display -> Change settings?

    There’s not, at the moment.

    Note that you need libx264 from our website on the server, ffmpeg on the client. If you need to connect also to the other direction and you want to use H.264 in both directions, you need libx264 and ffmpeg on both machines.

    #7224
    fra81
    Moderator

    Is there a way to determine which machine has properly installed h264 support for NoMachine besides trying to connect two machines and checking Display -> Change settings?

    Correction: when the x264 library loading fails on server side, you would find the following lines in the display server log (in /usr/NX/var/log/node/C-* dir on linux):

    Warning: Can’t load H.264 codec library.
    Warning: Child process 7807 exited with code 2, ‘No such file or directory’.

    #7280
    milovan
    Participant

    fra81, thanks for your response.

    Yes, I downloaded Zeranoe ffmpeg build. As per your instruction, I also copied swresample-1.dll. Lib names had “-<number>.dll” so I tried using with and without those additions in name (example: libav.dll and libav-56.dll). And still no luck. 🙁 I also installed Cygwin and compiled h.264 as per instructions for server host. None of this helped.

    On a Linux side, I did compiling per instructions for server host, and confirmed libs are moved on correct location with correct permissions. You asked me for a ls -l command output so here it is: http://pastie.org/10200853

    On Linux I also removed package h264enc as it would not help, like you said.

    Next, I was suspicious that Kubuntu’s change from ffmpeg to avconv (ffmpeg’s fork) might be a problem, so I went to FFMPEG site and found their original repository. I added repository and installed FFMPEG. I then tried again to connect to and from Linux to Windows station mentioned above, and in both ways I was getting still VP8 in Change settings.

    As per your second post (thanks for that tip!) I also checked logs both on Windows and Linux machine for any kind of mention that loading of h.264 lib failed. Unfortunately, no such log entries.  I manually went through logs and using commands find . | xargs grep ‘codec’ -sl and find . | xargs grep ‘H.264’ -sl on /usr/NX/var/log/node folder.

    I believe I tried everything and now I am without any new ideas what went wrong. I don’t believe manual configuration should be such a problematic procedure, so if you have any more tips / clues or anything that might help, I would be very grateful.

    Thanks in advance!

    #7302
    fra81
    Moderator

    Lib names had “-<number>.dll” so I tried using with and without those additions in name (example: libav.dll and libav-56.dll). And still no luck.

    That said for avcodec, how did you rename avutil? Maybe a screenshot of the content of your bin directory could help to clarify 🙂
    In any case, everything should work out of the box if you just copy the zaranoe libraries without renaming.

    On a Linux side, I did compiling per instructions for server host, and confirmed libs are moved on correct location with correct permissions. You asked me for a ls -l command output so here it is: http://pastie.org/10200853

    And here seems all correct.

    At this point you could send us the logs for further investigation. Please find the instructions in https://www.nomachine.com/DT04M00076. You can attach the logs here or send directly to forum[at]nomachine[dot]com.

Viewing 5 posts - 1 through 5 (of 5 total)

Closed because the user did not provide further feedback. Please notify us if you confirm that it is resolved or open a new topic if you have the same problem.