mp4 관련 문제가 있습니다. 나는 비디오 프로세싱에 관련된 것들이별로 좋지 않다. 라이브 스트림에서 HTTP 라이브 스트리밍 (HLS)을 통해 기록 된 이미지 파일에 문제가 있습니다. HLS 청크는 모아서 파일 시스템에 .mp4 파일로 저장됩니다. 이 파일은 Apple QuickTime에서 재생할 수 없습니다. VLC에서 재생할 수 있습니다. 그러나 QuickTime으로 재생할 수 있어야합니다.Quicktime이 기록 된 mp4 비디오 파일을 재생할 수 없습니다.
그러나 해결책을 찾았습니다. ffmpeg 명령 -reset_timestamps를 사용하면 QuickTime으로 비디오 파일을 재생할 수 있습니다. 또한 어떤 매개 변수가 변경되는지 확인할 수 있습니다. 그것은 시작 값입니다. 명령을 사용하기 전에
:
ffmpeg -i recorded_file.mp4
ffmpeg version 1.2.4 Copyright (c) 2000-2013 the FFmpeg developers
built on Jan 9 2014 09:06:57 with Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/1.2.4 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid
libavutil 52. 18.100/52. 18.100
libavcodec 54. 92.100/54. 92.100
libavformat 54. 63.104/54. 63.104
libavdevice 54. 3.103/54. 3.103
libavfilter 3. 42.103/3. 42.103
libswscale 2. 2.100/2. 2.100
libswresample 0. 17.102/0. 17.102
libpostproc 52. 2.100/52. 2.100
[h264 @ 0x7fcb7b015a00] non-existing SPS 2 referenced in buffering period
[h264 @ 0x7fcb7b015a00] non-existing PPS referenced
[h264 @ 0x7fcb7b015a00] non-existing SPS 2 referenced in buffering period
[h264 @ 0x7fcb7b015a00] non-existing PPS 0 referenced
[h264 @ 0x7fcb7b015a00] decode_slice_header error
[h264 @ 0x7fcb7b015a00] no frame!
[mpegts @ 0x7fcb7b004a00] max_analyze_duration 5000000 reached at 5013333 microseconds
[mpegts @ 0x7fcb7b004a00] Could not find codec parameters for stream 2 (Unknown: none ([21][0][0][0]/0x0015)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[NULL @ 0x7fcb7b016a00] start time is not set in estimate_timings_from_pts
Input #0, mpegts, from 'recorded_file.mp4':
Duration: 00:25:00.01, start: 68428.580933, bitrate: 1499 kb/s
Program 1
Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0]/0x001B), yuv420p, 1024x576 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x101]: Audio: aac ([15][0][0][0]/0x000F), 48000 Hz, stereo, fltp, 124 kb/s
Stream #0:2[0x102]: Unknown: none ([21][0][0][0]/0x0015)
명령의 사용 : 명령의 사용 후
ffmpeg -i recorded_file.mp4 output.mp4 -reset_timestamps 0
파일 :
ffmpeg -i output.mp4
ffmpeg version 1.2.4 Copyright (c) 2000-2013 the FFmpeg developers
built on Jan 9 2014 09:06:57 with Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/1.2.4 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid
libavutil 52. 18.100/52. 18.100
libavcodec 54. 92.100/54. 92.100
libavformat 54. 63.104/54. 63.104
libavdevice 54. 3.103/54. 3.103
libavfilter 3. 42.103/3. 42.103
libswscale 2. 2.100/2. 2.100
libswresample 0. 17.102/0. 17.102
libpostproc 52. 2.100/52. 2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf54.63.104
Duration: 00:25:00.04, start: 0.021333, bitrate: 1358 kb/s
Stream #0:0(und): Video: h264 (High) (avc1/0x31637661), yuv420p, 1024x576 [SAR 1:1 DAR 16:9], 1224 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (mp4a/0x6134706D), 48000 Hz, stereo, fltp, 127 kb/s
Metadata:
handler_name : SoundHandler
텍스트 출력 변화의 많은 시작 값이 거의 0으로 설정되어 있기 때문에 duration, start 및 bitrate가있는 행은 흥미 롭습니다.
Duration: 00:25:00.04, start: 0.021333, bitrate: 1358 kb/s
그래서이 솔루션을 사용하면 충분합니다. 문제는 파일을 다운로드하는 솔루션에서 ffmpeg를 사용할 수 없다는 것입니다 (Android 용). 그래서 나는 자바에서 이것을 할 방법을 찾으려고 노력한다. 그러나 비디오 프로세싱에 많은 경험이 없기 때문에이 ffmpeg 명령이하는 일을 이해할 수 없으므로 Java 솔루션을 찾을 방향을 모릅니다.
Java에서 동일한 작업을 수행 할 수있는 라이브러리가 있습니까 (예 : 파일 타임 스탬프 조정과 같은) Java에서 직접 할 수있는 라이브러리가 있습니까?
도움 주셔서 감사합니다.
EDIT : 일부 콘솔 대신 전체 콘솔 출력이 표시됩니다.
귀하는 FFmpeg 인코딩 명령의 전체 콘솔 출력을 포함해야한다. – LordNeckbeard