2011-12-23 30 views
33

ffmpeg -i infile.avi out.mp4 kết quả đầu ra không phân mảnh MP4.Làm thế nào để đầu ra mp4 phân mảnh với ffmpeg?

Làm cách nào để tải xuống mp4 phân mảnh?

Cập nhật Tệp mp4 phân mảnh được chia thành nhiều phần sau lưng hoặc các đoạn phim MPEG-4. Mỗi đoạn có nguyên tử moof riêng của nó - vì vậy có một số nguyên tử moof xen kẽ trong tập tin thay vì một moov duy nhất ở cuối như trong trường hợp của một mp4 không phân mảnh. Điều này giúp dễ dàng phát trực tuyến qua các mạng chậm nơi lưu vào bộ đệm

Có một số công cụ như mp4box chuyển đổi một mp4 bình thường thành một phân đoạn bị phân mảnh. Rất tiếc, chúng tôi không thể sử dụng một cái gì đó như thế này

ffmpeg <options to output mp4> | mp4box 

vì ffmpeg không tạo ra sản lượng có thể tìm kiếm trong khi sản xuất các vật chứa mp4.

+2

Bạn có thể muốn thêm một số thông tin về một" phân mảnh mp4 "là để làm cho vấn đề này dễ tiếp cận hơn với những người có thể biết rõ ffmpeg, nhưng không phân mảnh mp4. – blahdiblah

+0

Điểm tốt! Tôi đã chỉnh sửa câu hỏi của tôi –

+0

@SaptarshiBiswas để bạn giải quyết vấn đề này mà không cần sử dụng mp3box? bạn có thể chia sẻ giải pháp không? cảm ơn – abrahab

Trả lời

40

này nên làm như lừa:

ffmpeg -re -i infile.ext -g 52 \ 
-strict experimental -acodec aac -ab 64k -vcodec libx264 -vb 448k \ 
-f mp4 -movflags frag_keyframe+empty_moov \ 
output.mp4 
  • frag_keyframe nguyên nhân sản lượng phân mảnh,
  • empty_moov sẽ gây ra là 100% phân mảnh; mà không có đoạn đầu tiên này sẽ được chuyển thành phim ngắn (sử dụng moov), sau đó là phần còn lại của phương tiện theo các đoạn,
  • -re rất hữu ích khi phát trực tuyến (đầu ra trên bit phương tiện), không sử dụng nó nếu bạn đang tạo một tập tin,
  • -g 52 lực (ít nhất) mỗi khung 52 là một keyframe

để tính toán một khoảng keyframe khỏe mạnh xin vui lòng xem đoạn về fragment sizes trong các tài liệu của máy chủ streaming của tôi. - Bạn cũng có thể xem xét việc sử dụng WebM, một giải pháp thay thế miễn phí cho H.264 (và có hỗ trợ tốt hơn trên một số nền tảng hơn là phân mảnh mp4).

Lưu ý quan trọng: muxer FFMpeg sẽ thiết lập các Thời gian trong cả tkhdmdhd nguyên tử để 0xFFFFFFFF cho mỗi track. Điều này gây ra vấn đề ở một số người chơi (ví dụ: Quicktime sẽ không phát các tệp như vậy). Bạn sẽ tìm thấy một công cụ và thay đổi nó thành số không (0x00000000).

+3

trông giống như tùy chọn -movflags + faststart đã được thêm gần đây vào FFmpeg ... – rogerdpack

+1

Nếu bạn gặp sự cố với lệnh trên, bạn có thể cần phải cài đặt lại ffmpeg. Để cài đặt qua brew với tất cả các tùy chọn: ** brew install ffmpeg --with-fdk-aac --with-ffplay --with-freetype --with-frei0r --with-libass --with-libvo-aacenc - -with-libvorbis --with-libvpx --with-opencore-amr --with-openjpeg --with-opus --with-rtmpdump --with-schroedinger --với-speex - với-theora - với - công cụ ** –

+1

Có thể truyền đầu ra sang HTML5 thay vì lưu nó vào một tệp không? Với giao thức http? – astralmaster

2

