2012-10-18 67 views
2

我試圖序列圖像轉換爲視頻中的Android使用ffmpeg的命令。 我已經爲android構建ffmpeg,並將ffmpeg二進制文件放在/ data/local文件夾中。 我在Android中使用Runtime.getruntime.execute("mycommand")運行ffmpeg命令。Android的FFmpeg的報告「的文件協議未找到」

Stucture mycommand的是這樣的

"/data/local/ffmpeg -r 40 qscale 2 -i /mnt/sdcard/images/img%d.jpg /mnt/sdcard/images/finalvideo.mp4" 

mycommand包含在那裏,我把我所有的序列圖像的文件夾的路徑。運行這個命令給我錯誤「未找到協議」。

而且我讀了文件協議是默認的ffmpeg文檔。

如何運行這樣的命令?

我喜歡的ffmpeg -i /mnt/sdcard/vid.mp4

ffmpeg version 0.11.1.git Copyright (c) 2000-2012 the FFmpeg developers 
built on Sep 26 2012 11:58:35 with gcc 4.4.3 (GCC) 
configuration: --target-os=linux --prefix=/home/esteves/android-ffmpeg --enable-cross-compile --enable-runtime-cpudetect --disable-asm --arch=arm --cc=/home/esteves/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc --cross-prefix=/home/esteves/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi- --disable-stripping --nm=/home/esteves/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-nm --sysroot=/home/esteves/android-ndk/platforms/android-8/arch-arm --enable-nonfree --enable-version3 --disable-everything --enable-gpl --disable-doc --enable-avresample --enable-demuxer=amr --enable-demuxer=aac --enable-demuxer=rawvideo --enable-demuxer=rtsp --enable-muxer=rtsp --enable-muxer=flv --enable-muxer=mpegts --enable-muxer=mp4 --enable-demuxer=rtp --enable-demuxer=rtp --disable-ffplay --disable-ffserver --enable-ffmpeg --disable-ffprobe --enable-libx264 --enable-encoder=libx264 libavutil  51. 72.100/51. 72.100 
libavcodec  54. 55.100/54. 55.100 
libavformat 54. 25.105/54. 25.105 
libswscale  2. 1.101/2. 1.101 
error of main libswresample 0. 15.100/0. 15.100 
error of main libpostproc 52. 0.100/52. 0.100 
/mnt/sdcard/vid.mp4: Protocol not found 
+1

你忘了'-'之前'qscale',它應該是'-qscale',它應該放在* *後的'-i的/ mnt/.../IMG%d.jpg'選項。 – slhck

+0

我想也是用這個,但它給了我同樣的消息協議不found.I嘗試另一個ffmpeg的命令/數據/本地/的ffmpeg -i /mnt/sdcard/vid.mp4 \t ,這將使我的視頻文件VID的信息。 MP4。但運行這個命令給了我相同的消息協議找不到。我從鏈接http://www.linuxstall.com/ffmpeg-tutorial/得到這個命令。 –

+0

請編輯併發布您正在使用的新命令的完整未切割輸出,而不僅僅是錯誤消息。粘貼後不要忘記用'Ctrl-K'縮進代碼。 – slhck

回答

0

運行簡單的命令後,越來越這是ffmpeg的編譯problem.You應使協議的錯誤任何用戶評論中的配置。 這裏是我的配置,你可以參考一下:

export TMPDIR=/Users/yourpath/SourceCode/FFmpeg/tmpdir 
NDK=/Users/yourpath/Android/android-ndk-r10d 
SYSROOT=$NDK/platforms/android-16/arch-arm/ 
TOOLCHAIN=/Users/yourpath/Android/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64 

CPU=arm 
PREFIX=/Users/liuchao/SourceCode/FFmpeg/ffmpeg_install/ 
#ADDI_CFLAGS="-marm" 
ADDI_CFLAGS="-mfpu=neon -mfloat-abi=softfp" 

function build_one 
{ 
./configure \ 
--prefix=$PREFIX \ 
--target-os=linux \ 
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \ 
--arch=arm \ 
--sysroot=$SYSROOT \ 
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \ 
--cc=$TOOLCHAIN/bin/arm-linux-androideabi-gcc \ 
--nm=$TOOLCHAIN/bin/arm-linux-androideabi-nm \ 
--disable-shared \ 
--enable-static \ 
--disable-asm \ 
--disable-yasm \ 
--enable-gpl \ 
--enable-stripping \ 
--enable-runtime-cpudetect \ 
--enable-cross-compile \ 
--enable-version3 \ 
--enable-nonfree 
--enable-libx265 \ 
--enable-w32threads \ 
--enable-hwaccels \ 
--enable-neon \ 
--enable-decoders \ 
--enable-devices \ 
--enable-encoders \ 
--enable-muxers \ 
--enable-encoder=rawvideo \ 
--enable-protocols \ 
--enable-protocol=file \ 
--enable-avfilter \ 
--enable-network \ 
--enable-avdevice \ 
--enable-ffmpeg \ 
--disable-ffplay \ 
--disable-ffprobe \ 
--disable-ffserver \ 
--disable-doc \ 
--extra-ldflags="$ADDI_LDFLAGS" \ 
$ADDITIONAL_CONFIGURE_FLAG 
+0

你並不需要顯式地使大多數人,內部組件的FFmpeg的底部錯誤日誌的問題,除非你手動具有廣泛禁用選項(如' - 禁用everything')禁用它們。另外,不建議使用'--disable-asm'和/或'--disable-yasm',除非你想要非常慢的編碼。 – LordNeckbeard

0

避免與--disable-everything

編譯它,將禁用包括協議的支持所有組件。

如果必須使用--disable-everything

您必須手動啓用所需的組件,如--enable-protocols或以零敲碎打的方式,如--enable-protocol=file,pipe。然而,這很難做到正確,因爲用戶經常忘記啓用他們需要的東西。有關更多信息,請參見./configure --help的輸出。

相關問題