我正在尝试使用以下ffmpeg命令转换一些原始视频相机文件。转换后,电脑播放文件没有任何问题。手机还用vlc播放它。但电视提供不受支持的格式。电视播放所有文件甚至h265,但只有这个文件,它给出了一个错误。任何帮助表示赞赏:
ffmpeg命令:
ffmpeg -i 1.mov -map_metadata -1 -c:v libx264 -c:a aac -ac 2 -b:a 128k -strict -2 -crf 23 -preset veryfast -threads 0 converted/1.mp4
这是原始文件的ffmpeg信息:
built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
configuration: --prefix=/root/ffmpeg/target --extra-cflags='-I/root/ffmpeg/target/inclu de -static' --extra-ldflags='-L/root/ffmpeg/target/lib -lm -static' --extra-version=Xtrea m-Codes --enable-nonfree --enable-openssl --disable-debug --disable-shared --enable-libx2 65 --enable-static --extra-cflags=--static --disable-ffplay --disable-ffserver --disable- doc --enable-gpl --enable-pthreads --enable-postproc --enable-libass --enable-gray --enab le-runtime-cpudetect --enable-gnutls --enable-libmp3lame --enable-libopus --enable-libthe ora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-bzlib --enable-zlib --e nable-version3 --enable-libvpx --enable-libxavs --disable-devices --enable-librtmp --extr a-libs='-lrtmp -lnettle -lhogweed -lgmp -lssl -lcrypto -lz -lc -ldl'
libavutil 54. 20.100 / 54. 20.100
libavcodec 56. 28.100 / 56. 28.100
libavformat 56. 25.101 / 56. 25.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 12.100 / 5. 12.100
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2.mov':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2017-05-18 07:39:04
Duration: 00:10:38.28, start: 0.000000, bitrate: 239010 kb/s
Stream #0:0(und): Video: prores (apcn / 0x6E637061), yuv422p10le(bt709), 1920x1080, 2 36756 kb/s, SAR 1:1 DAR 16:9, 50 fps, 50 tbr, 5k tbn, 5k tbc (default)
Metadata:
creation_time : 2017-05-18 07:39:04
handler_name : Core Media Data Handler
encoder : Apple ProRes 422
timecode : 00:00:00:00
Stream #0:1(und): Audio: pcm_s24le (lpcm / 0x6D63706C), 44100 Hz, stereo, s32 (24 bit ), 2116 kb/s (default)
Metadata:
creation_time : 2017-05-18 07:39:04
handler_name : Core Media Data Handler
Stream #0:2(und): Data: none (tmcd / 0x64636D74), 0 kb/s (default)
Metadata:
creation_time : 2017-05-18 07:39:04
handler_name : Core Media Data Handler
timecode : 00:00:00:00
At least one output file must be specified
转换后,我得到1.mp4,2.mp4,3.mp4 ...然后我使用concat命令将它们连接到一个文件。一切都没问题,但电视不支持该文件。
我发现它是用苹果prores编码的,所以我搜索了一些转换命令,但它们似乎也没有这样的帮助:
yuv422p, lossless audio
ffmpeg -i "input.mov" -pix_fmt "yuv422p" -vcodec libx264 -preset medium -qp 0 -acodec pcm_s16le "output_yuv422p.mkv"
yuv422p, aac audio
ffmpeg -i "input.mov" -pix_fmt "yuv422p" -vcodec libx264 -preset medium -qp 0 -acodec -acodec libvo_aacenc -b:a 256K "output_yuv422p.mp4"
答案 0 :(得分:2)
电视需要输出选项-vf format=yuv420p
(或别名-pix_fmt yuv420p
),因为绝大多数基于非FFmpeg的播放器无法解码不使用YUV 4的H.264视频: 2:0色度子采样。