2016-11-20 28 views
0

ビデオのアスペクト比を変更しようとしていますが、これは間違った方法で表示されています(16:9であるが3:4を示します)。 私はたくさんのことを試しましたが、どれもうまくいきませんでした。 など。私はSARを設定しようとしましたが、DARを変更するので、アスペクト比は変わりません。ここでは例です:setdar=16/9を使用してFfmpegのアスペクト比の変更に失敗しました

ffmpeg -y -i rtmp://localhost/in/air-hdmi -vf "setsar=sar=16/9" -f flv rtmp://localhost/in/ngoraltestffmpeg 


    ffmpeg version N-80388-gfd1d84b Copyright (c) 2000-2016 the FFmpeg developers 
    built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3) 
    configuration: --prefix=/home/anastasia/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/anastasia/ffmpeg_build/include --extra-ldflags=-L/home/anastasia/ffmpeg_build/lib --bindir=/home/anastasia/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree 
    libavutil  55. 24.100/55. 24.100 
    libavcodec  57. 46.100/57. 46.100 
    libavformat 57. 38.101/57. 38.101 
    libavdevice 57. 0.101/57. 0.101 
    libavfilter  6. 46.101/6. 46.101 
    libswscale  4. 1.100/4. 1.100 
    libswresample 2. 1.100/2. 1.100 
    libpostproc 54. 0.100/54. 0.100 

[flv @ 0x38143c0] audio stream discovered after head already parsed 
[aac @ 0x3818f20] element type mismatch 1 != 0 
[flv @ 0x38143c0] video stream discovered after head already parsed 
Input #0, flv, from 'rtmp://localhost/in/air-hdmi': 
    Metadata: 
    Server   : NGINX RTMP (github.com/arut/nginx-rtmp-module) 
    displayWidth : 720 
    displayHeight : 576 
    fps    : 0 
    profile   : 
    level   : 
    Duration: 00:00:00.00, start: 181748.084000, bitrate: N/A 
    Stream #0:0: Audio: aac (HE-AAC), 44100 Hz, stereo, fltp 
    Stream #0:1: Video: h264 (High), yuv420p, 720x576, 25 fps, 25 tbr, 1k tbn, 50 tbc 
[flv @ 0x39bf5a0] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead. 
    Last message repeated 1 times 
Output #0, flv, to 'rtmp://localhost/in/ngoraltest': 
    Metadata: 
    Server   : NGINX RTMP (github.com/arut/nginx-rtmp-module) 
    displayWidth : 720 
    displayHeight : 576 
    fps    : 0 
    profile   : 
    level   : 
    encoder   : Lavf57.38.101 
    Stream #0:0: Video: flv1 (flv) ([2][0][0][0]/0x0002), yuv420p, 720x576 [SAR 16:9 DAR 20:9], q=2-31, 200 kb/s, 25 fps, 1k tbn, 25 tbc 
    Metadata: 
     encoder   : Lavc57.46.100 flv 
    Side data: 
     cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1 
    Stream #0:1: Audio: mp3 (libmp3lame) ([2][0][0][0]/0x0002), 44100 Hz, stereo, fltp 
    Metadata: 
     encoder   : Lavc57.46.100 libmp3lame 
Stream mapping: 
    Stream #0:1 -> #0:0 (h264 (native) -> flv1 (flv)) 
    Stream #0:0 -> #0:1 (aac (native) -> mp3 (libmp3lame)) 
Press [q] to stop, [?] for help 
[aac @ 0x3a37000] element type mismatch 1 != 0 
    Last message repeated 7 times 
[flv @ 0x39bf5a0] Failed to update header with correct duration.ate= 942.7kbits/s speed=2.37x  
[flv @ 0x39bf5a0] Failed to update header with correct filesize. 
frame= 112 fps= 48 q=31.0 Lsize=  633kB time=00:00:05.18 bitrate= 999.9kbits/s speed=2.23x  
video:546kB audio:82kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.846813% 
Exiting normally, received signal 2. 

は成功しません。結果は同じであるので、それは、PARを変更します。

Input #0, flv, from 'rtmp://localhost/in/air-hdmi': 
    Metadata: 
    Server   : NGINX RTMP (github.com/arut/nginx-rtmp-module) 
    displayWidth : 720 
    displayHeight : 576 
    fps    : 0 
    profile   : 
    level   : 
    Duration: 00:00:00.00, start: 287464.746000, bitrate: N/A 
    Stream #0:0: Audio: aac (HE-AAC), 44100 Hz, stereo, fltp 
    Stream #0:1: Video: h264 (High), yuv420p, 720x576, 25 fps, 25 tbr, 1k tbn, 50 tbc 
[flv @ 0x3a5ea20] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead. 
    Last message repeated 1 times 
