Page 1 of 4

Subtitles

PostPosted: Wed Jan 19, 2011 9:20 am
by b1ackjosh
Hey everybody I'm new to SubSonic and I have a quick question about Subtitles streaming videos.
#1 Is it possible...

and Second I found a request for it in the new feature's section of the forum but it said the post was put up back in 09' which I thought was kind of odd.

Anyway thanks for your help in advance, and I apologize if this has been asked before I just couldn't find anything in the forum.

PostPosted: Thu Jan 20, 2011 7:51 am
by b1ackjosh
I apologize, I probably should have given more information.

I'm currently trying to play mkv files with separate srt files through subsonic. Is this possible without having to convert the files to an avi format?

Same question

PostPosted: Sun Jan 30, 2011 1:21 pm
by gornack
Hello everyone,

This is relevant to my interest, too.
I'd like to stream .mkv or .avi files with .srt subtitles files attached (i.e. same filename, different extension).

I would be very happy to be able to see the subtitles in the video stream !

PostPosted: Sun Jan 30, 2011 2:30 pm
by b1ackjosh
after some research I found a jwplayer plugin called Captions:

http://www.longtailvideo.com/AddOns/get ... 84&vid=271

It looks simple enough to plug in to a page... problem is that I don't know how to code in java, so these files all look familiar to me... but not enough to make changes without potentially breaking everything lol. If anyone can think of a way to implement this i wanna hear about. :D

PostPosted: Mon Jan 31, 2011 6:45 am
by b1ackjosh
So I've got it working... but I still need a little help.

I found this file:

C:\subsonic\jetty\****\webapp\WEB-INF\jsp\videoPlayer.jsp

Inside is the var for "flashvars" which is the variable settings for jwplayer.

Code: Select all
            var flashvars = {
                id:"player1",
                skin:"<c:url value="/flash/whotube.zip"/>",
                plugins:"captions-2",
            "captions.back": true,
            "captions.file": "<c:url value=""/>",
            "captions.fontsize": "10",
                screencolor:"000000",
                controlbar:"over",
                autostart:"false",
                bufferlength:3,
                backcolor:"<spring:theme code="backgroundColor"/>",
                frontcolor:"<spring:theme code="textColor"/>",
                provider:"video"
            };


Using this and setting an absolute path for the .srt file i'm using to test works. But I want to be able to use it without having to edit the embed code every time.

So I'm wondering if anyone know's the variable that subsonic use's to find specific files to play. I'm thinking it may be possible to use that same variable to tell the captions plugin where the subtitle is located. Though I probably won't be able to use the same variable i'd like to at least be able to find an example of it and make an attempt to put it in to the embed code above. Any help is appreciated.

P.S. dear moderator(s) this probably classifies as a mod... please feel free to move it there if you wish.

PostPosted: Wed Feb 02, 2011 2:51 pm
by gornack
Hi b1ackjosh,

I've been testing your solution, and it has been working fine for me too.
It worked with a relative path (the root being "/var/subsonic/jetty/2078/webapp" on my box).

But I've not been able to make it work with an absolute local path (like "/home/username/mysubtitle.srt").
Were you able to do that ?

And like you, I'm also still looking for a solution to make it work with a variable file name...

PostPosted: Fri Feb 04, 2011 4:50 pm
by b1ackjosh
Hey gornack,

Yeah but that videoPlayer.jsp file is only able to see back to this directory.

/var/subsonic/jetty/2078/webapp

So if you set up a static link it can only see that far back.

If you create a directory in there and put a .srt file, all you'll need to do is set up the "caption.file" link and you'll see it works...

Problem with that is... I kind of don't want my subtitles in that directory... it would probably be better if I could just have the subtitles in the same folder as the video I'm trying to watch, then set up some sort of variable to get the "captions.file" string to pick up files dynamically. But I just don't know enough about coding in java to set it right....

I'm glad somebody else is trying this though :)

PostPosted: Tue Feb 08, 2011 3:38 pm
by gornack
OK I'm exactly in the same situation as you are.
I'll try to be looking for a solution when I have a bit of spare time.

PostPosted: Tue Feb 08, 2011 8:00 pm
by gornack
Also, when seeking the movie, the subtitle starts off at the begining.
Do you have the same behaviour ?

PostPosted: Wed Feb 09, 2011 12:57 am
by b1ackjosh
Yes I also get this but it seems to be a limitation of the plugin.

PostPosted: Wed Feb 09, 2011 9:55 pm
by rumil
Hello guys,
I've made a quick and reeaally dirty patch to make subtitles work. It assumes subtitles are located in the same directory as the movie file and its name is the same as the movie file with but with srt extension.

