Brian,
I did some more experimenting -- see report below:
Subsonic's default (for example) "mp4 > flv" ffmpeg transcoding call is:
- Code: Select all
ffmpeg -ss %o -i %s -async 1 -b %bk -s %wx%h -ar 44100 -ac 2 -v 0 -f flv -
I suspected a problem with Subsonic ffmpeg calls stemming from the ffmpeg that is included with Subsonic not being able to find its "dynamic shared libraries" or .dylib files, since those files do not appear to exist in the same folder with ffmpeg itself:
/Library/Application Support/Subsonic/transcode
So I tried this: I made a backup copy of /Library/Application Support/Subsonic/transcode on my desktop and then hid its original ffmpeg file in a subfolder of /Library/Application Support/Subsonic/transcode itself. Then I copied another ffmpeg, along with its several .dylib files, from
/Users/eric/Desktop/kmttg_v0p7t/ffmpeg
to /Library/Application Support/Subsonic/transcode. (Fiddling around with the contents of /Library/Application Support/Subsonic/transcode required repeated authentications using my account password.) I next set up Subsonic, which was already running in Google Chrome on my server Mac, to use Player 17. That player still had active transcoding on for all video formats, using the above ffmpeg call. I then tried to play a video that had played successfully in Player 18. I got the same result as before I made the ffmpeg switch:
- Code: Select all
Video not found or access denied:
/stream?pathUtf8Hex=2f566f ... 6d7034&maxBitRate=1000&timeOffset=0&player=17
So I (still using the Subsonic web browser interface on the server Mac) clicked on the Subsonic logo at the upper left, to see the Subsonic log. Scrolling down to the most recent entries, I saw (just after trying to play "/Volumes/Songcatcher 2 2/Users/songster/Music/Main iTunes Library/iTunes Music/Movies/Little Big Man Intro.mp4" as "Movies/Little Big Man Intro.mp4" in Player 17):
- Code: Select all
[4/22/11 11:06:47 AM EDT] INFO PlaylistInputStream epstewart listening to "Movies/Little Big Man Intro.mp4"
[4/22/11 11:06:47 AM EDT] DEBUG TranscodeInputStream Starting transcoder: [/Library/Application Support/Subsonic/transcode/ffmpeg] [-ss] [0] [-i] [/Volumes/Songcatcher 2 2/Users/songster/Music/Main iTunes Library/iTunes Music/Movies/Little Big Man Intro.mp4] [-async] [1] [-b] [1000k] [-s] [480x360] [-ar] [44100] [-ac] [2] [-v] [0] [-f] [flv] [-]
[4/22/11 11:06:47 AM EDT] DEBUG InputStreamReaderThread (/Library/Application Support/Subsonic/transcode/ffmpeg) dyld: unknown required load command 0x80000022
The ffmpeg command line, with brackets removed and quotes used where necessary to allow spaces in file paths, was:
- Code: Select all
"/Library/Application Support/Subsonic/transcode/ffmpeg" -ss 0 -i "/Volumes/Songcatcher 2 2/Users/songster/Music/Main iTunes Library/iTunes Music/Movies/Little Big Man Intro.mp4" -async 1 -b 1000k -s 480x360 -ar 44100 -ac 2 -v 0 -f flv -
I tried that command in Terminal and got:
- Code: Select all
dyld: unknown required load command 0x80000022
Trace/BPT trap
I then changed the location of ffmpeg to one with the necessary .dylib files:
- Code: Select all
"/Users/eric/Desktop/kmttg_v0p7t/ffmpeg/ffmpeg" -ss 0 -i "/Volumes/Songcatcher 2 2/Users/songster/Music/Main iTunes Library/iTunes Music/Movies/Little Big Man Intro.mp4" -async 1 -b 1000k -s 480x360 -ar 44100 -ac 2 -v 0 -f flv -
In Terminal, that got what looked like a successful invocation of ffmpeg, but the output was getting spewed into the Terminal window itself, so I tried specifying an output file at the end of the ffmpeg command line:
- Code: Select all
"/Users/eric/Desktop/kmttg_v0p7t/ffmpeg/ffmpeg" -ss 0 -i "/Volumes/Songcatcher 2 2/Users/songster/Music/Main iTunes Library/iTunes Music/Movies/Little Big Man Intro.mp4" -async 1 -b 1000k -s 480x360 -ar 44100 -ac 2 -v 0 -f flv "/Users/eric/Desktop/Little Big Man Intro.flv"
That seemed to work! The .flv output file played in VLC, though with incorrect aspect ratio. (It wouldn't play in QuickTime Player, though.) So it looked as if my suspicion that the basic problem concerns the absence of ffmpeg's .dylib files was right. I decided to play around again with substituting a "complete" ffmpeg, including the .dylib files, for the one Subsonic is using, since I couldn't explain why my first attempt to do so failed to give me a satisfactory result.
This time I completely deleted the ffmpeg that came with Subsonic in /Library/Application Support/Subsonic/transcode and copied into /Library/Application Support/Subsonic/transcode the entire contents of /Users/eric/Desktop/kmttg_v0p7t/ffmpeg, including the associated .dylib files. I then closed the Google Chrome tab with Subsonic in it on my server Mac and opened an entirely new Subsonic tab in Google Chrome, on the theory that maybe Subsonic (in the old tab) had established its link to ffmpeg and would not "see" a replacement ffmpeg.
After I did all that, I played "Little Big Man Intro.mp4" with success in Google Chrome/Subsonic/Player 17 on the server Mac, including a proper aspect ratio! I could also play the same file in Google Chrome/Subsonic/Player 17 on my client Mac!
This seems to indicate that the problem causing "Video not found or access denied" is the same as that causing "dyld: unknown required load command 0x80000022": specifically, ffmpeg's inability to find its .dylib files.