it-swarm-ja.com

YouTubeにアップロードするための正確なmp4(H264)形式を作成します

Ffmpegを使用して、ビデオをmp3と画像から変換してYouTubeにアップロードしています。アップロード後、変換は失敗します。理由は不明です。問題はフォーマットにあると思います。ちなみに、5分の長さのファイルをアップロードしている場合、このファイルを30秒アップロードすると失敗します。

私はyoutubeからmp4ファイルをダウンロードしています。それから私はそれをアップロードしました、それは非常に速く行われます。したがって、素晴らしい解決策は、ビデオをグーグルが行うのと同じフォーマットに変換することです。

Mpegで次の出力が得られました。

ffmpeg version N-44264-g070b0e1 Copyright (c) 2000-2012 the FFmpeg developers
  built on Sep  7 2012 17:38:57 with gcc 4.7.1 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-pthreads --enable-runt
ime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass -
-enable-libcelt --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-l
ibfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopenj
peg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheo
ra --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-li
bvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --ena
ble-zlib
  libavutil      51. 72.100 / 51. 72.100
  libavcodec     54. 55.100 / 54. 55.100
  libavformat    54. 25.105 / 54. 25.105
  libavdevice    54.  2.100 / 54.  2.100
  libavfilter     3. 16.100 /  3. 16.100
  libswscale      2.  1.101 /  2.  1.101
  libswresample   0. 15.100 /  0. 15.100
  libpostproc    52.  0.100 / 52.  0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'youtubetrack0.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2012-10-02 22:58:57
  Duration: 00:06:46.66, start: 0.000000, bitrate: 176 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yu
v420p, 450x360, 78 kb/s, 6 fps, 6 tbr, 12 tbn, 12 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, s16, 95
kb/s
    Metadata:
      creation_time   : 2012-10-02 22:58:57
      handler_name    : IsoMedia File Produced by Google, 5-11-2011

グーグルが内部的に行うのと同じフォーマットを与えるようにffmpegパラメータを構築することは可能ですか?上記の情報で十分ですか?

必要なパラメータを作成できませんでした。

たとえば、tbnの設定方法や、「Stream#0:1(und):Audio:」で95 kb/sが何を意味するのかわかりません。

今私はただします:ffmpeg -i videoimage.jpg -i audio.mp3 video.mp4

私が持っている情報:

ffmpeg version N-44998-gdf82454 Copyright (c) 2000-2012 the FFmpeg developers
  built on Oct  2 2012 23:03:12 with gcc 4.7.1 (GCC)
  configuration: --disable-static --enable-shared --enable-gpl --enable-version3
 --disable-pthreads --enable-runtime-cpudetect --enable-avisynth --enable-bzlib
--enable-frei0r --enable-libass --enable-libcelt --enable-libopencore-amrnb --en
able-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame
--enable-libnut --enable-libopenjpeg --enable-librtmp --enable-libschroedinger -
-enable-libspeex --enable-libtheora --enable-libutvideo --enable-libvo-aacenc --
enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enab
le-libxavs --enable-libxvid --enable-zlib
  libavutil      51. 73.101 / 51. 73.101
  libavcodec     54. 63.100 / 54. 63.100
  libavformat    54. 29.105 / 54. 29.105
  libavdevice    54.  3.100 / 54.  3.100
  libavfilter     3. 19.102 /  3. 19.102
  libswscale      2.  1.101 /  2.  1.101
  libswresample   0. 16.100 /  0. 16.100
  libpostproc    52.  1.100 / 52.  1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf54.25.105
  Duration: 00:06:46.81, start: 0.000000, bitrate: 129 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuvj420p, 450x360,
 3392 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, s16, 127
 kb/s
    Metadata:
      handler_name    : SoundHandler

このビデオは、YouTubeでの変換に失敗します。

また、他のvcode parmamと出力ファイルの拡張子(mp4、wmv、avi)を使用しようとしましたが、失敗しました。

助けになります。

6
WHITECOLOR

YouTubeは、フィードしたほとんどすべてのものを使用できるはずです。提供する正確な形式に関係なく、常にビデオをトランスコードします。たとえば、アップロード時にMP4コンテナー内にある場合でも、ビデオに異なる解像度やFLVやWebMなどの他のコンテナーを提供する必要があるためです。

YouTube用のビデオを制作するための基本的なコマンドは次のとおりです。

ffmpeg -i input.avi -c:v libx264 -c:a aac -strict experimental -b:a 192k out.mp4

品質を変更するだけで、最終的には-rでフレームレートを、-s:vでビデオサイズを変更して、 高度なエンコード仕様 に一致させる必要があります。したがって、ビデオは柱またはレターボックス化(つまり、黒い境界線付き)。

その他のオプションとFFmpegの一般的な紹介については、ブログエントリをお読みください: FFmpeg:究極のビデオおよびオーディオ操作ツール


ただし、ループする1つの画像を含む動画を作成しているため、FFmpegに-loop 1で指定された時間、-tで画像をループするように指示する必要があります。 5分:

ffmpeg -loop 1 -f image2 -i image.jpg -c:v libx264 -t 00:05:00.000 out.mp4

オーディオストリームでは、2番目の-iパラメータを追加するだけです。

ffmpeg -loop 1 -f image2 -i image.jpg -i audio.mp3 -c:v libx264 -c:a aac -strict experimental -b:a 192k -t 00:05:00.000 out.mp4

FFmpegはストリームを自動的にマッピングし、画像をh.264ビデオに、オーディオをAACにマッピングします。

Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg -> libx264)
  Stream #1:0 -> #0:1 (mp3 -> aac)

この動画はYouTubeと互換性があり、フレームレートは25です。これを変更する場合は、-rを使用して、別のフレームレートを設定してください。フレームレート1で動画をYouTubeに正常にアップロードしました。これは、バックグラウンドでループしている画像とオーディオトラックが1つしかない場合は問題ではないためです。

7
slhck

これらのオプションは、次のように機能します。アップロード後、動画はYouTubeによってさらに処理/再エンコードされません。

ffmpeg -i SOURCE -c:v libx264 -flags:v "+cgop" -g 15 -bf 1 -coder ac -profile:v high -crf 25 -pix_fmt yuv420p -c:a aac -strict -2 -b:a 384k -r:a 48000 -movflags faststart OUTPUT.mp4

1ではなく-bf 2を試してみることをお勧めしますが、テストで再エンコードされました。より高いビデオ品質を得るには、-crf設定を低くします。通常、20〜28が推奨範囲であり、値が小さいほど高品質になります。 cbrまたはabrの2パスエンコーディングを試したことがありませんが、機能するはずです。オーディオを192kビットレートに下げることもできます。

[〜#〜]重要[〜#〜]-g Xをフレームレートの半分に設定する必要があることに注意してください。この例では、30 fpsのビデオをエンコードしているので、GOPを15に設定しました。ソースが24 fpsの場合は12に設定し、60fpsの場合は30に設定します。

これは古い質問ですが、「ffmpeg optionsforyoutube」を検索したときのGoogleでの最初の結果です。

編集:私はこれらのオプションを https://www.virag.si/2015/06/encoding-videos-for-youtube-with-ffmpeg/ から取得しました

9
Moshev