uploaded media msgtype #30
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary: no inline video player in any of the three clients; message shown as downloadable file in all three.
curl -s "https://dev1.bromal.im/_matrix/client/v3/rooms/$ROOM_ID/messages?dir=b&limit=5"
-H "Authorization: Bearer $TOKEN"
Relevant event content:
{
"info": {
"size": 215955,
"mimetype": "video/mp4"
},
"body": "test-video.mp4",
"url": "mxc://dev1.bromal.im/iaxsa8t5Uo1km08TnIJIGP86rlvtssL0bdJc5XUAIEE",
"m.mentions": {},
"msgtype": "m.file"
}
visually checked test-video.mp4 message in Element, Nheko, Cinny.
Result: no inline video player in any of the three clients; message shown as downloadable file in all three.
In addition uploaded test-audio-60s.ogg via Element file picker (not via voice recorder).
Relevant event content:
{
"info": {
"size": 104735,
"mimetype": "application/ogg"
},
"body": "test-audio-60s.ogg",
"url": "mxc://dev1.bromal.im/1rWsztQndKRjwl2AkObAm4hMUWRfWGjfroFkBnRxJVE",
"m.mentions": {},
"msgtype": "m.file"
}
Relevant event content:
{
"info": {
"size": 30862,
"duration": 11067,
"mimetype": "audio/ogg"
},
"body": "Voice message",
"url": "mxc://dev1.bromal.im/q3FUkBbuqRxlpFfE7jGJBajnvJajn81OUli8hicoUhY",
"m.mentions": {},
"msgtype": "m.audio"
}
Result: not separately screenshotted; msgtype in raw data is m.file.
Also visually checked the recorded voice message in all three clients.
Result: plays inline with play button in Element and Cinny; no play button/control shown in Nheko (it's a client's problem, not a server).
In conclusion, uploaded media files (video, audio) always saved with msgtype "m.file" instead of correct type.
When uploading a file via standard file picker, the resulting m.room.message event always has msgtype: "m.file", even though info.mimetype correctly reflects the actual type (e.g. video/mp4, application/ogg for a .ogg audio file). This causes clients to render these as generic downloadable files instead of inline video/audio players.
Contrast: voice messages recorded via the client's built-in recorder DO get the correct msgtype: "m.audio", suggesting the issue is specific to the general upload path, not voice-message-specific handling.
Could you also provide the requests related to upload
mp4andogg?So I uploaded mp4 and ogg via client's UI, then:
curl -s "https://dev1.bromal.im/_matrix/client/v3/rooms/$ROOM_ID/messages?dir=b&limit=5"
-H "Authorization: Bearer $TOKEN" | python3 -m json.tool | grep -B 5 -A 15 "m.video"
[ble: exit 1]
pingwilap@archlinux cinny $
and then:
pingwilap@archlinux cinny $ curl -s "https://dev1.bromal.im/matrix/client/v3/rooms/$ROOM_ID/messages?dir=b&limit=5"
-H "Authorization: Bearer $TOKEN" | python3 -m json.tool
{
"start": "924yg4K0zR",
"state": [
{
"type": "m.room.create",
"unsigned": {
"age": 61549449
},
"content": {
"room_version": "10",
"creator": "@test_user_1:dev1.bromal.im",
"m.federate": true
},
"room_id": "!iLMEKcwGK0NNnmXBQvs5anttEij45RiQgSiQhmNL0jE:dev1.bromal.im",
"event_id": "$ekhuTywn803NcbliCPAryayZ2p3g/m0NnwQB2Fa7r10",
"state_key": "",
"origin_server_ts": 1789165362752,
"sender": "@test_user_1:dev1.bromal.im"
},
{
"type": "m.room.member",
"unsigned": {
"age": 61549347
},
"content": {
"membership": "join",
"is_direct": false
},
"room_id": "!iLMEKcwGK0NNnmXBQvs5anttEij45RiQgSiQhmNL0jE:dev1.bromal.im",
"event_id": "$XHXiUDw1SISJ9T40Ein1b0PRDD2yzMCxLn3xAiWmhxY",
"state_key": "@test_user_1:dev1.bromal.im",
"origin_server_ts": 1789165362854,
"sender": "@test_user_1:dev1.bromal.im"
},
{
"type": "m.room.power_levels",
"unsigned": {
"age": 61549284
},
"content": {
"events": {
"m.room.avatar": 50,
"m.room.canonical_alias": 50,
"m.room.encryption": 100,
"m.room.history_visibility": 100,
"m.room.name": 50,
"m.room.power_levels": 100,
"m.room.server_acl": 100,
"m.room.tombstone": 100,
"org.matrix.msc3401.call.member": 0
},
"users": {
"@test_user_1:dev1.bromal.im": 100
},
"redact": 50,
"invite": 0,
"ban": 50,
"kick": 50,
"events_default": 0,
"state_default": 50,
"users_default": 0
},
"room_id": "!iLMEKcwGK0NNnmXBQvs5anttEij45RiQgSiQhmNL0jE:dev1.bromal.im",
"event_id": "$RDIJiIx9lSI7KnufddmX8rmZxiNMWlBesoO3qklMOeM",
"state_key": "",
"origin_server_ts": 1789165362917,
"sender": "@test_user_1:dev1.bromal.im"
},
{
"type": "m.room.join_rules",
"unsigned": {
"age": 61549204
},
"content": {
"allow": [],
"join_rule": "invite"
},
"room_id": "!iLMEKcwGK0NNnmXBQvs5anttEij45RiQgSiQhmNL0jE:dev1.bromal.im",
"event_id": "$GX1b+XdV2igy+Zn0pG3zBZKNVx5N2hnvhfgWbz5VflI",
"state_key": "",
"origin_server_ts": 1789165362997,
"sender": "@test_user_1:dev1.bromal.im"
},
{
"type": "m.room.history_visibility",
"unsigned": {
"age": 61549180
},
"content": {
"history_visibility": "invited"
},
"room_id": "!iLMEKcwGK0NNnmXBQvs5anttEij45RiQgSiQhmNL0jE:dev1.bromal.im",
"event_id": "$WoEM5+c22O2MQ4TrhmIWDaJV8KbNxALbjY7CSm6vuE4",
"state_key": "",
"origin_server_ts": 1789165363021,
"sender": "@test_user_1:dev1.bromal.im"
},
{
"type": "m.room.guest_access",
"unsigned": {
"age": 61549156
},
"content": {
"guest_access": "can_join"
},
"room_id": "!iLMEKcwGK0NNnmXBQvs5anttEij45RiQgSiQhmNL0jE:dev1.bromal.im",
"event_id": "$1Eo/bNMdog3TAO9QZdOuZG+5wXpOqRkzWljUiFXpHdE",
"state_key": "",
"origin_server_ts": 1789165363045,
"sender": "@test_user_1:dev1.bromal.im"
},
{
"type": "m.room.name",
"unsigned": {
"age": 61549134
},
"content": {
"name": "QA_test-room"
},
"room_id": "!iLMEKcwGK0NNnmXBQvs5anttEij45RiQgSiQhmNL0jE:dev1.bromal.im",
"event_id": "$Ygx0qP7tfbjJFFi9ncrookjK3yZl3jeDulNtWoKvjx8",
"state_key": "",
"origin_server_ts": 1789165363067,
"sender": "@test_user_1:dev1.bromal.im"
},
{
"type": "m.room.member",
"unsigned": {
"age": 61503822
},
"content": {
"membership": "join",
"is_direct": true
},
"room_id": "!iLMEKcwGK0NNnmXBQvs5anttEij45RiQgSiQhmNL0jE:dev1.bromal.im",
"event_id": "$M3xv4MTD7ab7bDATu4w3mwWY1ajFmewPQ1Fw37Fk4vE",
"state_key": "@test_user_2:dev1.bromal.im",
"origin_server_ts": 1789165408379,
"sender": "@test_user_2:dev1.bromal.im"
},
{
"type": "m.room.member",
"unsigned": {
"age": 61463973
},
"content": {
"membership": "join",
"is_direct": true
},
"room_id": "!iLMEKcwGK0NNnmXBQvs5anttEij45RiQgSiQhmNL0jE:dev1.bromal.im",
"event_id": "$D01SLtL2rICRzoHOHgmL6vmTqDk+P5hUiBGyDcLSOs4",
"state_key": "@test_user_3:dev1.bromal.im",
"origin_server_ts": 1789165448228,
"sender": "@test_user_3:dev1.bromal.im"
}
],
"end": "Q7zrALKE9o",
"chunk": [
{
"type": "m.room.message",
"unsigned": {
"age": 44374,
"transaction_id": "m1789226867671.7"
},
"content": {
"info": {
"size": 215955,
"mimetype": "video/mp4"
},
"body": "test-video.mp4",
"url": "mxc://dev1.bromal.im/iaxsa8t5Uo1km08TnIJIGP86rlvtssL0bdJc5XUAIEE",
"m.mentions": {},
"msgtype": "m.file"
},
"room_id": "!iLMEKcwGK0NNnmXBQvs5anttEij45RiQgSiQhmNL0jE:dev1.bromal.im",
"event_id": "$S7WoGakZiC4QMsD/HNM4oPg4xUSwsjSq1NclWPWLqlY",
"origin_server_ts": 1789226867827,
"sender": "@test_user_1:dev1.bromal.im"
},
{
"type": "m.room.message",
"unsigned": {
"age": 395593,
"transaction_id": "m1789226516381.6"
},
"content": {
"info": {
"size": 30862,
"duration": 11067,
"mimetype": "audio/ogg"
},
"body": "Voice message",
"url": "mxc://dev1.bromal.im/q3FUkBbuqRxlpFfE7jGJBajnvJajn81OUli8hicoUhY",
"m.mentions": {},
"msgtype": "m.audio"
},
"room_id": "!iLMEKcwGK0NNnmXBQvs5anttEij45RiQgSiQhmNL0jE:dev1.bromal.im",
"event_id": "$oTGeUyAlxsTWw7q3RjkE9orMtSuPXxdhiM6aDmhrpNE",
"origin_server_ts": 1789226516608,
"sender": "@test_user_1:dev1.bromal.im"
},
{
"type": "m.room.message",
"unsigned": {
"age": 451388,
"transaction_id": "m1789226460680.5"
},
"content": {
"info": {
"size": 104735,
"mimetype": "application/ogg"
},
"body": "test-audio-60s.ogg",
"url": "mxc://dev1.bromal.im/1rWsztQndKRjwl2AkObAm4hMUWRfWGjfroFkBnRxJVE",
"m.mentions": {},
"msgtype": "m.file"
},
"room_id": "!iLMEKcwGK0NNnmXBQvs5anttEij45RiQgSiQhmNL0jE:dev1.bromal.im",
"event_id": "$NkQZuftT6hgOmlbo7mFK+CcRF3GxUImfd3ssInyqSKc",
"origin_server_ts": 1789226460813,
"sender": "@test_user_1:dev1.bromal.im"
},
{
"type": "m.room.message",
"unsigned": {
"age": 607768,
"transaction_id": "m1789226304277.4"
},
"content": {
"info": {
"size": 215955,
"mimetype": "video/mp4"
},
"body": "test-video.mp4",
"url": "mxc://dev1.bromal.im/rdJmySkkfTXrQC57XHMxFdJ59QigDF2axnKAN1cWbo8",
"m.mentions": {},
"msgtype": "m.file"
},
"room_id": "!iLMEKcwGK0NNnmXBQvs5anttEij45RiQgSiQhmNL0jE:dev1.bromal.im",
"event_id": "$wXzwkH6cUIkLmPqGPOPzfhg9YP3r9absFCPmAH+cjfI",
"origin_server_ts": 1789226304433,
"sender": "@test_user_1:dev1.bromal.im"
},
{
"type": "m.room.message",
"unsigned": {
"age": 706489,
"transaction_id": "m1789226205558.3"
},
"content": {
"info": {
"size": 476684,
"mimetype": "application/epub+zip"
},
"body": "Aleko_Konstantinov-Baj_Ganxo-_1763-b.epub",
"url": "mxc://dev1.bromal.im/UN3mxn2TyaeZ7pEvYUfYE3gyXKjwrQ83378xYdt7vSs",
"m.mentions": {},
"msgtype": "m.file"
},
"room_id": "!iLMEKcwGK0NNnmXBQvs5anttEij45RiQgSiQhmNL0jE:dev1.bromal.im",
"event_id": "$Uq0zyutkbByfu3a2eLH8AiLbikl6CLLpjCxJ7Uf2nBg",
"origin_server_ts": 1789226205712,
"sender": "@test_user_1:dev1.bromal.im"
}
]
}
Simultaneously in Element and other clients wasn't video/audio preview.
I meant those requests which were used by clients to upload media.
Room ID: !iLMEKcwGK0NNnmXBQvs5anttEij45RiQgSiQhmNL0jE:dev1.bromal.im
Event ID: $wXzwkH6cUIkLmPqGPOPzfhg9YP3r9absFCPmAH+cjfI
{
"type": "m.room.message",
"unsigned": {
"age": 100864407,
"transaction_id": "m1789226304277.4"
},
"content": {
"info": {
"size": 215955,
"mimetype": "video/mp4"
},
"body": "test-video.mp4",
"url": "mxc://dev1.bromal.im/rdJmySkkfTXrQC57XHMxFdJ59QigDF2axnKAN1cWbo8",
"m.mentions": {},
"msgtype": "m.file"
},
"event_id": "$wXzwkH6cUIkLmPqGPOPzfhg9YP3r9absFCPmAH+cjfI",
"origin_server_ts": 1789226304433,
"sender": "@test_user_1:dev1.bromal.im",
"room_id": "!iLMEKcwGK0NNnmXBQvs5anttEij45RiQgSiQhmNL0jE:dev1.bromal.im"
}
and
Event ID: $NkQZuftT6hgOmlbo7mFK+CcRF3GxUImfd3ssInyqSKc
{
"type": "m.room.message",
"unsigned": {
"age": 100707977,
"transaction_id": "m1789226460680.5"
},
"content": {
"info": {
"size": 104735,
"mimetype": "application/ogg"
},
"body": "test-audio-60s.ogg",
"url": "mxc://dev1.bromal.im/1rWsztQndKRjwl2AkObAm4hMUWRfWGjfroFkBnRxJVE",
"m.mentions": {},
"msgtype": "m.file"
},
"event_id": "$NkQZuftT6hgOmlbo7mFK+CcRF3GxUImfd3ssInyqSKc",
"origin_server_ts": 1789226460813,
"sender": "@test_user_1:dev1.bromal.im",
"room_id": "!iLMEKcwGK0NNnmXBQvs5anttEij45RiQgSiQhmNL0jE:dev1.bromal.im"
}
Browser console:
Can't add room to skiplist: !MyCL3nLYtg3PNefTtom4meqFuVzGSxJ3p7bnaHzyrog:dev1.bromal.im is already in the skiplist! rageshake.ts:69:17
Can't add room to skiplist: !iLMEKcwGK0NNnmXBQvs5anttEij45RiQgSiQhmNL0jE:dev1.bromal.im is already in the skiplist! rageshake.ts:69:17
Failed to process outgoing request 0: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/upload) rageshake.ts:69:17
Failed to process outgoing request 1: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/query) rageshake.ts:69:17
Failed to process outgoing request 0: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/upload) rageshake.ts:69:17
Failed to process outgoing request 1: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/query) rageshake.ts:69:17
Failed to process outgoing request 0: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/upload) rageshake.ts:69:17
Failed to process outgoing request 1: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/query) rageshake.ts:69:17
Failed to process outgoing request 0: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/upload) rageshake.ts:69:17
Failed to process outgoing request 1: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/query) rageshake.ts:69:17
Failed to process outgoing request 0: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/upload) rageshake.ts:69:17
Failed to process outgoing request 1: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/query) rageshake.ts:69:17
Failed to process outgoing request 0: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/upload) rageshake.ts:69:17
Failed to process outgoing request 1: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/query) rageshake.ts:69:17
Failed to process outgoing request 0: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/upload) rageshake.ts:69:17
Failed to process outgoing request 1: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/query) rageshake.ts:69:17
Failed to process outgoing request 0: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/upload) rageshake.ts:69:17
Failed to process outgoing request 1: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/query) rageshake.ts:69:17
Failed to process outgoing request 0: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/upload) rageshake.ts:69:17
Failed to process outgoing request 1: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/query) rageshake.ts:69:17
Failed to process outgoing request 0: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/upload) rageshake.ts:69:17
Failed to process outgoing request 1: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/query) rageshake.ts:69:17
Failed to process outgoing request 0: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/upload) rageshake.ts:69:17
Failed to process outgoing request 1: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/query) rageshake.ts:69:17
Failed to process outgoing request 0: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/upload) rageshake.ts:69:17
Failed to process outgoing request 1: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/query) rageshake.ts:69:17
Failed to process outgoing request 0: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/upload) rageshake.ts:69:17
Failed to process outgoing request 1: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/query) rageshake.ts:69:17
Failed to process outgoing request 0: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/upload) rageshake.ts:69:17
Failed to process outgoing request 1: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/query) rageshake.ts:69:17
XHR POST
https://dev1.bromal.im/_matrix/client/v3/keys/upload
[HTTP/1.1 404 Not Found 119ms]
Failed to process outgoing request 0: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/upload) rageshake.ts:69:17
XHR POST
https://dev1.bromal.im/_matrix/client/v3/keys/query
[HTTP/1.1 404 Not Found 39ms]
Failed to process outgoing request 1: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/query) rageshake.ts:69:17
XHR POST
https://dev1.bromal.im/_matrix/client/v3/keys/upload
[HTTP/1.1 404 Not Found 116ms]
Failed to process outgoing request 0: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/upload) rageshake.ts:69:17
XHR POST
https://dev1.bromal.im/_matrix/client/v3/keys/query
[HTTP/1.1 404 Not Found 33ms]
Failed to process outgoing request 1: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/query) rageshake.ts:69:17
XHR POST
https://dev1.bromal.im/_matrix/client/v3/keys/upload
[HTTP/1.1 404 Not Found 121ms]
Failed to process outgoing request 0: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/upload) rageshake.ts:69:17
XHR POST
https://dev1.bromal.im/_matrix/client/v3/keys/query
[HTTP/1.1 404 Not Found 39ms]
Failed to process outgoing request 1: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/query) rageshake.ts:69:17
XHR POST
https://dev1.bromal.im/_matrix/client/v3/keys/upload
[HTTP/1.1 404 Not Found 118ms]
Failed to process outgoing request 0: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/upload) rageshake.ts:69:17
XHR POST
https://dev1.bromal.im/_matrix/client/v3/keys/query
[HTTP/1.1 404 Not Found 41ms]
Failed to process outgoing request 1: M_UNRECOGNIZED: MatrixError: [404] not implemented (https://dev1.bromal.im/_matrix/client/v3/keys/query)
But it isn't related to this issue, maybe I need to repeat this test for reproduce this issue again.
I guess, the request should be https://spec.matrix.org/v1.19/client-server-api/#put_matrixclientv3roomsroomidsendeventtypetxnid and then an event should be retrieved from the server, you can use something like this: https://spec.matrix.org/v1.19/client-server-api/#get_matrixclientv3roomsroomideventeventid.
AFAIK, if the msgtype provided by the client is "m.file", then it is just a generic attachment even if it is an image, audio or video. For media to be played within the client, it should have a corresponding msgtype.
If a client sends a request (PUT /v3/rooms/.../send/.../...) with "m.audio" msgtype, but you retrieve that event and get "m.file", then it is a bug. But it should not occur by design. :)
If a client for some reason sends a request with "m.file", then the event must be "m.file".