ffmpeg -h (nhưng không phải là trang người đàn ông) có sau đây:

mp4 muxer AVOptions: 
-movflags   <flags> E.... MOV muxer flags 
    rtphint     E.... Add RTP hint tracks 
-moov_size   <int> E.... maximum moov size so it can be placed at the 
           beginning 
-frag_size   <int> E.... maximum fragment size 
-frag_duration  <int> E.... maximum fragment duration 
-rtpflags   <flags> E.... RTP muxer flags 
    latm     E.... Use MP4A-LATM packetization instead of 
           MPEG4-GENERIC for AAC 
-skip_iods   <int> E.... Skip writing iods atom. 
-iods_audio_profile <int> E.... iods audio profile atom. 
-iods_video_profile <int> E.... iods video profile atom. 

tôi sẽ không biết làm thế nào để xác định một mp4 phân mảnh nếu tôi nhìn thấy một, nhưng có vẻ như ffmpeg có một số (kém tài liệu) hỗ trợ cho họ.

+2

lại: "Tôi sẽ không biết cách xác định một mp4 bị phân mảnh nếu tôi thấy một" :) chúng trông rất giống nhau. :) Có một nguyên tử 'mvex' gần phía trước 'moov' để cho bạn biết nó sẽ bị phân mảnh. Sẽ có khá ít thông tin dữ liệu thực tế trong các nguyên tử phụ theo dõi khác nhau. Sẽ có các cặp 'moof' 'mdat' cấp cao nhất là nơi chứa dữ liệu thực tế. Có thể có một nguyên tử 'mfra' ở cuối. –

+0

'mp4box -info file' sẽ chỉ ra nếu MP4 bị phân mảnh. – Mulvya

4

CẬP NHẬT: Xem xét tệp MP4 bị phân mảnh thành tệp ISMV (Phát trực tuyến mượt). Phiên bản mới FFMPEG 0.10, kể từ ngày 27 tháng 1 năm 2012 có thể chuyển đổi sang định dạng này.

ismv muxer AVOptions: 
-movflags   <flags> E.... MOV muxer flags 
    rtphint     E.... Add RTP hint tracks 
    empty_moov    E.... Make the initial moov atom empty (not supported by QuickTime) 
    frag_keyframe   E.... Fragment at video keyframes 
    separate_moof   E.... Write separate moof/mdat atoms for each track 
    frag_custom    E.... Flush fragments on caller requests 
    isml     E.... Create a live smooth streaming feed (for pushing to a publishing point) 
-moov_size   <int> E.... maximum moov size so it can be placed at the begin 
-rtpflags   <flags> E.... RTP muxer flags 
    latm     E.... Use MP4A-LATM packetization instead of MPEG4-GENERIC for AAC 
    rfc2190     E.... Use RFC 2190 packetization instead of RFC 4629 for H.263 
    skip_rtcp    E.... Don't send RTCP sender reports 
-skip_iods   <int> E.... Skip writing iods atom. 
-iods_audio_profile <int> E.... iods audio profile atom. 
-iods_video_profile <int> E.... iods video profile atom. 
-frag_duration  <int> E.... Maximum fragment duration 
-min_frag_duration <int> E.... Minimum fragment duration 
-frag_size   <int> E.... Maximum fragment size 
-ism_lookahead  <int> E.... Number of lookahead entries for ISM files 
0

Có lẽ điều này sẽ hữu ích. Trong ví dụ dưới đây, ffmpeg nhận COPY của một nguồn cấp dữ liệu RTMP và sau đó sử dụng ffmpeg, nó tạo ra một đầu ra HTTP trong fMP4 có thể được chấp nhận bởi các điểm vào IIS hoặc Azure.

Lưu ý: bộ mã hóa ban đầu được đặt thành khoảng thời gian khung hình chính là 2 giây.

"ffmpeg -i RTMP: // ip của máy chủ: 1935/tên/streamkey -vcodec bản sao bản sao -acodec -nal-HRD cbr -movflags ISML + frag_keyframe + separate_moof -f ismv http://url của điểm vào/entry-point .isml/Streams (feed1) "

Các vấn đề liên quan