Output #0, flv, to 'rtmp://localhost/in/ngoraltest': 
    Metadata: 
    Server   : NGINX RTMP (github.com/arut/nginx-rtmp-module) 
    displayWidth : 720 
    displayHeight : 576 
    fps    : 0 
    profile   : 
    level   : 
    encoder   : Lavf57.38.101 
    Stream #0:0: Video: flv1 (flv) ([2][0][0][0]/0x0002), yuv420p, 720x576 [SAR 64:45 DAR 16:9], q=2-31, 200 kb/s, 25 fps, 1k tbn, 25 tbc 
    Metadata: 
     encoder   : Lavc57.46.100 flv 
    Side data: 
     cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1 
    Stream #0:1: Audio: mp3 (libmp3lame) ([2][0][0][0]/0x0002), 44100 Hz, stereo, fltp 
    Metadata: 
     encoder   : Lavc57.46.100 libmp3lame 
Stream mapping: 
    Stream #0:1 -> #0:0 (h264 (native) -> flv1 (flv)) 
    Stream #0:0 -> #0:1 (aac (native) -> mp3 (libmp3lame)) 
Press [q] to stop, [?] for help 

(ときsetdar使用setsarは、のparamsは、720x576 [SAR 16:9 DAR 20:9]ある場合 - 720x576 [SAR 64:45 DAR 16:9]

また、scale=720:-1-aspect 16:9を適用しようとしましたが、すべて同じままです。

BUT! Wnen私はffplay -vf setsar=16/9 rtmp://localhost/in/ngoraltestと書いて、私に必要なものを完全に示しています。 それを解決するために何が問題と鍬になる可能性がありますか?

P.S.私は、入力信号のSARとDARについての情報がないということを少しは混乱させていますが、私はそれに全く何もできません。 documentationから

+0

あなたはエンコーダ 'flv1'を使用しています。私はあなたがそれを望んでいるとは思わない。 – LordNeckbeard

+0

@LordNeckbeard Whatshoul私は使ってますか?そしてどうやって? :) – Ngoral

+0

H.264ビデオの出力オプションとして '-c:v libx264'を追加します。 – LordNeckbeard

答えて

0
ffmpeg -i infile -aspect 16:9 -c copy outputfile 

ビデオディスプレイのアスペクト比を設定します。 stream copyingの場合にを併用すると、 コンテナレベルに格納されているアスペクト比に影響しますが、エンコードされたフレームに格納されているアスペクト比には影響しません( )。

私が知っているところから。 DAR番号が高くなると、ビデオメディアにこの問題があります。私はメディアがとても緊密に巻き取られていると思うし、同じアスペクトの他のメディアにはつながっていないだろう。私がこれを見ることができる唯一の方法は、それを生のフォーマットに変換して再圧縮することです。ビデオクリップをつなぎ合わせたりスプライスしたりするときにこの問題が発生しました。異なるファイルのDARと一致しない番号はエラーを示します。私は手動でメディアを添付するためにWindowsムービーメーカーを使用することを余儀なくされた。あなたが

ffmpeg -y -i rtmp://localhost/in/air-hdmi -vf "setdar=16/9" -f flv rtmp://localhost/in/ngoraltestffmpeg 

setsarを使用する必要が

+0

私の質問を読んでみると、私はそれを試したことに気づくでしょう。また、 '-c:v copy'は '-aspect'と一緒に使用するとエラーをスローしますアスペクトは明らかにコーデックを変更します – Ngoral

+0

@ Ngoral' -aspect'はいくつかのコンテナ形式で '-c:v copy'と動作しますが、それがうまくいくかどうかを知るためにFLVとRTMPには十分に精通しており、調査もテストもしていませんでした。しかし、あなたは実際のエラーを提供しておらず、含めることが重要な 'ffmpeg'設定とバージョン情報を省略しました。あなたが古代の「ffmpeg」を使用していないかどうか、どうすればわかるのでしょうか? – LordNeckbeard

+0

@LordNeckbeardはい、申し訳ありませんが、すべてが私の心の中で混ざり、 'c:v copy'で動作します。とにかく、それは役に立たない。私はまた、バージョンとすべての依存関係を見ることができるように、ログを更新しました – Ngoral

0

は、サンプル、すなわち一個の画素のアスペクト比です。 setdarは動画です。もちろん、setdarが行うことは、表示比が得られるように、ビデオの寸法を考慮してSARを変更することである。 DAR = Width x SAR/height

+0

私は実際にエンコーダ/デコーダに座って、私のピクセルが他の形式でなければならないと思っていました。とにかく動作しません:( – Ngoral

+0

あなたがペーストしたコンソールの出力によると、出力のDARは16:9ですので、値は正しいでしょうビデオはすでにレターボックスになっていますか? ffmpeg -y -i rtmp:// ... -vf "scale = 1024:576、setsar = 1" -f flv rtmp:// ... ' – Mulvya

関連する問題