caydey / ffshare

An android app to compress image, video and audio files through ffmpeg before sharing them
GNU General Public License v3.0
574 stars 25 forks source link

Additional video options #8

Open cwarts opened 1 year ago

cwarts commented 1 year ago

As someone who compresses video to send in mms to iphones somewhat regularly, I would love to see some additional video options. Specifically, the max size limit should go lower, and should probably just be a value you can enter in kb.

Also, there are no audio options. It looks like it just uses 128k for everything, but when file sizes get smaller 128 can be way too large.

caydey commented 1 year ago

I'll look into adding an option for a custom custom file size, what custom sizes would you like added? The audio bitrate is calculated to be 1/4th of the total bitrate or 128k, whichever value is smaller.

cwarts commented 1 year ago

I know I personally have issues sending anything larger than 1mb via mms, so at least that. Carriers are kind of all over the place with their file size limits though, probably best to have 500kb steps from 2mb down.

That makes sense for audio - it might be nice to be able to set that ratio, but not really that big of a deal.

It would also be nice to be able to set the encoder to different speed presets, at such small file size and with relatively short videos the trade off of a few extra seconds of encoding time can make a decent difference in quality.

G2G2G2G commented 1 year ago

@caydey to go with this thread you also have to add the max bitrate back

There is a bug where if your video is too short, it is going to choose an insanely high bitrate, which crashes ffshare / ffmpeg I like the "choose file size" you added, that is a good addition, it should still have a max bitrate though. If you get like a 20 second clip and set it to one of the file sizes, even the 8mb one.. I am getting 757kbps bitrate and it just crashes. (have to take a screenshot right when I click ffshare before it crashes to see the ffmpeg command it runs)

as far as sending stuff via carriers, they are going to encode it to 3gp and have like 100kbps regardless so not gonna save anyone with the MMS texting, sadly.

I agree with the speed presets too, h264 has several generally ultrafast, faster, medium and slower are the most used. (several more in between all those though)

gbdomubpkm commented 1 year ago

A custom video file size is a good idea. : in my opinion, it must allow to enter very low values ​​(kb) but also very high values ​​(size not limited MB GB) : because if the converted files can be sent by MMS, video files and even complete converted movies can be saved with the file manager (I tested it): thus, if the principle of defined values ​​is preserved, I will see the additional values ​​100M, 250M, 500M, 750M.

But it seems that the black screen breaks the conversion. I tested once. Is this confirmed or do I need to adjust an android parameter? I've since kept the screen on during long conversion processes with the very useful f-droid coffee app.

caydey commented 1 year ago

It is an intentional feature to stop compression when the screen blanks, I'll work on adding an option to keep the screen on during compression and then eventually get around to doing #4

gbdomubpkm commented 1 year ago

What's happening currently for a multi file (several languages) and possibly with subtitles during a conversion? I didn't try. Muti languages ​​and subtitles retained? If not now, that would be fine (or maybe have the possibility to choose language / subtitle).

ghost commented 1 year ago

I'd like to see a few more video options like selecting the codec, framerate, etc... used for conversion.

I also have an idea for advanced users. If we get the ability to edit the arguments and flags that the app uses for conversion. It would make the app even more versatile.

Combining it with #17 would make the application perfect.

gbdomubpkm commented 1 year ago

Hello @caydey When converting a .mkv file or a .avi file, and I choose to convert all files to mp4, I always get an output mkv file or .avi file. Is there something I don't understand?

To workaround the problem, for example, i use this ffmpeg command line on my laptop ffmpeg-i video.avi -c:v copy -c:a -y video.mp4 , then after i put the file on my smartphone and i can do what i want with your app.

gbdomubpkm commented 1 year ago

Hello @caydey Any close improvements related to this ticket or a related one?

caydey commented 1 year ago

I'm taking a break on this project for the next few months due to my University work but will stay alert for any PRs

gbdomubpkm commented 1 year ago

Thanks for the clarification @caydey as there were several interesting tickets opened and discussed that seemed frozen.

idexample commented 1 year ago

I also noticed the audio is always 128kb even if it was HE AAC at 64kb, all others convertors change in 128, only the inverse ai black leaves it unchanged copying it.

G2G2G2G commented 1 year ago

please just let us have an input field for audio & video bitrates.. and remove all the other flags that are auto put there.. this would also stop the app from crashing when the buffers aren't big enough for your auto calculated sizes

Noitarud commented 1 month ago

Maybe an option chooser/library, then we can know the fuller potential of this package!

Eg. This can make a view (ie projector screen) appear head-on (with correct trapezoid set): … -vf "perspective=0:0:W:0:0:H:W:H[:interpolation=linear|cubic][:sense=source|destination][:eval=init|frame]"

(example coordinates are for no change, sequence: xTL:yTL:xTR:yTR:xBL:yBL:xBR:yBR; for the options, the defaults are first in the list, Frame should be set to evaluate for each frame rather than the first. Sense your points are specifying on the 0(source)(to stretch and crop) or 1(destination)(to shrink and pad) for the other's corners (use of the wrong way doubles error, try negatives?), eval work around might be to delay start of video.)