The patch itself can be found here: http://dl.dropbox.com/u/6845714/subsonic-captions.diff

Since it modifies one java class I've made a war available here: http://dl.dropbox.com/u/6845714/subsonic.war

There still is the issue with seeking though...
In my spare time (if I have some ;-) ) I'll look into more proper solution.

As I've written, if someone wants working subtitles now - feel free to use the version I've provided, just remember it's more of a hack then a proper implementation.

EDIT:
Since it's my first post here: Sindre, Thank You for your fantastic work!! I've just found and set up Subsonic yesterday and I really love it!

PostPosted: Tue Feb 15, 2011 8:47 pm
by b1ackjosh
sorry... I'm still a bit of a noob at this can you tell me where I need to put this war file? and how to run the .diff file on linux command line(or windows)?

PostPosted: Wed Feb 16, 2011 7:33 pm
by rumil
Basically war is a zip file with whole subsonic app. I saw you are running jetty, so in your case stopping jetty (stopping subsonic) and then extracting war into /var/subsonic/jetty/2078/webapp should do (I don't really remember how jetty manages its webapps, just be sure that the directory structure of your subsonic and files you extract from my war are the same)

PostPosted: Fri Feb 18, 2011 12:54 pm
by badsanta
Hi i've been also working on the subtitles, i used the harcoding method, and i got it working now ...

But my hook is also really dirty :

    - I create a new subfolder name pipe on transcode folder.
    - In the transcode folder i put a perl script called perlhook.
    - in transcoding avi files step 1 i put this command line :
    Code: Select all
    perlhook %o %s %bk %w %h

[/code]

Perl Script :
Code: Select all

#!/usr/bin/perl -w
use strict;
use threads;
use Data::Dumper;

sub mythread($){
my $cmdline = shift;
open(STDERR, ">stderr.log" ) or die "cannot redirect stderr output in log file : $!\n";
#open F,">encoderlog.log";
#select F;
#print $cmdline;
system("$cmdline > encoder.log");
}


my $o = shift @ARGV;
my $file = shift @ARGV;
my $b = shift @ARGV;
my $width = shift @ARGV;
my $heigth = shift @ARGV;
$b=~s/k//;

system("killall -9 mencoder");


my $sub=$file;
$sub =~ s/\.avi/\.srt/;

my $pipename;
$pipename=sprintf("/var/subsonic/pipes/subpipe%4d",int(rand(10000)));
my $cmdline;


#print "mkfifo $pipename\n";

system("mkfifo $pipename");


#### HALF WORKING
$cmdline = "mencoder \"$file\" -of lavf -oac lavc -ovc lavc -lavcopts vcodec=h264:vbitrate=1000:mbd=2:cmp=2:subcmp=2:trell=yes:v4mv=yes:aic=2:vglobal= 1:aglobal=1:acodec=libmp3lame:abitrate=96  -srate 44100 -af lavcresample=44100 -forceidx -lavfopts format=flv -vf scale=$width:-3 -o $pipename";
####################

#### WORKING
$cmdline = "mencoder \"$file\" -of lavf -oac lavc -ovc lavc -lavcopts vcodec=flv:vbitrate=$b:acodec=libmp3lame:abitrate=96  -srate 44100 -af lavcresample=44100  -lavfopts format=flv -vf scale=$width:-3 -sub \"$sub\" -ffactor 10 -subfont-autoscale 3 -subfont-encoding unicode -subcp latin1 -subpos 95 -vf expand=0:-120:-1:-1 -o $pipename";
########################

my $thread1 = threads->new(\&mythread,$cmdline);

#print $cmdline."\n";
open F,">/var/subsonic/test.txt";
print F "perlhook $o $file $b $width $heigth\n";
print F $cmdline;
close F;

sleep(1);

#ffmpeg -ss %o -i %s -async 1 -b %bk -s %wx%h -ar 44100 -ac 2 -v 0 -f flv -

#print "Starting cat on $pipename";

open F,"<$pipename";

system("cat $pipename");
system("rm $pipename");



As you see it makes work mencoder with subsonic, all the success resides in making stdout and stderr not poluting output videos.

Another thing the subtitles options are set for me (french subtitles) it may not working with others languages.

Bye !

PostPosted: Tue Feb 22, 2011 3:24 am
by lotherius
So..... the short answer is... NO subtitle support at this time. Unless you're a programmer and willing to do it yourself.

This needs to be a high priority!

EDIT:
Hmm, and apparently the subtitles I'm not seeing are of a different sort than what's discussed here. Not getting subtitles from MKV files. Wonder if there's a fix for this?