0

My colleague made a really nice video to hype my record release. The file he exported is a 1.3GB MOV file, and appears to use the Apple ProRes codec in a quicktime container (I have no idea what this means). My goal is to post this video on instagram, which refuses to let me select it with a desktop browser.

enter image description here

If I visit instagram in my desktop browser (ubuntu using latest firefox), I can browse for the video, I can choose it, but when I click OK, instagram simply ignores the video I've chosen, and the prompt to choose a video just stays the same.

I have tried uploading this video using the instagram app using my phone. Sadly, I can't seem to get the video into my Photos app. When I download to my phone using the WeTransfer link he sent me, it ends up in the Files folder and, curiously, i when i try to play it there, i can hear the audio but not see the video. I tried to share the video from Files and chose instagram. This seems to sort of work, but the file upload never seems to complete, and this approach completely fails to make use of my high speed internet connection, averaging a paltry 3.5 Mbit/second or so.

According to this adobe page, one should use these parameters if you want to get the video into instagram:

  • mp4 format
  • AAC audio
  • 3500 kbps bitrate
  • 30 fps (frames per second)
  • Maximum of 60 seconds long
  • 1080 pixels wide (max)
  • 1920 pixels tall
  • H.264 codec

The problem seems to be a combination of instagram hating my video format and the file being too large to upload in a reasonable time frame. I'd like to try and convert it using FFMPEG on this ubuntu workstation to the parameters above. I know it's a bit long, but I'd like to try a straight conversion without cropping the ends first.

Can anyone help me cook up the right command? Seems like we need to change the codec to h.264, change the audio from pcm to AAC, and set the 3500 kbps bitrate. Any help would be MUCH appreciated.

EDIT: I've been searching for a suitable ffmpeg command and one i found here seems pretty close:

ffmpeg -i {in-video}.mov -vcodec h264 -acodec aac {out-video}.mp4

I'm not at all sure that will do the trick but it does appear to be converting to h.264 and audio to AAC. However, the output from the command looks like the bitrate, 4577kbps, is too high.

1 Answer 1

1

For a web-compatible encode, you will need the video stream to have a yuv420p pixel format. ProRes, as a editing codec, uses different pixel formats.

Use

ffmpeg -i in.mov -pix_fmt yuv420p -c:v libx264 -b:v 3500k -c:a aac -movflags +faststart out.mp4

The input framerate should already be between 25-30, as exported by your friend, as well the resolution. Bitrate values for streaming services are typically recommendations, not a requirement.

1
  • THANK YOU for this detail. I used your command here, and was still unable to post the video with a desktop web browser, but I was able to put the resulting video on a google drive and download it from there to my phone, where the iphone liked it much better. I was subsequently able to post the video with the instagram app on my phone. REALLY ANNOYING that I can't post this via desktop browser though. Youtube is SO MUCH BETTER designed.
    – S. Imp
    Commented Aug 26, 2022 at 23:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.