Thiếu khung tham chiếu, lỗi giải mã tiêu đề lát


0

Tôi chia video này ( http://www.auby.no/files/video_tests/h264_720p_mp_3.1_3mbps_aac_shrinkage.mp4 ) bằng cách sử dụng lệnh mp4box "MP4Box -split 1 co lại.mp4" mỗi lát. Tôi có câu hỏi sau:

Tôi có các kích cỡ khác nhau của video mặc dù tôi đã cắt nó đều trong 1 giây. Không chắc điều này xảy ra như thế nào?

Khi tôi cố gắng kết xuất thông tin về tệp lát video, tôi nhận được thông báo bên dưới có lỗi. Ai đó có thể vui lòng giúp tôi hiểu nó là gì không, và làm thế nào tôi có thể sửa đổi lệnh trên để loại bỏ nó? Lỗi này xảy ra cho mọi slide video được tạo. Lỗi này chỉ xuất hiện trên các video bị cắt.

Cảm ơn, / anil.

anilj@desk1:~/workspace/testprogs/shellscripts$ ffmpeg -i invideo/shrinking_01.mp4
ffmpeg version N-36083-g2501f93-xuggle-5.5 Copyright (c) 2000-2012 the FFmpeg developers
  built on Jun  3 2014 13:43:04 with gcc 4.6.4
  configuration: --prefix=/home/anilj/workspace/xugglehome --extra-version=xuggle-5.5 --extra-cflags=-I/home/anilj/workspace/xuggle-xuggler/build/native/x86_64-unknown-linux-gnu/captive/stage/home/anilj/workspace/xugglehome/include --extra-ldflags=-L/home/anilj/workspace/xuggle-xuggler/build/native/x86_64-unknown-linux-gnu/captive/stage/home/anilj/workspace/xugglehome/lib --disable-shared --enable-pic --enable-gpl --enable-nonfree --enable-libx264 --enable-version3 --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libspeex --enable-libvo-aacenc --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-openssl --enable-zlib --enable-libvpx
  libavutil      51. 46.100 / 51. 46.100
  libavcodec     54. 14.101 / 54. 14.101
  libavformat    54.  3.100 / 54.  3.100
  libavdevice    53.  4.100 / 53.  4.100
  libavfilter     2. 67.101 /  2. 67.101
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0. 10.100 /  0. 10.100
  libpostproc    52.  0.100 / 52.  0.100
[h264 @ 0x1ddeac0] Missing reference picture
[h264 @ 0x1ddeac0] decode_slice_header error
[h264 @ 0x1ddeac0] Missing reference picture
[h264 @ 0x1ddeac0] decode_slice_header error
[h264 @ 0x1ddeac0] Missing reference picture
[h264 @ 0x1ddeac0] decode_slice_header error
[h264 @ 0x1ddeac0] Missing reference picture
[h264 @ 0x1ddeac0] decode_slice_header error
[h264 @ 0x1ddeac0] concealing 3600 DC, 3600 AC, 3600 MV errors
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'invideo/shrinking_01.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 1
    compatible_brands: isom
    creation_time   : 2014-06-19 20:21:02
  Duration: 00:00:00.90, start: 0.000000, bitrate: 38 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 30 kb/s, 29.96 fps, 29.96 tbr, 29956 tbn, 59.92 tbc
    Metadata:
      creation_time   : 2011-05-05 18:09:35
      handler_name    : ?Apple Video Media Handler
At least one output file must be specified

Câu trả lời:


1

Tôi không quen với việc sử dụng MP4Box nhưng tôi có thể giải thích một chút về những gì đang diễn ra đằng sau hậu trường.

Để giải mã video, trước tiên bạn cần một điểm vào, một hình ảnh để tham khảo nếu bạn muốn. Hình ảnh tham chiếu này được xây dựng bởi tham chiếu nội bộ nên nó độc lập với các khung hình khác. Các khung khác sẽ tham chiếu khung này và các khung được xây dựng trước đó để được tạo lại tại thời điểm giải mã. Điều đáng chú ý là đôi khi những bức ảnh này có thể không chia sẻ cùng một vị trí theo thứ tự mã hóa như chúng làm theo thứ tự trình bày.

Được rồi, bạn đang nói với tôi rằng bạn muốn video dài 1 giây nhưng tôi nói trừ khi có các khung hình I ít nhất ở mỗi điểm đánh dấu thứ hai thì điều này là không thể. Vâng, điều đó là có thể nhưng giống như tôi nói rằng tôi có thể nấu ăn mà không cần quan tâm đến việc thức ăn của tôi có ăn được không. Bạn có thể đã cắt trong khoảng thời gian một giây nhưng video không thể giải mã được cho đến khi nó chạm vào khung tham chiếu.

Giải pháp: ffmpeg có một bộ phân đoạn có thể làm điều này cho bạn nhưng kết quả sẽ không hoàn toàn dài 1 giây (Điều này là không hoàn hảo vì nó không thể thực sự xử lý một số vấn đề về lệnh / pts mã hóa, một phần nhỏ các trường hợp). Điều gì xảy ra khi một khung theo thứ tự mã hóa xảy ra đằng sau khung I dừng (bắt đầu của phân đoạn tiếp theo) nhưng ở phía trước của nó theo thứ tự trình bày? Điều tương tự mà bạn đang thấy ở đầu video của bạn ngoại trừ ở cuối.

Bạn có thể giải mã thành một định dạng thô và sau đó cắt lát. Bạn có thể thực hiện nhiều trò tung hứng với phát hiện I-Frame và cắt đệm (vui nhộn).

Có rất nhiều cách để làm điều này và tùy thuộc vào giới hạn bộ nhớ / tính toán, bạn sẽ có thể chọn hương vị của mình.

Tôi hy vọng điều này giải thích các lỗi bạn đang thấy và cung cấp các giải pháp có thể cho bạn.


Vì tôi đang sử dụng MP4Box, tôi muốn sử dụng các tùy chọn dòng lệnh MP4Box. Tuy nhiên, tôi nên sử dụng lệnh ffmpeg nào để đạt được cùng phân khúc? Tôi ổn với phân đoạn không quá 1 giây. Bạn có nghĩ rằng tôi đang thiếu bất cứ điều gì trên MP4Box? Có ai biết về nó không?
AnilJ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.