I host a site on a Linux server that I built with php where I am able to upload audio files in one section and video files to another.
Each section uses php to upload a single audio file and a single video file. Each upload is assigned a unique filename so they can be viewed separately on an individual page where the uploader can post comments about their audio or video.
I want to be able to allow musicians and performers in the local area display their work. The site works, but large video files do not upload and my audio player only plays a few formats, and I like to convert them all to mp3's.
I installed ffmpeg on my linux server to help me with this and am able to connect to it with my terminal. My question is how do I get ffmpeg to interface with my uploaded php files.
For example, as the user uploads an audio file, can I have ffmpeg convert it while it's uploading, or do I need to set up a temporary folder for uploads, store it there, then have ffmpeg compress the file, convert it to a specific format and save it in another folder?
I would prefer to have it compress and change the format while it's uploading so as not to use server space, but if this is not the way ffmpeg works, then I don't have a choice. Any help would be appreciated.
I once had the opportunity to work on such task around 4 years back. I still remember how I did this. I installed ffmpeg and it should work using commands as well on shell. I used exec library of php to execute ffmpeg commands which converted video files into desired format i.e mp4. You better check out exec and learn ffmpeg command to convert file into desired format. Hope it helps
It is NOT possible to transcode while uploading. But, it is possible to transcode all your videos to mp4 files and all your audio files to mp3 files using ffmpeg command which you can call from your PHP code using exec statements.
H264 BP is the video codec which is almost universal and supports most of the platforms devices, browsers, players etc. AAC is the best audio codec to use for online streaming.
So, convert all your videos with following exec statementin PHP.
exec("ffmpeg -i INPUT.avi -r 25 -b:v 1M -pass 1 -c:v libx264 -profile:v baseline -c:a aac -strict experimental -b:a 192k OUTPUT.mp4");
And convert all your audios with following exec statement in PHP.
exec("ffmpeg -i INPUT.wav -c:a aac -strict experimental -b:a 192k OUTPUT.mp3");