Closed rocklee0098 closed 4 years ago
BTW:
I also checked 'ffmpeg -formats' in flutter-ffmpeg, indeed there is 'h264' in the format list
the log is like below
I/mobile-ffmpeg(32325): built with Android (5220042 based on r346389c) clang version 8.0.7 (https://android.googlesource.com/toolchain/clang b55f2d4ebfd35bf643d27dbca1bb228957008617) (https://android.googlesource.com/toolchain/llvm 3c393fe7a7e13b0fba4ac75a01aa683d7a5b11cd) (based on LLVM 8.0.7svn)
I/mobile-ffmpeg(32325): configuration: --cross-prefix=aarch64-linux-android- --sysroot=/files/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot --prefix=/home/taner/Projects/mobile-ffmpeg/prebuilt/android-arm64/ffmpeg --pkg-config=/usr/bin/pkg-config --enable-version3 --arch=aarch64 --cpu=armv8-a --cc=aarch64-linux-android24-clang --cxx=aarch64-linux-android24-clang++ --target-os=android --enable-neon --enable-asm --enable-inline-asm --enable-cross-compile --enable-pic --enable-jni --enable-optimizations --enable-swscale --enable-shared --disable-v4l2-m2m --disable-outdev=v4l2 --disable-outdev=fbdev --disable-indev=v4l2 --disable-indev=fbdev --enable-small --disable-openssl --disable-xmm-clobber-test --disable-debug --enable-lto --disable-neon-clobber-test --disable-programs --disable-postproc --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --disable-sndio --disable-schannel --disable-securetransport --disable-xlib --disable-cuda --disable-cuvid --disa
I/mobile-ffmpeg(32325): libavutil 56. 38.100 / 56. 38.100
I/mobile-ffmpeg(32325): libavcodec 58. 65.102 / 58. 65.102
I/mobile-ffmpeg(32325): libavformat 58. 35.101 / 58. 35.101
I/mobile-ffmpeg(32325): libavdevice 58. 9.103 / 58. 9.103
I/mobile-ffmpeg(32325): libavfilter 7. 70.101 / 7. 70.101
I/mobile-ffmpeg(32325): libswscale 5. 6.100 / 5. 6.100
I/mobile-ffmpeg(32325): libswresample 3. 6.100 / 3. 6.100
V/mobile-ffmpeg(32325): File formats:
V/mobile-ffmpeg(32325): D. = Demuxing supported
V/mobile-ffmpeg(32325): .E = Muxing supported
V/mobile-ffmpeg(32325): --
V/mobile-ffmpeg(32325): D 3dostr
V/mobile-ffmpeg(32325): E 3g2
V/mobile-ffmpeg(32325): E 3gp
V/mobile-ffmpeg(32325): D 4xm
V/mobile-ffmpeg(32325): E a64
V/mobile-ffmpeg(32325): D aa
V/mobile-ffmpeg(32325): D aac
V/mobile-ffmpeg(32325): DE ac3
V/mobile-ffmpeg(32325): D acm
V/mobile-ffmpeg(32325): D act ACT Voice file format
V/mobile-ffmpeg(32325): D adf
V/mobile-ffmpeg(32325): D adp
V/mobile-ffmpeg(32325): D ads
V/mobile-ffmpeg(32325): E adts
V/mobile-ffmpeg(32325): DE adx
V/mobile-ffmpeg(32325): D aea
V/mobile-ffmpeg(32325): D afc
V/mobile-ffmpeg(32325): DE aiff
V/mobile-ffmpeg(32325): D aix
V/mobile-ffmpeg(32325): DE alaw
V/mobile-ffmpeg(32325): D alias_pix
V/mobile-ffmpeg(32325): DE amr
V/mobile-ffmpeg(32325): D amrnb
V/mobile-ffmpeg(32325): D amrwb
V/mobile-ffmpeg(32325): D android_camera
V/mobile-ffmpeg(32325): D anm
V/mobile-ffmpeg(32325): D apc
V/mobile-ffmpeg(32325): D ape
V/mobile-ffmpeg(32325): DE apng
V/mobile-ffmpeg(32325): DE aptx
V/mobile-ffmpeg(32325): DE aptx_hd
V/mobile-ffmpeg(32325): D aqtitle
V/mobile-ffmpeg(32325): DE asf
V/mobile-ffmpeg(32325): D asf_o
V/mobile-ffmpeg(32325): E asf_stream
V/mobile-ffmpeg(32325): DE ass
V/mobile-ffmpeg(32325): DE ast
V/mobile-ffmpeg(32325): DE au
V/mobile-ffmpeg(32325): D av1
V/mobile-ffmpeg(32325): DE avi
V/mobile-ffmpeg(32325): E avm2
V/mobile-ffmpeg(32325): D avr
V/mobile-ffmpeg(32325): D avs
V/mobile-ffmpeg(32325): DE avs2
V/mobile-ffmpeg(32325): D bethsoftvid
V/mobile-ffmpeg(32325): D bfi
V/mobile-ffmpeg(32325): D bfstm
V/mobile-ffmpeg(32325): D bin
V/mobile-ffmpeg(32325): D bink
V/mobile-ffmpeg(32325): DE bit
V/mobile-ffmpeg(32325): D bmp_pipe
V/mobile-ffmpeg(32325): D bmv
V/mobile-ffmpeg(32325): D boa
V/mobile-ffmpeg(32325): D brender_pix
V/mobile-ffmpeg(32325): D brstm
V/mobile-ffmpeg(32325): D c93
V/mobile-ffmpeg(32325): DE caf
V/mobile-ffmpeg(32325): DE cavsvideo
V/mobile-ffmpeg(32325): D cdg
V/mobile-ffmpeg(32325): D cdxl
V/mobile-ffmpeg(32325): D cine
V/mobile-ffmpeg(32325): DE codec2
V/mobile-ffmpeg(32325): DE codec2raw
V/mobile-ffmpeg(32325): D concat
V/mobile-ffmpeg(32325): E crc
V/mobile-ffmpeg(32325): DE dash
V/mobile-ffmpeg(32325): DE data
V/mobile-ffmpeg(32325): DE daud
V/mobile-ffmpeg(32325): D dcstr
V/mobile-ffmpeg(32325): D dds_pipe
V/mobile-ffmpeg(32325): D dfa
V/mobile-ffmpeg(32325): D dhav
V/mobile-ffmpeg(32325): DE dirac
V/mobile-ffmpeg(32325): DE dnxhd
V/mobile-ffmpeg(32325): D dpx_pipe
V/mobile-ffmpeg(32325): D dsf
V/mobile-ffmpeg(32325): D dsicin
V/mobile-ffmpeg(32325): D dss
V/mobile-ffmpeg(32325): DE dts
V/mobile-ffmpeg(32325): D dtshd
V/mobile-ffmpeg(32325): DE dv
V/mobile-ffmpeg(32325): D dvbsub
V/mobile-ffmpeg(32325): D dvbtxt
V/mobile-ffmpeg(32325): E dvd
V/mobile-ffmpeg(32325): D dxa
V/mobile-ffmpeg(32325): D ea
V/mobile-ffmpeg(32325): D ea_cdata
V/mobile-ffmpeg(32325): DE eac3
V/mobile-ffmpeg(32325): D epaf
V/mobile-ffmpeg(32325): D exr_pipe
V/mobile-ffmpeg(32325): DE f32be
V/mobile-ffmpeg(32325): DE f32le
V/mobile-ffmpeg(32325): E f4v
V/mobile-ffmpeg(32325): DE f64be
V/mobile-ffmpeg(32325): DE f64le
V/mobile-ffmpeg(32325): DE ffmetadata
V/mobile-ffmpeg(32325): E fifo
V/mobile-ffmpeg(32325): E fifo_test
V/mobile-ffmpeg(32325): DE film_cpk
V/mobile-ffmpeg(32325): DE filmstrip
V/mobile-ffmpeg(32325): DE fits
V/mobile-ffmpeg(32325): DE flac
V/mobile-ffmpeg(32325): D flic
V/mobile-ffmpeg(32325): DE flv
V/mobile-ffmpeg(32325): E framecrc
V/mobile-ffmpeg(32325): E framehash
V/mobile-ffmpeg(32325): E framemd5
V/mobile-ffmpeg(32325): D frm
V/mobile-ffmpeg(32325): D fsb
V/mobile-ffmpeg(32325): DE g722
V/mobile-ffmpeg(32325): DE g723_1
V/mobile-ffmpeg(32325): DE g726
V/mobile-ffmpeg(32325): DE g726le
V/mobile-ffmpeg(32325): D g729
V/mobile-ffmpeg(32325): D gdv
V/mobile-ffmpeg(32325): D genh
V/mobile-ffmpeg(32325): DE gif
V/mobile-ffmpeg(32325): D gif_pipe
V/mobile-ffmpeg(32325): DE gsm
V/mobile-ffmpeg(32325): DE gxf
V/mobile-ffmpeg(32325): DE h261
V/mobile-ffmpeg(32325): DE h263
V/mobile-ffmpeg(32325): DE h264
V/mobile-ffmpeg(32325): E hash
V/mobile-ffmpeg(32325): D hcom
V/mobile-ffmpeg(32325): E hds
V/mobile-ffmpeg(32325): DE hevc
V/mobile-ffmpeg(32325): DE hls
V/mobile-ffmpeg(32325): D hnm
V/mobile-ffmpeg(32325): DE ico
V/mobile-ffmpeg(32325): D idcin
V/mobile-ffmpeg(32325): D idf
V/mobile-ffmpeg(32325): D iff
V/mobile-ffmpeg(32325): D ifv
V/mobile-ffmpeg(32325): DE ilbc
V/mobile-ffmpeg(32325): DE image2
V/mobile-ffmpeg(32325): DE image2pipe
V/mobile-ffmpeg(32325): D ingenient
V/mobile-ffmpeg(32325): D ipmovie
V/mobile-ffmpeg(32325): E ipod
V/mobile-ffmpeg(32325): DE ircam
V/mobile-ffmpeg(32325): E ismv
V/mobile-ffmpeg(32325): D iss
V/mobile-ffmpeg(32325): D iv8
V/mobile-ffmpeg(32325): DE ivf
V/mobile-ffmpeg(32325): D ivr
V/mobile-ffmpeg(32325): D j2k_pipe
V/mobile-ffmpeg(32325): DE jacosub
V/mobile-ffmpeg(32325): D jpeg_pipe
V/mobile-ffmpeg(32325): D jpegls_pipe
V/mobile-ffmpeg(32325): D jv
V/mobile-ffmpeg(32325): D kux
V/mobile-ffmpeg(32325): E latm
V/mobile-ffmpeg(32325): D lavfi
V/mobile-ffmpeg(32325): D live_flv
V/mobile-ffmpeg(32325): D lmlm4
V/mobile-ffmpeg(32325): D loas
V/mobile-ffmpeg(32325): DE lrc
V/mobile-ffmpeg(32325): D lvf
V/mobile-ffmpeg(32325): D lxf
V/mobile-ffmpeg(32325): DE m4v
V/mobile-ffmpeg(32325): E matroska
V/mobile-ffmpeg(32325): D matroska,webm
V/mobile-ffmpeg(32325): E md5
V/mobile-ffmpeg(32325): D mgsts
V/mobile-ffmpeg(32325): DE microdvd
V/mobile-ffmpeg(32325): DE mjpeg
V/mobile-ffmpeg(32325): D mjpeg_2000
V/mobile-ffmpeg(32325): E mkvtimestamp_v2
V/mobile-ffmpeg(32325): DE mlp
V/mobile-ffmpeg(32325): D mlv
V/mobile-ffmpeg(32325): D mm
V/mobile-ffmpeg(32325): DE mmf
V/mobile-ffmpeg(32325): E mov
V/mobile-ffmpeg(32325): D mov,mp4,m4a,3gp,3g2,mj2
V/mobile-ffmpeg(32325): E mp2
V/mobile-ffmpeg(32325): DE mp3
V/mobile-ffmpeg(32325): E mp4
V/mobile-ffmpeg(32325): D mpc
V/mobile-ffmpeg(32325): D mpc8
V/mobile-ffmpeg(32325): DE mpeg
V/mobile-ffmpeg(32325): E mpeg1video
V/mobile-ffmpeg(32325): E mpeg2video
V/mobile-ffmpeg(32325): DE mpegts
V/mobile-ffmpeg(32325): D mpegtsraw
V/mobile-ffmpeg(32325): D mpegvideo
V/mobile-ffmpeg(32325): DE mpjpeg
V/mobile-ffmpeg(32325): D mpl2
V/mobile-ffmpeg(32325): D mpsub
V/mobile-ffmpeg(32325): D msf
V/mobile-ffmpeg(32325): D msnwctcp
V/mobile-ffmpeg(32325): D mtaf
V/mobile-ffmpeg(32325): D mtv
V/mobile-ffmpeg(32325): DE mulaw
V/mobile-ffmpeg(32325): D musx
V/mobile-ffmpeg(32325): D mv
V/mobile-ffmpeg(32325): D mvi
V/mobile-ffmpeg(32325): DE mxf
V/mobile-ffmpeg(32325): E mxf_d10
V/mobile-ffmpeg(32325): E mxf_opatom
V/mobile-ffmpeg(32325): D mxg
V/mobile-ffmpeg(32325): D nc
V/mobile-ffmpeg(32325): D nistsphere
V/mobile-ffmpeg(32325): D nsp
V/mobile-ffmpeg(32325): D nsv
V/mobile-ffmpeg(32325): E null
V/mobile-ffmpeg(32325): DE nut
V/mobile-ffmpeg(32325): D nuv
V/mobile-ffmpeg(32325): E oga
V/mobile-ffmpeg(32325): DE ogg
V/mobile-ffmpeg(32325): E ogv
V/mobile-ffmpeg(32325): DE oma
V/mobile-ffmpeg(32325): E opus
V/mobile-ffmpeg(32325): D paf
V/mobile-ffmpeg(32325): D pam_pipe
V/mobile-ffmpeg(32325): D pbm_pipe
V/mobile-ffmpeg(32325): D pcx_pipe
V/mobile-ffmpeg(32325): D pgm_pipe
V/mobile-ffmpeg(32325): D pgmyuv_pipe
V/mobile-ffmpeg(32325): D pictor_pipe
V/mobile-ffmpeg(32325): D pjs
V/mobile-ffmpeg(32325): D pmp
V/mobile-ffmpeg(32325): D png_pipe
V/mobile-ffmpeg(32325): D ppm_pipe
V/mobile-ffmpeg(32325): D psd_pipe
V/mobile-ffmpeg(32325): E psp
V/mobile-ffmpeg(32325): D psxstr
V/mobile-ffmpeg(32325): D pva
V/mobile-ffmpeg(32325): D pvf
V/mobile-ffmpeg(32325): D qcp
V/mobile-ffmpeg(32325): D qdraw_pipe
V/mobile-ffmpeg(32325): D r3d
V/mobile-ffmpeg(32325): DE rawvideo
V/mobile-ffmpeg(32325): D realtext
V/mobile-ffmpeg(32325): D redspark
V/mobile-ffmpeg(32325): D rl2
V/mobile-ffmpeg(32325): DE rm
V/mobile-ffmpeg(32325): DE roq
V/mobile-ffmpeg(32325): D rpl
V/mobile-ffmpeg(32325): D rsd
V/mobile-ffmpeg(32325): DE rso
V/mobile-ffmpeg(32325): DE rtp
V/mobile-ffmpeg(32325): E rtp_mpegts
V/mobile-ffmpeg(32325): DE rtsp
V/mobile-ffmpeg(32325): DE s16be
V/mobile-ffmpeg(32325): DE s16le
V/mobile-ffmpeg(32325): DE s24be
V/mobile-ffmpeg(32325): DE s24le
V/mobile-ffmpeg(32325): DE s32be
V/mobile-ffmpeg(32325): DE s32le
V/mobile-ffmpeg(32325): D s337m
V/mobile-ffmpeg(32325): DE s8
V/mobile-ffmpeg(32325): D sami
V/mobile-ffmpeg(32325): DE sap
V/mobile-ffmpeg(32325): DE sbc
V/mobile-ffmpeg(32325): D sbg
V/mobile-ffmpeg(32325): DE scc
V/mobile-ffmpeg(32325): D sdp
V/mobile-ffmpeg(32325): D sdr2
V/mobile-ffmpeg(32325): D sds
V/mobile-ffmpeg(32325): D sdx
V/mobile-ffmpeg(32325): E segment
V/mobile-ffmpeg(32325): D ser
V/mobile-ffmpeg(32325): D sgi_pipe
V/mobile-ffmpeg(32325): D shn
V/mobile-ffmpeg(32325): D siff
V/mobile-ffmpeg(32325): E singlejpeg
V/mobile-ffmpeg(32325): D sln
V/mobile-ffmpeg(32325): DE smjpeg
V/mobile-ffmpeg(32325): D smk
V/mobile-ffmpeg(32325): E smoothstreaming
V/mobile-ffmpeg(32325): D smush
V/mobile-ffmpeg(32325): D sol
V/mobile-ffmpeg(32325): DE sox
V/mobile-ffmpeg(32325): DE spdif
V/mobile-ffmpeg(32325): E spx
V/mobile-ffmpeg(32325): DE srt
V/mobile-ffmpeg(32325): D stl
V/mobile-ffmpeg(32325): E stream_segment,ssegment
V/mobile-ffmpeg(32325): E streamhash
V/mobile-ffmpeg(32325): D subviewer
V/mobile-ffmpeg(32325): D subviewer1
V/mobile-ffmpeg(32325): D sunrast_pipe
There are 8 different flutter_ffmpeg
packages, each package includes a different set of external libraries enabled.
I listed them in 1. Features section of README. In 2.1 Packages section you can see how a package can be installed and what is a default package.
x264
is included in GPL licensed libraries. So, you need to install one of them.
By the way, -formats
shows you only muxers & demuxers. You need to run -encoders
to see if there is an h264 encoder available. On iOS, there is a built-in encoder named h264_videotoolbox
that you can use, but for Android you need to use x264
.
problem resolved, thank you so much!
@tanersener I have been trying to use -vcodec h264_videotoolbox with ios devices and it doesn't seem to take -crf or -preset:v into account. I get a really pixelated video every time even if i call with crf 0 and veryslow as the preset.
The same commands work fine with regular -vcodec h264 on an android device.
Do you know why this could be?
You are right, h264_videotoolbox
does not support some of these encoding options.
Can you take a look at what videotoolbox
supports by running -h encoder=h264_videotoolbox
?
Sorry to be a pain taner but i have no idea what this is telling me. Are the top ones are supported parameters? e.g. --enable-libx265 and how would i pass this in if it is?
built with Apple clang version 11.0.0 (clang-1100.0.33.17)
configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
libavutil 56. 42.102 / 56. 42.102
libavcodec 58. 78.102 / 58. 78.102
libavformat 58. 42.100 / 58. 42.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 77.101 / 7. 77.101
libswscale 5. 6.101 / 5. 6.101
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
Encoder h264_videotoolbox [VideoToolbox H.264 Encoder]:
General capabilities: delay
Threading capabilities: none
Supported pixel formats: videotoolbox_vld nv12 yuv420p
h264_videotoolbox AVOptions:
-profile <int> E..V...... Profile (from 0 to 5) (default 0)
baseline 1 E..V...... Baseline Profile
main 2 E..V...... Main Profile
high 3 E..V...... High Profile
extended 4 E..V...... Extend Profile
-level <int> E..V...... Level (from 0 to 52) (default 0)
1.3 13 E..V...... Level 1.3, only available with Baseline Profile
3.0 30 E..V...... Level 3.0
3.1 31 E..V...... Level 3.1
3.2 32 E..V...... Level 3.2
4.0 40 E..V...... Level 4.0
4.1 41 E..V...... Level 4.1
4.2 42 E..V...... Level 4.2
5.0 50 E..V...... Level 5.0
5.1 51 E..V...... Level 5.1
5.2 52 E..V...... Level 5.2
-coder <int> E..V...... Entropy coding (from 0 to 2) (default 0)
cavlc 1 E..V...... CAVLC entropy coding
vlc 1 E..V...... CAVLC entropy coding
cabac 2 E..V...... CABAC entropy coding
ac 2 E..V...... CABAC entropy coding
-a53cc <boolean> E..V...... Use A53 Closed Captions (if available) (default true)
-allow_sw <boolean> E..V...... Allow software encoding (default false)
-require_sw <boolean> E..V...... Require software encoding (default false)
-realtime <boolean> E..V...... Hint that encoding should happen in real-time if not faster (e.g. capturing from camera). (default false)
-frames_before <boolean> E..V...... Other frames will come before the frames in this session. This helps smooth concatenation issues. (default false)
-frames_after <boolean> E..V...... Other frames will come after the frames in this session. This helps smooth concatenation issues. (default false)
I have read this medium article and he says it only supports bitrate setting.
Is there anyway i can translate my crf and preset values into a bitrate value?
-h encoder=h264_videotoolbox
is the help command for h264_videotoolbox
encoder. Output shows you which parameters/options you can use with h264_videotoolbox
. You can also run -h encoder=libx264
too, see what libx264
supports and compare it with h264_videotoolbox
.
Additionally, you need to run these commands on your iOS device not on your desktop machine.
Anyway, as far as I can see -crf
is not listed in the output. This means that -crf
is not supported. But there are other parameters. Why don't you play with them to increase the quality?
FFmpeg H.264 Video Encoding Guide can help you about -crf
and -preset
. But don't expect everything listed in that page to work with h264_videotoolbox
. That page is focused on libx264
mostly.
Description is there any way to use h264 encoder ?
Expected behavior I just want to get the video encoded by h264, so that it can be played by android build-in player
Current behavior
above is my code, I just want to mix 2 videos recorded by my cellphone, after the 'mixVideo1' function executed, I can get the output video. the output video can be played well on my pc or some 3rd party players like Kodi, but it can not be played by the build-in player in Gallery,
I have checked the format of the video using ffprobe, it's "MPEG-4 part 2". I also have googled the problem, it said I should get the video encoded with h264, so I tried to specify the encoder in the command like below
it returned the error 'E/mobile-ffmpeg(18031): Unknown encoder 'libx264''
I also tried the command on my pc, it worked well, the video format is 'H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10,'
so what command can I use to get the video with the h264 format that I really need?
thanks
Logs
Info of the video generated by ffmpeg on pc:
Info of the video generated by flutter-ffmpeg
Environment ➜ mixer git:(master) ✗ flutter doctor Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel master, v1.18.0-6.0.pre.4, on Mac OS X 10.15.4 19E266, locale en-US) [!] Android toolchain - develop for Android devices (Android SDK version 29.0.3) ✗ Android license status unknown. Try re-installing or updating your Android SDK Manager. See https://developer.android.com/studio/#downloads or visit visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions. [✓] Xcode - develop for iOS and macOS (Xcode 11.4) [✓] Chrome - develop for the web [!] Android Studio (version 3.6) ✗ Flutter plugin not installed; this adds Flutter specific functionality. ✗ Dart plugin not installed; this adds Dart specific functionality. [✓] VS Code (version 1.44.1) [✓] Connected device (3 available)
! Doctor found issues in 2 categories.