質問: このビデオがiosで再生されないのはなぜですか? mp4ビデオをiosデバイスで再生するのに問題があります。 ios6を搭載したiphoneとios7を実行しているipadでテストしています。ビデオをサーバーにアップロードしてデバイスに直接urlを入力すると、黒い画面と「操作を完了できませんでした」というアラートが表示されます。 。」 <video>タグを使用してwebページでビデオを再生しようとすると、同じ問題が発生します。ビデオはandroidおよびwindowsで正常に再生されます。 ビデオの例 はここにあります。これが私のffmpeg設定です。ffmpeg -i uncompressed.avi -s 854x480 -c:v libx264 -pix_fmt yuv420p -preset:v veryslow -profile:v baseline -crf 23 -c:a libfdk_aac -flags +qscale -global_quality 3 -afterburner 1 -ar 48000 -cutoff 19000 output.mp4 そして、これがビデオをエンコードするときのffmpegからの出力です。ffmpeg version n-55064-g3cd8aaa copyright (c) 2000-2013 the ffmpeg developers built on jul 29 2013 12:59:12 with gcc 4.8.0 (gcc) configuration: --arch=x86_64 --target-os=mingw32 --cross-prefix=/home/dominic/ github/ffmpeg-windows-build-helpers/sandbox/mingw-w64-x86_64/bin/x86_64-w64-ming w32- --pkg-config=pkg-config --enable-gpl --enable-libsoxr --enable-libx264 --en able-avisynth --enable-libxvid --enable-libmp3lame --enable-version3 --enable-zl ib --enable-librtmp --enable-libvorbis --enable-libtheora --enable-libspeex --en able-libopenjpeg --enable-gnutls --enable-libgsm --enable-libfreetype --enable-f ontconfig --enable-libass --enable-libutvideo --enable-libopus --disable-w32thre ads --enable-frei0r --enable-filter=frei0r --enable-libvo-aacenc --enable-bzlib --enable-libxavs --extra-cflags=-dptw32_static_lib --enable-libopencore-amrnb -- enable-libopencore-amrwb --enable-libvo-amrwbenc --enable-libschroedinger --enab le-libbluray --enable-libvpx --enable-libilbc --enable-static --disable-shared - -enable-nonfree --enable-libfdk-aac --enable-runtime-cpudetect libavutil 52. 40.100 / 52. 40.100 libavcodec 55. 19.100 / 55. 19.100 libavformat 55. 12.102 / 55. 12.102 libavdevice 55. 3.100 / 55. 3.100 libavfilter 3. 81.103 / 3. 81.103 libswscale 2. 4.100 / 2. 4.100 libswresample 0. 17.103 / 0. 17.103 libpostproc 52. 3.100 / 52. 3.100 input #0, avi, from 'cure.avi': metadata: date : 2013-10-12t21:16:56.00708-07:00 duration: 00:00:30.07, start: 0.000000, bitrate: 88517 kb/s stream #0:0: video: lagarith (lags / 0x5347414c), rgb24, 854x480, 23.98 tbr, 23.98 tbn, 23.98 tbc stream #0:1: audio: pcm_s32le ([1][0][0][0] / 0x0001), 96000 hz, stereo, s32 , 6144 kb/s [libx264 @ 000000000209f620] using cpu capabilities: mmx2 sse2fast ssse3 sse4.2 [libx264 @ 000000000209f620] profile constrained baseline, level 4.0 [libx264 @ 000000000209f620] 264 - core 133 r2339 585324f - h.264/mpeg-4 avc cod ec - copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=0 r ef=16 deblock=1:0:0 analyse=0x1:0x131 me=umh subme=10 psy=1 psy_rd=1.00:0.00 mix ed_ref=1 me_range=24 chroma_me=1 trellis=2 8x8dct=0 cqm=0 deadzone=21,11 fast_ps kip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=1 sliced_threads=0 nr=0 d ecimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 k eyint=250 keyint_min=23 scenecut=40 intra_refresh=0 rc_lookahead=60 rc=crf mbtre e=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 [libfdk_aac @ 00000000020d8f80] note, the vbr setting is unsupported and only wo rks with some parameter combinations output #0, mp4, to 'cure-baseline.mp4': metadata: date : 2013-10-12t21:16:56.00708-07:00 encoder : lavf55.12.102 stream #0:0: video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 854x48 0, q=-1--1, 24k tbn, 23.98 tbc stream #0:1: audio: aac (libfdk_aac) ([64][0][0][0] / 0x0040), 48000 hz, ste reo, s16 stream mapping: stream #0:0 -> #0:0 (lagarith -> libx264) stream #0:1 -> #0:1 (pcm_s32le -> libfdk_aac) video:4373kb audio:442kb subtitle:0 global headers:0kb muxing overhead 0.333461% [libx264 @ 000000000209f620] frame i:16 avg qp:22.72 size: 46151 [libx264 @ 000000000209f620] frame p:705 avg qp:27.08 size: 5303 [libx264 @ 000000000209f620] mb i i16..4: 42.7% 0.0% 57.3% [libx264 @ 000000000209f620] mb p i16..4: 1.9% 0.0% 1.6% p16..4: 32.1% 9.7 % 4.8% 0.6% 0.2% skip:48.9% [libx264 @ 000000000209f620] coded y,uvdc,uvac intra: 47.7% 59.1% 19.9% inter: 1 2.9% 9.2% 0.9% [libx264 @ 000000000209f620] i16 v,h,dc,p: 31% 21% 7% 41% [libx264 @ 000000000209f620] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 11% 13% 6% 11% 15% 13% 14% 10% 9% [libx264 @ 000000000209f620] i8c dc,h,v,p: 48% 21% 18% 13% [libx264 @ 000000000209f620] ref p l0: 74.5% 10.1% 6.1% 2.0% 1.6% 1.4% 1.2% 0.5% 0.4% 0.4% 0.4% 0.4% 0.3% 0.3% 0.3% 0.2% [libx264 @ 000000000209f620] kb/s:1191.01
回答: さて、しばらくの間、これの壁に頭をぶつけた後、答えはh.264レベルだったようです。 ffmpegのデフォルトはレベル4.0のようですが、iosでは supported ではないようです。レベルを3.1に設定すると、ffmpegからdpbサイズに関するエラーが発生しました。そこで、-refs 11フラグを追加すると、ビデオが再生されます。レベルが3.1に設定されていて、そのレベルに指定されたdpbサイズを超えない限り、メインプロファイルを機能させることもできました。